Archivi tag: datacamp

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

PCA Parte Prima

Tra i vari progetti di Luglio e Agosto ci potrebbe essere un progetto di ottimizzazione dei costi per una società UK (non è la stessa dei cupcakes) che potrebbe richiedere l’applicazione della PCA.
In questo articolo (e forse anche un successivo) proverò a spiegare un concetto fondamentale e particolarmente utile.

Devo premettere che la trattazione è volutamente semplificata ed esistono persone decisamente più competenti e brave di me che illustrano (in inglese) l’argomento, Youtube è pieno.
Allora perchè un articolo supernoioso?

Semplice! Per me spiegare le cose è uno dei migliori metodi per apprendere.

Questo lo insegna il sommo Feyman, mica Ciccio Paduccio, maggiori info sul metodo di apprendimento Feyman qui -> https://www.focus.it/comportamento/scuola-e-universita/le-tre-regole-di-feynman-per-preparare-un-esame-e-imparare-tutto

 

Tornando a noi.

L’analisi in componenti principali, in inglese PCA, è una trasformazione lineare.

Fare una PCA è come prendere la lista dei 50 “capisardi” della vita e ridurli a 3:
“La femmina, il danaro e la mortazza”.

La PCA permette di ridurre le variabili identificando quelle realmente importanti(termine statisticamente insignificante) e non correlate tra loro (termine statisticamente fondamentale).

In termini tecnici è una trasformata, un operatore matematico, in questo caso lineare, che trasforma una funzione in un’altra funzione.

E’ molto utilizzata nell’ambito del Machine Learning nella risoluzione dei probelmi di regressione e classificazione perchè permette di ridurre il numero di variabili in gioco (feature reduction) considerando quelle fondamentali.

Nell’esempio che vi propongo, si è applicata la PCA non tanto per ridurre il numero di variabili (che è rimasto il medesimo 2), ma per decorrelarle

E’ una versione leggermente modificata di un esercizio di DataCamp.Com di questo capitolo (https://www.datacamp.com/courses/unsupervised-learning-in-python).

Nella prima fase dell’esempio si studia la correlazione tra due variabili e nella seconda parte si applica una PCA

Sono stati presi 209 semi e si è misurata la loro lunghezza e larghezza e le informazioni sono state salvate in un file *csv

Inzialmente ho realizzato uno scatter plot per vedere quale fosse la correlazione tra le due variabili ed ho calcolato il coefficiente di pearson, successivamente ho applicato una PCA per decorrelare le due variabili e identificare le componenti principali che definiscono due nuove variabili, dove quella con la maggiore varianza raprpesenta il primo asse, mentre la seconda quella con varianza minore.

Nel caso noi avessimo avuto m variabili e dalla PCA avessimo ottenuto n variabili, con m>n, allora il secondo asse sarebbe stato descritto dalla seconda variabile con varianza maggiore, il terzo asse con la terza variabile con varianza maggiore fino alla n-essima variabile.

Nei prossimi articoli cercherò di illustrare meglio il concetto con esempi pratici, fino a quando non riuscirò a elaborare un articolo dal titolo “PCA Guida definitiva” o “PCA spiegata a mia nonna”.

In [10]:
#Analisi PCA 
# Importiamo le librerie necessarie matplot scipy.stats e pandas 
import matplotlib.pyplot as plt
from scipy.stats import pearsonr
import pandas as pd
#Carichiamo il file 
grains=pd.read_csv("seeds-width-vs-length.csv")
#Vediam sempre di che si tratta e come si caratterizzano i nostri dati
print(grains.info())
print(grains.describe())
#Estraiamo dal dataframe solo i valori per poter successivamente lavorare con specifici array
grains=grains.values
#La 0-sima colonna del dataframe rappresenta la larghezza
width = grains[:,0]

#La 1-a colonna del dataframe rappresenta la lunghezza
length = grains[:,1]

# Grafichiamo tutto con uno scatter plot larghezza-lunghezza
plt.scatter(width, length)
plt.axis('equal')
plt.show()

#Calcoliamo il coefficiente di pearson detto anche coefficente di correlazione lineare ed il p-value dei dati
correlation, pvalue = pearsonr(width,length)

# Visualizziamo in due valori appena calcolati
print("Correlazione tra le due  variabili larghezza e lunghezza", round(correlation, 4))
print("P-value dei dati",pvalue)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 209 entries, 0 to 208
Data columns (total 2 columns):
3.312    209 non-null float64
5.763    209 non-null float64
dtypes: float64(2)
memory usage: 3.3 KB
None
            3.312       5.763
count  209.000000  209.000000
mean     3.258349    5.627890
std      0.378603    0.444029
min      2.630000    4.899000
25%      2.941000    5.262000
50%      3.232000    5.520000
75%      3.562000    5.980000
max      4.033000    6.675000
Correlazione tra le due  variabili larghezza e lunghezza 0.8604
P-value dei dati 1.5696623081483666e-62

Addesso possiamo valutare quelle che sono le componenti principali della nostra distribuzione e decorrelarre le due variabili attraverso una PCA

In [4]:
#Carichiamo il modulo della libreria che ci interessa per l'operazione
#PCA Analysis 
# Import PCA
from sklearn.decomposition import PCA

#Creiamo l'istanza pca modello
modello = PCA()

# Applichiamo il metodo fit_transform method al nostro dataset sul grano
#Otterremo un nuovo array con due nuove variabili decorrelate
pca_features = modello.fit_transform(grains)

# Assegniamo la 0-sima colonna di pca_features alla variabile xs
xs = pca_features[:,0]

# Assegniamo la 1-a colonna di pca_features alla variabile ys
ys = pca_features[:,1]

# Grafichiamo tutto con uno scatter plot le due nuove variabili
plt.scatter(xs, ys)
plt.axis('equal')
plt.show()

# Calcoliamo coefficiente di pearson per le due nuove variabili xs ys
correlation, pvalue = pearsonr(xs, ys)

# Visualizziamo i due risultati approssimati
print("Correlazione tra le due nuove variabili xs ed ys", round(correlation,4))
print("P-value dei dati",pvalue)
Correlazione tra le due nuove variabili xs ed ys -0.0
"P-value dei dati 1.0

1 Commento

Archiviato in Ingegneria

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