Archivi categoria: riflessioni

A/B Test spiegato al Nerd che vuole rimorchiare su Tinder

Ti sei appena comprato l’ultimo profumo, l’addome non è proprio scolpito, la barba è perfetta, ma l’unico match che sei riuscito ad ottenere su Tinder è con il profilo finto della Mucca Carolina iscritta dal tuo amico Marco anche noto come “Il Capraro”.

Inizi a riflettere che forse c’è un problema.

Questa strategia del rimorchio non sta funzionando, evidentemente.

Decidi di affidarti al tuo amico, il mago della conquista, il re del rimorchio dai tempi di MySpace e Netlog, per gli amici “Er Trivella”.

Dopo una veloce chiacchierata ed un paio di birre, Er Trivella, decide di aiutarti, ma solo se sei disposto a pagargli da bere in caso di successo.

Subito si accorge che la tua selezione di foto profilo a petto nudo con la mutanda “Uomo” comprata in pacchi da 10 al mercato non può andar bene, così come deve essere aggiornata l’altra tutta sfocata e con il volto devastato dagli shoot di Ibiza 2k12.

“Terapia d’urto” queste le parole di “Er Trivella” in un momento di grande sconforto e compassione nei tuoi confronti.

Shopping selvaggio tra Piazza Italia e OVS, foto con la reflex in modalità automatico fatte dall’amica fotografa e frasi random di Fabio Volo.

Subito dopo l’aggiornamento del profilo iniziano i match e stenti a crederci.

Tu però non vuoi offrire da bere, pensi sia tutto frutto del caso, che “Er Trivella “ sia stato fortunato.

Con le vecchie foto profilo -> 100 tentativi ->1 match

Con le nuove foto profilo ->100 tentativi -> 10 Match

Guardi Er Trivella e con un po’ di sfacciataggine dici

“Guarda secondo me è solo un caso, con le nuove foto di profilo è stata solo fortuna, l’ipotesi che sia cambiato qualcosa è falsa”

Er Trivella ti guarda negli occhi, non gli pare vero, lui vuole che gli paghi da bere e con calma risponde:

“Ok allora facciamo così se è vero che è stata solo fortuna non cambia nulla tra la situazione prima e la situazione successiva.

Noi abbiamo 200 tentativi in totale giusto?”

Tu:”Si”

Er Trivella:”Facciamo delle simulazioni.

Prendiamo 200 foglietti scriviamo sopra questi il nome della tipa e se hai avuto successo o meno.

1 se hai avuto successo e 0 se non è andata bene”.

Alla strana richiesta realizzi questi 200 foglietti.

Er Trivella:”Ora per un bel po’ di volte mischiamo i 200 foglietti, associamo i primi 100 alla vecchia condizione (Test A) e gli ultimi 100 a quella nuova (Test B).

Una volta fatto calcoliamo la differenza tra i casi di successo tra il nuovo caso B’ ed il nuovo caso A’, chiameremo questo valore “Delta Rimorchio”.

Ti ricordi nel caso originale questa differenza era di 0.09?” (10/100-1/100)

“Una volta calcolato il “Delta Rimorchio” la seconda volta, rimischiamo i foglietti e ripetiamo l’operazione un certo numero di volte (un numero di volte n, con n molto grande).

Ora se quello che hai detto ha senso le volte in cui rimischiando i foglietti il delta rimorchio è uguale o maggiore al delta rimorchio iniziale dovrà essere abbastanza frequente, essendo questa differenza un caso”

Tu:”Certo, ha senso”

Er Trivella: “Potremmo valutare la cosa dividendo il numero di volte in cui “Delta rimorchio è maggiore o al più uguale” per il numero di volte che abbiamo rimischiato i foglietti” (questo valore sarà il nostro p-value dei dati).

Er Trivella:”Più questo rapporto sarà grande e più le tue ipotesi saranno corrette, ma più questo valore è piccolo e più probabile che la tua ipotesi sia falsa.”

Tu:”Quanto piccolo?”

Er Trivella:”Se voglio rifiutare la tua ipotesi con il 95% di confidenza questo dovrà essere più piccolo di 0.05.”

 

Tu ed Er Trivella scoprite che:

  • Il numero di volte che mischiando i foglietti hai ottenuto risultati migliori è stata solo 1 su 100 il p-value è 0.01
  • l’ipotesi che fosse tutta fortuna è falsa
  • tocca pagare da bere

Gli A/B test sono estremamente frequenti soprattutto nel Digital Marketing, ma non sempre la loro valutazione è di facile interesse, questo articolo con lo script allegato è solo una simpatica introduzioni, molte ipotesi sono state semplificate, per una rigorosa trattazione consiglio sempre il Ross.

