20171009 - TNUI-UB/grupA-sessions GitHub Wiki
Sessió del 9 d'octubre 2017
- Dubtes pràctica 0?
- Tots hauríem de tenir grup, ja. Funciona?
Pràctica 0
- comprehensions, intro a paquets data science:
- NumPy i la seva estrucutura de dades: el ndararay: els ndarray són uns (objectes) array multidimensional de dades optimitzat per a ser processat amb llibreries de baix nivell sense fer cap còpia de les dades emmagatzemandes en un programa Python.
- pandas: mòdul que afegeix unes estructura de dades noves que ens permet manipular dades.
- Docker, Anaconda o Python 3.6 amb virtualenv.
- GitHub Classroom.
Pràctica 1: Apriori
- a partir d'aquesta pràctica, ja avaluable, totes es faran en parelles.
- es lliurarà la setmana del 23 d'octubre.
En aquesta pràctica resoldrem un problema utilitzant dos algorismes: Naive i Apriorisme.
Revisem funcionament Apriorisme?
Temps aproximat d'execució amb el subconjunt dels que tenen mé de 50 compres (referència):
get_all_n_sets(df, 2) ~ 400ms
get_all_n_sets(df, 3) ~ 6.2s
naive(df, 2, 10) ~ 1s
naive(df, 3, 10) ~ 20s
apriori(df, 2, 10) ~ 290ms
apriori(df, 3, 10) ~ 360ms
-
Combinacions != permutacions
- combinacions de A, B i C: AB, AC, BC
- permutacions de A, B i C: AB, AC, BA, BC, CA, CB
Revisem pràctica 0.
Exercici 18: Donades les taules df (que correspon a una sèrie d'espectadors) i dg (que correspon a una sèrie de pel·licules puntuades pels espectadors) següents: (1) Uneix tota la informació en una única taula m. (2) Calcula el coeficient de correlació de Pearson entre l'usuari 1 i l'usuari 2 en funció de les pel·licules que han vist els dos.
df = pd.DataFrame({'User' : [1,2,4,6,8], 'Age' : [22, 33,41,13,28], 'Sex' : ['a','b','a','a','a']})
dg = pd.DataFrame({'Mov' : [1,2,1,4,5,6,2,15], 'Rating' : [0.1, 0.9, 0.9,0.4,0.6,0.8,0.1,0.8], 'User' : [1,1,2,3,4,5,2,2]})
print(dg)
print(df)
Dóna
Mov Rating User
0 1 0.1 1
1 2 0.9 1
2 1 0.9 2
3 4 0.4 3
4 5 0.6 4
5 6 0.8 5
6 2 0.1 2
7 15 0.8 2
Age Sex User
0 22 a 1
1 33 b 2
2 41 a 4
3 13 a 6
4 28 a 8
Usem pivot
per "pivotar" (és a dir, combinar) la taula en base a unes columnes.
mg = pd.merge(df, dg)
da = dg.pivot(index='User', columns='Mov', values='Rating')
print(mg)
print(da)
Dóna:
Age Sex User Mov Rating
0 22 a 1 1 0.1
1 22 a 1 2 0.9
2 33 b 2 1 0.9
3 33 b 2 2 0.1
4 33 b 2 15 0.8
5 41 a 4 5 0.6
Mov 1 2 4 5 6 15
User
1 0.1 0.9 NaN NaN NaN NaN
2 0.9 0.1 NaN NaN NaN 0.8
3 NaN NaN 0.4 NaN NaN NaN
4 NaN NaN NaN 0.6 NaN NaN
5 NaN NaN NaN NaN 0.8 NaN
# Correlació de series
user1 = da.ix[1](/TNUI-UB/grupA-sessions/wiki/1).squeeze()
user2 = da.ix[2](/TNUI-UB/grupA-sessions/wiki/2).squeeze()
print(user1.corr(user2))
print()
# Correlació de tota la taula pivotada
print(da.corr())
print()
# Correlació de la taula merged
print(mg.corr())
-1.0
Dóna
Mov 1 2 4 5 6 15
Mov
1 1.0 -1.0 NaN NaN NaN NaN
2 -1.0 1.0 NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN NaN
6 NaN NaN NaN NaN NaN NaN
15 NaN NaN NaN NaN NaN NaN
Age User Mov Rating
Age 1.000000 0.938343 0.337193 0.124134
User 0.938343 1.000000 0.235435 0.096674
Mov 0.337193 0.235435 1.000000 0.318646
Rating 0.124134 0.096674 0.318646 1.000000