Archivi tag: DataScience

Come Diventare DataScientist da Autodidatta

-Dottore mio figlio vuole diventare DataScientist secondo lei è grave?

-Gravissimo signora, mi dispiace per lei, ma io l’avevo avvertita. Purtroppo la medicina non ha risposte a queste malattie. Si prepari, si prepari, suo figlio andrà all’IKEA o per risparmiare tempo comprerà delle lavagne su Amazon(https://amzn.to/2NpOImd), ne abbiamo già visti di casi del genere.

Le ha già parlato entusiasta di MonteCarlo (https://it.wikipedia.org/wiki/Metodo_Monte_Carlo)?

-Si.

-Allora è più grave di quanto pensassi.

 

Ieri o l’altro ieri mi aveva scritto Davide Sicignani , sempre un fratello del gruppo InnLab, di Terracina (quindi dietro casa), ma che ho conosciuto solo a Londra.

Da sinistra Ugo, Davide, Gabriele ed Io in un tipico pranzo della Domenica Londinese

Davide mi chiedeva un consiglio per un suo amico Biologo che vuole avvicinarsi a Python e DataScience.

In particolare mi contattava perché ho cominciato da Zero e da Autodidatta.

Non essendo la prima persona che mi ha contattato per questo motivo, anche Stefano (sempre InnLab) qualche mese fa, ho deciso di scriverci due righe.

E’ opportuno distinguere tre domini di conoscenza che rientrano a mio avviso sotto il grande cappello del DataScientist, ma lo farò in un altro post:

  • Data Engineering (Informatica)
  • Data Modeling (Probabilità e Statistica- Ricerca Operativa)
  • Business Intelligence (Capacità Analitica)

Quello che racconterò è un po’ la sintesi del mio percorso e delle risorse utilizzate.

Indubbiamente la strada migliore per essere DataScientist è la stessa che caratterizza il settore medico:

La perfetta sinergia tra Pratica, Studio e degli ottimi Mentor.

Cosa ho capito fino ad oggi:

  1. Non esistono corsi che in un mese o in una settimana ti permettono di diventare DataScientist, se dicono il contrario è una balla
  2. Non è possibile diventare DataScientist solo attraverso la pratica
  3. Non è possibile diventare DataScientist solo attraverso i libri
  4. E’ estremamente bello
  5. E’ estremamente faticoso
  6. Esistono molte persone del mestiere disposte ad aiutarti (gratis)
  7. Per iniziare a capirci qualcosa serve almeno un anno di allenamento
  8. L’anno di allenamento necessario non ti esime dal provare a trovare lavoro anche se non hai abbastanza esperienza, quello che sai fare ed hai imparato fallo valutare anche agli altri. Rischi di rimandare il tuo ingresso nel settore spaventato di non essere all’altezza

 

Ahi quanto a dir qual era è cosa dura

esta selva selvaggia e aspra e forte

che nel pensier rinova la paura!

–Dante Alighieri, Inferno, I Canto

 

Quindi quali sono le risorse da scegliere per intraprendere questo percorso?

Ecco le mie:

DataCamp.com

Ad Agosto 2017 ho iniziato a studiare su DataCamp.com ho seguito tutto il percorso per diventare DataScientist.

Consigliatissimo.

Il costo per un anno di accesso a tutti i corsi è di 130/180$ adesso non ricordo precisamente.

Ottimo investimento, corsi semplici, ma efficaci.

Questi corsi servono per una prima infarinatura sul Machine Learning e Python.

L’app mobile permette di allenarsi anche sul bus o in metro su concetti basilari.

Contro, non è assolutamente sufficiente per lavorare, sono necessarie altre risorse a supporto.

 

Python for Data Analysis: Data Wrangling with Pandas, Numpy, and IPython

Il link al libro *-> https://amzn.to/2NrqLuJ

E’ il libro scritto da Wes McKinney, l’autore della libreria Pandas, una delle più usate in Python per la manipolazione e pulizia dei dati.

Il libro me lo aveva regalato Marchetti quando ho cominciato questo percorso ed è stato una grande risorsa, perché gradualmente spiega tutto quello che è necessario sapere per la pulizia e manipolazione dei dati.

Ho impiegato un anno per studiarlo tutto e altri sei mesi servirebbero per ripassarlo ed allenarsi su tutti i concetti che vengono illustrati.

Il libro va letto, studiato, con il pc ed il notebook jupyter aperti.

In questo modo è possibile riprodurre in tempi brevi tutti i consigli ed esempi riportati nel testo.

Se non si mettono in pratica gli esempi riportati, anche modificandoli a piacere, il libro perde gran parte della sua efficacia.

 

Pratica

Questa parte è F-O-N-D-A-M-E-N-T-A-L-E

Ho avuto modo di fare pratica attraverso progetti di consulenza, progetti pro-bono, data set pubblici, durante gli step tecnici di alcuni colloqui di lavoro e lavorando su freelancer.com.

Il tempo viene dedicato in buona parte alla pulizia e manipolazione dei dati, è frustrante, ma è sempre così. 

Solo col tempo ed esperienza si diventa veloce in questa parte del lavoro.

Esistono tantissimi data set pubblici anche italiani dove acquisire dati e iniziare ad effettuare un po’ di Data  Visualization, inferenze e creare qualche modello di Machine Learning

Eccone alcuni:

 

C’è anche Kaggle

Kaggle è una piattaforma e comunity specifica per DataScientist.

Li sono presenti tantissimi dataset sui quali esercitarsi.

Avere un buon punteggio su Kaggle, partecipare alle competizioni è un’ottima strada per farsi notare da eventuali recruiter e poter dimostrare le proprie competenze

PostgreSQL

La conoscenza di SQL è la seconda skill più richiesta dopo Python negli annunci di lavoro.

Questo sulla base  delle job description analizzate (+100) per il lavoro di DataScientist a Londra

Un’ottima piattaforma gratuita per allenarsi è https://pgexercises.com/

Postgresql era uno dei DBMS più frequenti negli annunci, ne esistono anche altri, non sentitevi vincolati nella scelta.

 

Mentor

Un mentor tecnico è una risorsa chiave per vari motivi:

  • Ti sprona a fare di più
  • Può aiutarti in momenti di difficoltà a sciogliere subito eventuali nodi (ovviamente dopo che hai sbattuto la testa per almeno due giorni sul problema)
  • Rende umano un percorso fatto di numeri e righe di codice

Podcast

Esistono podcast di vario tipo sia su SoundCloud che su Spotify, ascoltarli permette nei tempi morti di essere aggiornati su tecnologie e trend del mercato.

Ingrediente Segreto

L’ingrediente segreto è uno ed uno solo: la passione

Se non vi emozionate davanti ad un bel grafico, se non vi incuriosisce la possibilità di pianificare e predire l’andamento delle vendite o valutare l’andamento delle azioni, se non impazzite all’idea di una nottata passata ad analizzare i processi esponenziali che potrebbero rappresentare la rottura di alcuni componenti elettronici, non iniziate questo percorso.

 

E’ la passione che muove tutto, le altre risorse sono secondarie.

Iniziate.

Fate.

Fate.

Fate.

Grazie per aver letto l’articolo!

Un abbraccio

Andrea

 

ps se ci sono errori di battitura o di grammatica scrivimi pure 🙂

*Con i link di affiliazione di Amazon potete aiutarmi a coprire le spese per il blog vi ringrazio in anticipo

 

Annunci

3 commenti

Archiviato in Hobby, Ingegneria

Non solo Teoria

Ho ricevuto dei feedback negativi sull’ultimo post molto interessanti, sia da Filippo che da Francesco, organizzerò una cena a Formia per trattarli meglio. Una bella grigliata, una bottiglia di vino, un confronto in amicizia (in realtà io vorrei anche provare questo vermouth artigianale –>  https://amzn.to/2v0oles  che mi ha suggerito Luigi della Caffetteria, si dovrebbe trovare intorno ai 18/20€) ed imparare a fare un Negroni decente.

Ma non è di questo che voglio parlarvi!

Voglio parlarvi della dicotomia tra pratica e teoria.

Che sia il medico, che sia qualsiasi altra professione, studiare soltanto non è sufficiente, c’è bisogno di pratica.

Ma la pratica a sua volta ha bisogno di studio per affinare la tecnica.

Voi non vi fareste mai operare da un medico che ha studiato tutto sui libri ma non ha esperienza pratica, ne fareste fare esperienza sulla vostra pelle ad un medico che non ha studiato nulla.

Io tendo ad essere molto teorico, a studiare un problema in tutte le sue sfaccettature prima di arrivare al risultato finale e questa tendenza può essere estremamente negativa se non la si compensa con un po’ di pratica.

Questo è verissimo soprattutto con Python.

 

“La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perchè. Noi abbiamo messo insieme la teoria e la pratica: non c’è niente che funzioni e nessuno sa il perchè”-Albert Einstein *

Durante le prossime settimane riuscirò a dedicare 20h a Python e l’errore che potrei commettere è quello di stare solo sui libri o sui corsi online e focalizzarmi sulla teoria.

Per evitare questo ho creato delle etichette per le attività che registro attraverso la Tecnica del Pomodoro.

Queste etichette servono per un piccolo programma (uno script) che riceve come input le informazioni su come ho distribuito il tempo nell’ultima settimana e mi restituisce la % di completamento, sulla base di una proporzione che deve esserci tra Pratica, Teoria e Comunicazione del Lavoro Svolto, in sintesi:

  • Lavoro 10 h
  • Studio 6 h
  • Marketing 4h

Lo script è molto grezzo e perfettibile, potevo sfruttare dei cicli for e renderlo più leggibile (vi ringrazio in anticipo per ogni feedback positivo su cosa va potenziato e negativo su cosa va migliorato).

 

La prima parte del programma mi aggiorna sul come sta procedendo l’esperienza con Python, uno script di cui vi avevo già parlato, la seconda parte è quella che valuta il “mix”.

 

Un abbraccio e grazie per aver letto il mio articolo.

 

Andrea

 

ps se noti qualche errore scrivimi pure, se ti è piaciuto ricondividilo! 🙂

 

In [2]:
import pandas as pd 
import matplotlib.pyplot as plt
import numpy as np
from datetime import datetime, timedelta


va='Python'
tvoi='Length'

csvname="logs2.csv"
#read the csv	
columns_name=['Year', 'Month', 'Day', 'Time', 'Length', 'Start', 'End', 'Activity']
dfraw=pd.read_csv(csvname,names=columns_name,sep=',',skiprows=1,skipfooter=0, index_col=False)


dfraw[tvoi] = dfraw[tvoi].astype('str')
mask = (dfraw[tvoi].str.len() == 6) 
dfraw = dfraw.loc[mask]

dfraw[tvoi]=dfraw[tvoi].str.strip()

dfraw[tvoi]=pd.to_datetime(dfraw[tvoi], format='%M:%S')
dfraw['Date'] = dfraw.apply(lambda row: datetime(row['Year'], row['Month'], row['Day']), axis=1)


pythondf=dfraw[(dfraw['Activity'].str.contains("Python",na=False)) | (dfraw['Activity'].str.contains("python",na=False))] 
numacti=pythondf.groupby('Date').count()
numacti=numacti['Activity']
numacti=numacti.divide(2)
cumulata=numacti.cumsum()


day=pd.concat([numacti, cumulata], axis=1)
day.columns=['pgiorno','cumulata']
maxh=cumulata.max()
plt.plot(day.index,day['cumulata'])
plt.xticks(rotation=90)
plt.title('Totale ore di studio e lavoro con Python (%d ore)' %(maxh))
plt.tight_layout()
plt.show()
In [26]:
#Questa parte è per l'analisi della settimana 
python_work=10
python_study=6
sutdy='study'
marketing='marketing'

python_marketing=4
total=python_work+python_study+python_marketing

#Selezioniamo solo gli ultimi giorni oggetto di analisi 
days=7
cutoff_date= pythondf['Date'].iloc[-1]- pd.Timedelta(days=days)
print(cutoff_date)
last_7days= pythondf[pythondf['Date'] > cutoff_date] 
#Qualsiasi attivita' che non abbia come label "marketing" o "study" "datacamp" "ripasso" "libro" é considerata "work"
#Per del codice migliore cercherò nei prossimi log di avere solo tre label study work marketing come metag
study_mask=(last_7days['Activity'].str.contains("ripasso",na=False) | last_7days['Activity'].str.contains("datacamp",na=False)) | (last_7days['Activity'].str.contains("Libro",na=False))
pythondf_study=last_7days[study_mask]

pythondf_marketing=last_7days[last_7days['Activity'].str.contains("marketing",na=False)]


pythondf_work=last_7days[~study_mask]

#Ricordando che i pomodori sono slot da 30 min 
#dobbiamo contare per categoria il numero di pomodori e dividere per 2
#Qui sotto si poteva realizzare un ciclo for, scusate la pigrizia, suggerimenti ben accetti 

print("Weekly % of Python Working",round(pythondf_work['Activity'].count()/2/python_work*100,2))
print("Weekly % of Python Study", round(pythondf_study['Activity'].count()/2/python_study*100,2))
print("Weekly % of Python Marketng",round(pythondf_marketing['Activity'].count()/2/python_marketing*100,2))
2018-07-18 00:00:00
Weekly % of Python Working 45.0
Weekly % of Python Study 58.33
Weekly % of Python Marketng 0.0

 

*fonte da verificare

Lascia un commento

Archiviato in riflessioni, Salute e Benessere, Scritti sparsi, Tecnologia

Back In Black

Giugno è stato un mese veramente intenso!

Partiamo dalle cose importanti, sono riuscito a rivedere con un aperitivo di InnovAction Lab Roma Nicola Greco!

L’ultima volta che l’avevo visto era due tre anni fa a Roma, insieme ad Enrico Bruschini, prima che entrasse al MIT a Boston, avevamo organizzato una cena molto ruspante a base di pomodori e mozzarella di bufala nel periodo di Natale. Ora  sta lavorando per File Coin l’azienda che ha realizzato la più grande ICO  Italiana (257 Milioni di dollari)

Non so spiegare bene cosa facciano questo video invece ci riesce egregiamente:

Inoltre sia il Negroni Sbagliato che il Cosmopolitan erano fatti a regola d’arte, particolare che non mi sento di trascurare.

Cambiando discorso, vi rircordate il rapporto che dovevo realizzare per la società di dolci?

La stesura del rapporto è quasi finita, tanto sudore e matrici, ma forse è più corretto chiamarlo “modello predittivo” che rapporto.

Se ho fatto bene i conti, forse, sono riuscito ad implementare una regressione linerare polinomiale che garantisce una accuratezza migliore del 50% sulle stime (per i tecnici del mestiere, valutazione effettuata su un campione di dati che ho splittato nel classico 70/30, con il tempo forse nei prossimi giorni implementerò una crossvalidation del modello)

Nonostante questo la presentazione del lavoro è ancora mediocre, senza considerare l’inglese con la quale l’ho scritta, anche questo da migliorare.

 

Tutto procede come imprevisto

Sarei dovuto ripartire a breve, fino ad un mese fa questo era il programma,  ma uno dei lavori che sto curando qui in Italia durerà fino a fine Settembre.

Ovviamente Tramontana (fondatore di una delle pagine italiane facebook più importanti di psicologia “Talking“)aveva previsto la mia permanenza estiva qui in Italia già in tempi non sospetti vincendo una scommessa.

Puoi leggere, leggere, leggere, che è la cosa più bella che si possa fare in gioventù: e piano piano ti sentirai arricchire dentro, sentirai formarsi dentro di te quell’esperienza speciale che è la cultura – Pier Paolo Pasolini

Vi ricordate la mia lista di libri?

Sto ancora leggendo Conrad Heart Of Darkness in lingua inglese e  nonostante siano solo un 100 di pagine ho scoperto di avere un dizionario veramente limitato

(Questo il link se volete prenderlo su Amazon)
Sabato mattina mi sono segnato tutte le ultime parole che avevo letto e delle quali non conoscevo il significato ed ho creato queste scorecard su Quizlet che potete usare.

https://quizlet.com/_50wbpb

Visto che io mi scordo tutto, in questo modo posso rileggere a distanza di tempo i termini che non conoscevo e rinforzare il processo di memorizzazione.

Il libro è particolare, le descrizioni dei luoghi molto belle, ma sicuramente non è un libro “allegro”.

Era dalla scorsa estate che non leggevo un romanzo, in generale mi sento più propenso alla lettura di saggi e libri tecnici, ma ogni tanto bisogna variare.

 

Se vuoi andare veloce vai da solo, se vuoi andare lontano vai in compagnia – Antico Proverbio Africano

 

Giovedì ho partecipato ad una conferenza sulle Reti Neurali da Enlabs.

Le reti neurali sono dei modelli matematici che simulano il funzionamento di una rete neurale biologica in modo estremamente semplificato.

Rientra nel fantastico mondo del Machine Learning e dell’Intelligenza Artificiale.

I campi di applicazione  sono veramente disparati, il dipartimento di Ingegneria Civile di Roma Tre negli anni ’90 (credo) , li utilizzava per determinare le cause degli incidenti stradali e trattati nel corso di Teoria delle Infrastrutture Viarie 

Durante la conferenza è stato presentato questo video meraviglioso:

Personalmente gli attuali sviluppi tecnologici delle reti neurali che più mi affascinano sono:

  • Individuazione dei tumori alla pelle attraverso analisi delle immagini con una precisione superiore a quella media dei dermatologi  https://cs.stanford.edu/people/esteva/nature/
  • Predizione della domanda/valore di determinate azioni in borsa
  • Riconoscimento di immagini ed elementi all’interno di queste sempre più sofisticati, esempio per analisi preliminari di immagini satellitari per valutare il cambiamento di fiumi, corsi d’acqua ecc… potrebbero essere utilizzati ad esempio nella lotta all’abusivismo edilizio

Personalmente con python e l’analisi dati mi sto affacciando ai modelli ARIMA sulle serie storiche ed anche in questo ambito, dei modelli predittivi, i risultati che stanno dando le reti neurali sono molto positivi in alcuni casi migliori dei modelli ARIMA come mostrato in questo studio https://www.hindawi.com/journals/jam/2014/614342/.

 

 

L’ultima grande scoperta di Giugno è http://philosophizethis.org l’autore del sito ha su spotify un podcast di Filosofia (in Inglese) spettacolare!

Capisco che per alcuni la cosa è strana (già mi è stato evidenziato da più persone), ma avere la possibilità di riscoprire Hegel, Sant’Agostino o la Scuola di Fracoforte mentre si è in treno o bloccati nel traffico è meraviglioso.

 

Un abbraccio e grazie per aver letto il mio articolo.

 

Andrea

 

ps se noti qualche errore scrivimi pure, se ti è piaciuto ricondividilo! 🙂

 

Lascia un commento

Archiviato in riflessioni, Scritti sparsi, Viaggi

DataCamp.com considerazioni sul “DataScientist Career Track with Python”

Ieri, 30 Dicembre, ho finito il “Career Track da Data Scientist con Python” su DataCamp.com.

E’ stata una bella avventura durata per la precisione 226 ore(monitorate con la tecnica del Pomodoro).

DataCamp

Ero troppo pigro da rimuovere la parola “Working” 

Il piano di studi  è composto da 20 corsi, ai quali ho aggiunto due su SQL e PostgreSQL .

 

Il percorso è costato 180$, in realtà con 180$ ho accesso ad un anno di corsi, quindi potrei anche seguirne altri (e dopo Febbraio farò così) e scadrà ad Agosto 2019.

E’ stato veramente interessante ed ho scoperto ua disciplina che mi appassiona tantissimo fondendo più materie.

Quello che ho apprezzato del percorso è stata la struttura per moduli, inoltre ogni 5 minuti di teoria seguivano almeno tre esercizi pratici e non era prevista una conoscenza iniziale di Python, per quanto delle basi di programmazione le avessi acquisite studiando un po’ di C con Arduino.

Lo consiglio?

Si, se la materia interessa, ma successivamente è necessario dedicarsi a dei propri progetti per implementare e consolidare quegli insegnamenti che altrimenti possono essere dimenticati in fretta.

Una nota negativa, sul sito c’è scritto che tutto il piano di studi duri 67h, non ho la più pallida idea di come abbiano fatto i conti, sarebbero 3,35 h per corso, ma, basato sulla mia esperienza personale, non credo sia una stima veritiera.

Gli sforzi ed il tempo necessario per maturare i concetti spiegati sono molto maggiori.

Adesso è tempo di mettere in pratica tutto quello che ho studiato!

Gennaio, oltre alla preparazione per l’esame di stato e la ricerca di un posto di lavoro, lo dedicherò alla realizzazione su Git Hub di un mio personale portfolio.

In realtà ho anche promesso a Diego che avrei scritto un paio di articoli sul suo blog in cui spiegavo cosa fossero in Statistica i test di verifica delle ipotesi e gli errori legati a questi test.

Anche perché come potete vedere dai due grafici, quasi tutto il tempo dedicato in questi mesi su Python è stato dedicato allo studio su DataCamp(226h su 290h totali) piuttosto che a qualche progetto da DataScientist.

 

Python31 12

Un abbraccio e buon anno

Lascia un commento

Archiviato in Ingegneria, Tecnologia