Inoltre bisogna sempre valutare il costo della sperimentazione, il miglioramento che si ottiene dal test A o dal test B non solo deve essere statisticamente significativo, ma anche economicamente significativo.

Per Economicamente Significativo intendo che il costo della sperimentazione è giustificato dal guadagno che il miglioramento genera, un punto estremamente difficile e non sempre rispettato.

Grazie per aver letto l’articolo!

Se ti piace ri-condividilo 🙂

Un abbraccione

Andrea

 

ps Devo formattare meglio il codice è sempre un po’ un trauma per me districarmi tra il notebook jupyter e il codice html, inizierò anche a pubblicare questi script sul mio profilo GitHub 🙂

 

In [4]:
import numpy as np

import pandas as pd

 

In [5]:
#Rappresentiamo attraverso due array di 1 e 0 i nostri due scenari di analisi

old_pic=np.array([True] * 1 + [False] * 99)

new_pic=np.array([True] * 10 + [False] * 90)

 

 

In [6]:
#Definiamo la statistica oggetto di analisi come 

#la differenza i successi con le nuove foto e i successi con le vecchie

#in rapporto al numero di tentativi effettuati

def frac_abs_success(a,b):

"""Compute fraction of Democrat yay votes."""

afrac = np.sum(a) /len(a)

bfrac= np.sum(b) /len(b)

ababs=abs(afrac-bfrac)

return ababs

def permutation_sample(data1, data2,func):

"""Generiamo una permutazione definiti due data set."""

 

# Concateniamo i datasets: data

data = np.concatenate((data1,data2))

 

# Definiamo l'array delle permutazioni permuted_data

permuted_data = np.random.permutation(data)

 

#  Dividiamo in due insiemi A' B' l'array delle permtazioni: perm_sample_1, perm_sample_2

perm_sample_1 = permuted_data[:len(data1)]

perm_sample_2 = permuted_data[len(data1):]

delta_rim=func(perm_sample_1,perm_sample_2)

 

return delta_rim

 

In [7]:
#Realizziamo n permutazioni dei nostri due insiemi A* B*

n=1000

#per ogni permutazione calcoliamo il valore della statistica di analisi

#la differenza tra il secondo ed il primo insieme

def draw_rep_stat(data,data2, func, size):

"""Draw bootstrap replicates."""

 

# Initialize array of replicates: bs_replicates

stat_replicates = np.empty(size)

 

# Generate replicates

for i in range(size):

stat_replicates[i] = permutation_sample(data,data2,func)

 

return stat_replicates

 

In [16]:
test_set=draw_rep_stat(old_pic, new_pic,frac_abs_success,n)

 

print(len(test_set))

#Calcoliamo il p-value dei dati 

#n è il numero di permutazioni che realizziamo 

p = np.sum(test_set >= frac_abs_success(old_pic,new_pic)) / len(test_set)

print('p-value =', p)

 

 

 

1000

p-value = 0.01

 

Annunci

Lascia un commento

Archiviato in Ingegneria, riflessioni, Tecnologia

Open Data e Immigrazione se l’Italia fosse come la Nuova Zelanda

Questo post non dovrebbe essere sull’Immigrazione Neozelandese (in realtà il rilascio di Visti), il Viminale e gli Open Data, avevo promesso a Davide, un alumno di InnovAction Lab, che avrei discusso dell’importanza di non avere l’app di Facebook sul cellulare per evitare distrazioni e restare focalizzati.

In sintesi se andate su questo sito statistico della Nuova Zelanda (dove hanno girato il Signore degli Anelli), con estrema facilità potete scaricare tutti i dati sui Visti rilasciati dal 2001 ad oggi.

Basta andare nella sezione Turismo-International Travel e Migration ecc.. http://archive.stats.govt.nz/infoshare/

Volete fare lo stesso lavoro con un data base italiano?

http://www.interno.gov.it/it/servizi/banche-dati-ed-elenchi

Almeno per me è stato un inferno e non sono riuscito a trovare qualcosa di strutturato, intuitivo e usabile(in termini di usabilità).

In questo modo non è possibile condurre  nessuna discussione seria e costruttiva in merito alla questione Immigrazione.

Così ho scritto all’Agenzia per l’Italia Digitale, ma ancora nulla.

 

 

Nel mentre, per motivi di lavoro ho condotto una sintetica ricerca sui Visti rilasciati in Nuova Zelanda dal 2001 al 2016.

Il codice verrà pubblicato su www.lovabledata.com nei prossimi giorni nel formato di Jupyter Notebook.

 

E questi sono i valori:

Total      %
Visitor    367368  30.62
Residence  295935  24.67
Student    274149  22.85
Work       247818  20.66
Other       14478   1.21


Oltre a queste informazioni è anche possibile valutare da dove provengono le richieste approvate:
Sum and % of Visa by Region
                              Total      %
North-East Asia              109569  40.03
Southern and Central Asia     74583  27.25
South-East Asia               38487  14.06
North-West Europe             14367   5.25
Oceania and Antarctica        12330   4.50
Africa and the Middle East    11583   4.23
The Americas                   9150   3.34
Southern and Eastern Europe    3678   1.34

E valutare sommariamente applicando una media mobile qual è il trend di provenienza degli immigrati regolari dalle realtà più significative.

Sarebbe interessante poter fare le stesse analisi con i dati italiani (che ci sono ma non si sa dove siano nascosti).

Un abbraccio

Andrea

Guardiamo alle religioni come alle mille foglie di un albero, ci sembrano tutte differenti, ma tutte riconducono a uno stesso tronco.
(Mahatma Gandhi)

 

 

ps ci sono più persone nel Lazio(5,8 Milioni) che in Nuova Zelanda  (4,6 Milioni)

 

pps Si scrive “New Zealand” e non “New Zeland” correggerò i grafici 😀

Lascia un commento

Archiviato in Notizie e politica, riflessioni

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

Giugno dolci dati ed ottimizzazioni

La vita è sempre trionfo dell’improbabile e miracolo dell’imprevisto.


Sono tornato da Londra e sicuramente resterò qui in Italia fino a metà Luglio.

Da metà Marzo fino alla prima settimana di Maggio ho lavorato una catena che produce cupcakes Lola.

Il negozio era un chiosco all’interno della stazione di Marylebone, veramente una bella esperienza, mi sono divertito ed ho imparato molto.

 

Dopo una settimana ero responsabile dell’apertura del negozio.

Dopo tre settimane della chiusura

Dopo cinque settimane l’amministratore delegato è venuto a parlarmi perché voleva mettermi a capo di un progetto di riduzione degli sprechi di cibo dandomi accesso a tutti i dati storici sul fatturato e costi della società.

Come è successo?

Curiosità e noia.

La chiusura del negozio prevede la stesura di un report di fine giornata dove vengono inserite da parte dell’operatore (in questo caso io) informazioni relative a:

  • Fatturato effettivo della giornata
  • Target che era stato definito
  • Sprechi (i cupcakes sono freschi e vengono buttati a fine giornata)
  • Cosa l’azienda avrebbe dovuto fare diversamente da qui ad un anno
  • Idee creative che fossero venute in mente durante la giornata

Una cosa che mi aveva colpito mentre lavoravo era la differenza tra Fatturato – Target – Wastage che non sembrava ottimizzata. (spoiler: c’è un ampio margine di miglioramento 🙂 )

Così un giorno in cui c’erano pochi clienti e mi stavo annoiando ho aperto il pc e con largo anticipo ho iniziato a scrivere il report evidenziando che l’ordine quotidiano di dolci effettuato dalla store manager doveva basarsi su un modello predittivo (una regressione lineare) che considerasse una pluralità di variabili (dati storici sulle vendite, condizioni meteo, flusso di persone della stazione) e che c’era la necessità di studiare la correlazione tra le variabili del modello ed i dati storici.

A  seguito del mio report il CEO ha scritto una email alla store manager dicendole che voleva assolutamente parlarmi, mi ha portato a cena, mi ha proposto di occuparmi di realizzare il nuovo progetto per la riduzione degli sprechi di cibo una volta tornato dall’Italia e di fare la mia offerta economica per il progetto.

Attualmente sto lavorando a distanza, mi sto occupando di tutta una fase preliminare di analisi della quantità e qualità di dati effettivamente disponibili.

It’s easier to fool people than to convice them that they’ve been fooled


Oltre a questo progetto di riduzione degli sprechi, giovedì mi è stato proposto un ulteriore progetto sempre su Londra di ottimizzazione e big data, di questo non posso condividere ulteriori dettagli.

E’ un progetto molto complesso e se l’incarico dovesse essere confermato vedrà l’applicazione di almeno tre differenti algoritmi di Machine Learning.

Continua sempre il mio supporto all’Associazione di InnovAction Lab, ma devo essere più presente, siamo ancora in alto mare con il DB (colpa mia), l’ultimo evento su Roma è stato un flop, ma il BBQ di Agosto è già in agenda.

Per non farmi mancare nulla dovrò sistemare alcune questioni amministrative ed operative per l’azienda di famiglia e devo (da almeno due mesi) rifare il sito di Wheelab per raccontare quello che è stato,  il rinnovo del sito mi è stato suggerito e richiesto da molti recruiter.

Gli impegni per Giugno sono tanti, le energie sono sempre le stesse e non dormire sarebbe solo un problema per la produttività.

La produttività è sempre un tema particolare.

La nostra capacità di concentrazione è crollata sensibilmente, in alcuni casi paragonabile a quella di un pesce rosso (http://time.com/3858309/attention-spans-goldfish/) e purtroppo guardiamo lo schermo del cellulare ogni 10-12 minuti, circa 80 volte al giorno(http://www.businessinsider.com/dscout-research-people-touch-cell-phones-2617-times-a-day-2016-7?IR=T).

A ragione di questo ho deciso che temporaneamente per tutto il mese di Giugno non sarò presente sui social network. 

  • Eliminazione di Instagram-Linkedin-Twitter dal cellulare
  • Cambio password di Facebook e disconnessione dell’account

Quando sarà Luglio uscirò dalla caverna.

 

Se ci riuscirò scriverò qualche articolo sugli ultimi libri letti nei mesi passati, sto rispettando abbastanza bene la lista che avevo fatto a Gennaio.

Un abbraccio e grazie per aver letto il mio articolo.

 

Andrea

 

ps se noti qualche errore scrivimi pure

Lascia un commento

Archiviato in riflessioni, Scritti sparsi

Le 25 skills più richieste per un Data Scientist (tratto da una storia vera) prt 1

Non è facile essere un wannabe Data Scientist

Essere un Data Scientist è veramente difficile, essere un Data Scientist autodidatta ancora peggio.

Il tempo non è mai abbastanza, c’è bisogno di focalizzarsi e focalizzarsi verso quello che il mercato del lavoro vuole, in questo modo ci saranno più possibilità di farcela, almeno all’inizio.

Dove focalizzarsi?

Sono sempre convinto che bisogna definire una strategia di medio termine e seguirla con pazienza, altrimenti si rischierà di essere distratti da tutte le informazioni provenienti dalla rete.

Verso Settembre 2017 fino ad oggi, molto spesso dopo aver inviato il mio CV per annunci di lavoro come Data Scientist ho segnato manualmente su Google Foglio le competenze richieste per quel ruolo

Ho superato più di 430 righe ognuna contenente una informazione.

Oggi ho deciso di analizzare questo CSV in modo da capire quali fossero le competenze più richieste come Data Scientist ed esercitarmi.

In [80]:
#importing the libraries 

import pandas as pd
import matplotlib.pyplot as plt
In [40]:
csvname= "skill.csv"
df= pd.read_csv(csvname,sep= ",", header=None, index_col=False)
print(df.head(30))
                             0    1
0                       Agile   NaN
1                           AI  NaN
2                    Algorithm  NaN
3                    Algorithm  NaN
4                   Algorithms  NaN
5                    Analytics  NaN
6                      Apache   NaN
7                      Apache   NaN
8                          API  NaN
9   Artificial neural networks  NaN
10                         AWS  NaN
11                         AWS  NaN
12                         AWS  NaN
13                         AWS  NaN
14                         AWS  NaN
15                         AWS  NaN
16                         AWS  NaN
17                         AWS  NaN
18                       Azure  NaN
19                       Azure  NaN
20                       Azure  NaN
21                       Azure  NaN
22                       Azure  NaN
23              Bayesian Model  NaN
24              Bayesian Model  NaN
25              Bayesian Model  NaN
26         Bayesian Statistics  NaN
27                          BI  NaN
28                          BI  NaN
29                         BI   NaN
30                    Big Data  NaN
31                    Big Data  NaN
32                    Big Data  NaN
33                    Big Data  NaN
34                    Big Data  NaN
35                    Big Data  NaN
36                    Big Data  NaN
37                    Big Data  NaN
38                    BIgQuery  NaN
39                    BIgQuery  NaN
In [34]:
print(df.columns)
Int64Index([0, 1], dtype='int64')
In [50]:
df.columns=['skills','vuota']
In [51]:
print(df.head())
       skills vuota
0      Agile    NaN
1          AI   NaN
2   Algorithm   NaN
3   Algorithm   NaN
4  Algorithms   NaN
In [65]:
df_skill=pd.DataFrame(df.iloc[:,0], columns=['skills'])
print(df_skill.head(5))
       skills
0      Agile 
1          AI
2   Algorithm
3   Algorithm
4  Algorithms
In [71]:
print(df_skill.info())
RangeIndex: 423 entries, 0 to 422
Data columns (total 1 columns):
skills    423 non-null object
dtypes: object(1)
memory usage: 3.4+ KB
None
In [84]:
df_skill_grouped=df_skill.groupby(['skills']).size().sort_values(ascending=False)
In [85]:
print(df_skill_grouped)
skills
SQL                                        37
Python                                     36
Spark                                      16
Python                                     13
Handoop                                    12
Scala                                      10
Scikit Learn                               10
NLP                                        10
Machine Learning                           10
Statistics                                 10
AWS                                         8
Big Data                                    8
NOSQL                                       7
Kafka                                       7
TensorFlow                                  6
Tableau                                     6
Pandas                                      5
Numpy                                       5
Azure                                       5
SQL                                         5
Machine learning                            5
Financial Systems                           4
Predictive Model                            4
Neural Networks                             4
C++                                         4
Machine Learning                            4
Go                                          3
Bayesian Model                              3
MapReduce                                   3
Clustering                                  3
                                           ..
Sentiment Analysis                          1
NLP                                         1
Scraping                                    1
NOSQL                                       1
Naive Bayes classifier                      1
Natural language processing                 1
Numpy                                       1
Linear Model                                1
Latent semantic indexing                    1
Pig                                         1
Hashmaps                                    1
Flask                                       1
Flink                                       1
Gis                                         1
GitHub                                      1
Testing Software                            1
Google 360                                  1
Gradient Boosted Machine                    1
TF-IDF                                      1
Plotly                                      1
T-SQL                                       1
Html                                        1
Information Extraction                      1
Instantaneously trained neural networks     1
JQuery                                      1
JSON                                        1
Java                                        1
JavaScript                                  1
Jira                                        1
AI                                          1
Length: 150, dtype: int64
In [90]:
df_skill_grouped.head(25).plot.bar()
 25 skills
Queste analisi devono evidentemente essere migliorate:

 

1) Implementare delle Regex, in questo modo potrò correggere velocemente gli errori di battitura ed essere più preciso (ad esempio nel grafico si vede che “Python” e “Python ” (con spazio finale) sono stati trattati come elementi differenti

 

2) Web Scraping degli annunci di lavoro ai quali ho risposto per estrarre automaticamente le competenze richieste ed aggiornare automaticamente il foglio Google

 

3) Migliorare il codice del Pomodoro Workout Analyzer così da essere più consapevole dicome sto gestendo le ore di esercizio con Python.

 

Un abbraccio e grazie per aver letto il mio articolo.

 

Andrea

 

ps se noti qualche errore scrivimi pure

 

1 Commento

Archiviato in Ingegneria, riflessioni

La differenza tra Vincere ed avere Successo secondo John Wooden

Col nuovo anno Alessandro mi aveva girato questo video del TED di John Wooden

John Wooden è stato un allenatore di pallacanestro e cestista statunitense.

E’ stato il tecnico più vincente della storia del basket collegiale USA alla guida degli UCLA Bruins.

Nel video del TED definisce dei punti chiave sia sul successo che sull’insegnamento.

No written word, no spoken plea can teach our youth what they should be.
Nor all the books on all the shelves, it’s what the teachers are themselves.

Ha anche citato la sua piramide del successo, non è andato nel dettaglio, ma è molto interessante.

In cima a tutto troviamo la pazienza ed “il crederci”.

Un concetto quello della pazienza che ritorna in discorsi già visti(“La vita è fatta di centimetri” Al Pacino in Ogni Maledetta Domenica o “There is NO Overnight Success” di Gary Vay) denominatore comune per qualsiasi obiettivo che si voglia raggiungere.

Focus sull’obiettivo ed allenamento costante.

Il punto interessante del talk è stata la sua definizione di successo.

La definizione è nata dopo alcune discussioni con dei genitori mentre insegnava in Indiana:

“Il successo rappresenta la serenità acquisita esclusivamente attraverso la soddisfazione personale nel sapere che hai dato il massimo rispetto al tuo potenziale.

Se tu ti impegni al meglio in ciò che sei capace di fare cercando di migliorarti (performance, risultati ecc) allora avrai raggiunto il successo.
E’ simile alla differenza tra carattere e reputazione, la reputazione è ciò che le persone percepiscono di te, il carattere è ciò che realmente sei.

Io penso che il carattere sia molto più importante di quello che gli altri pensino di te. “

Gran bel video!

Lascia un commento

Archiviato in riflessioni