Académique Documents
Professionnel Documents
Culture Documents
OUTILS PYTHON
POUR LA DATA SCIENCE
Machine
Learning
Seaborn
Bases de
données
Visualisation
Big Data
Plotly, …
Web
NLTK, CoreNLP, Gensim,
textblob, SpaCy, …
Traitement du langage naturel
# Apprend le modèle
forest.fit(Xa,Ya)
# Prédit la sortie
Yp = forest.predict(Xt)
cout = np.array([3,1,2])
def myloss(yreel, ypred):
return cout[yreel[yreel != ypred]].sum()
Data Data
Index Serie
Mineure « Data Science » Frédéric Pennerath
Pandas
import pandas as pd
import numpy as np
# Histogrammes et discrétisation
pd.cut(frame.visite,2)
frame['periode']=pd.cut(frame.visite,2)
# Aggrégation
groups = frame.groupby(frame['type'])
print(groups.mean())
print(groups.visite.agg(lambda g : (g.min(), g.max())))
# Nettoyage et préparation
frame.drop_duplicates()
frame['code'] = frame['type'].map({ "Contemporain": 1, "Classique" : 2 })
frame = frame.dropna()
# Jointure
frame2 = pd.DataFrame({
"ville" : [ "Strasbourg", "Paris","Metz", "Nancy" ],
"dept" : [ 67, 75, 57, 54 ]
})
frame3 = pd.merge(frame, frame2, on='ville')
Résultat
Mineure « Data Science » Frédéric Pennerath
Evaluation d’une méthode de régression
Problème : mesurer les écarts entre prédictions et valeurs cibles réelles
Mesure Définition
Corrélation entre 𝑌 et 𝑌 𝑐𝑜𝑟𝑟 𝑌, 𝑌
1≤𝑖≤𝑚 𝑦𝑖 − 𝐸 𝑦𝑖 𝑦𝑖 − 𝐸 𝑦𝑖
=
2 2
1≤𝑖≤𝑚 𝑦𝑖 − 𝐸 𝑦𝑖 1≤𝑖≤𝑚 𝑦𝑖 − 𝐸 𝑦𝑖
Prédiction
Réalité
positif négatif
𝑉𝑃 + 𝑉𝑁
𝑡𝑟 = = 1 − 𝑡𝜀
𝑃+𝑁
Mineure « Data Science » Frédéric Pennerath
Généralisation au problème multi-classe :
Matrice de confusion
Prédiction
Classe 1 Classe 2 Classe 3 Classe 4
Réalité
Classe 1 n11 n12 n13 n14
Classe 2 n21 n22 n23 n24
Classe 3 n31 n32 n33 n22
Classe 4 n41 n42 n43 n44
Taux de réussite :
𝑖 𝑛𝑖,𝑖
𝑡𝑟 =
𝑖,𝑗 𝑛𝑖,𝑗
2. 𝑡𝑒 converge vers une loi normale car m >> 100 (loi des grands nombres)
Ne 𝑝 1−𝑝
𝑡𝑒 = 1 − 𝑡𝑟 = 𝑁 𝑝,
𝑚 𝑚→+∞ 𝑚
3. Normalisation de la distribution :
𝑝 1−𝑝 𝑡𝑒 − 𝑝
𝑡𝑒 𝑁 𝑝, ⇔ 𝑁(0,1)
𝑚→+∞ 𝑚 𝑝 1−𝑝 𝑚→+∞
𝑚
4. Calcul d’un intervalle de confiance de risque δ sur 𝒩 0,1 :
𝑃 𝑋 > 𝜎 𝑋~𝒩 0,1 = 𝛿 ⇔ 𝜎 = 𝑡𝑎𝑏𝑙𝑒𝒩 0,1 𝛿
𝛿 =𝟏% 𝛿 =𝟓%
𝑡𝑒 𝒑𝒎𝒊𝒏 𝒑𝒎𝒂𝒙 𝒑𝒎𝒊𝒏 𝒑𝒎𝒂𝒙
66 % 57 % 73 % 59 % 72 %
90 % 83 % 94 % 85 % 93 %
99 % 95 % 99,8 % 96,6 % 99,7 %
𝑉𝑃 + 𝑉𝑁 𝑃 𝑁
𝑡𝑟 = = ⋅ 𝑠𝑒𝑛 + ⋅ 𝑠𝑝é = 𝑡𝑝 ⋅ 𝑠𝑒𝑛 + 1 − t p ⋅ 𝑠𝑝é
𝑃+𝑁 𝑃+𝑁 𝑃+𝑁
𝑡𝑟 "tjrs positif" = t p 𝑡𝑛 ("tjrs négatif") = t n
Indice
× de Gini Classifieurs
complémentaires
G
× /2
1
× AUC
(area under 1
×
curve) ≤ 𝐴𝑈𝐶 ≤ 1
2
𝐴𝑈𝐶 = 𝑃 𝑠 𝑒𝑥. 𝑝𝑜𝑠. > 𝑠 𝑒𝑥. 𝑛𝑒𝑔.
×
Classifieurs 1
→ 𝐼𝑛𝑑𝑖𝑐𝑒 𝑑𝑒 𝐺𝑖𝑛𝑖 𝐺1 = 2 ⋅ 𝐴𝑈𝐶 −
aléatoires 2
𝑠 𝑒𝑥𝑒𝑚𝑝𝑙𝑒 > 1 0 ×
Classifieur
toujours négatif 0 Taux de faux positif = 1 - spécificité 1
0,95 oui
0,93 oui
Nombre de oui
0,93 non
0,90 oui
0,83 non
Echantillon 2 :
taille 10 oui 6
0,8 non
0,8 oui
0,8 oui
0,78 non
0%
… …
0% Taille de l’échantillon 100 %
Mineure « Data Science » Frédéric Pennerath
Erreur de classification à coût variable
et aide à la décision
Application où le coût de l’erreur est asymétrique
Exemples : diagnostic médical, diagnostic de pannes, etc…
Matrice de coût :
Prédiction
Défaillant Critique (arrêt
Bon état
(dépannage) d’exploitation)
Réalité
Etat des Bon état 100 € 1000 € 10000 €
réacteurs Défaillant
100000 € 10000 € 19000 €
d’un avion (aggravation)
Critique
100000000 € 100000000 € 100000 €
(risque d’ accident)
0 1 1
𝑖≠𝑗 𝑛𝑖,𝑗
Si 𝐶 = 𝐽 − 𝐼 = 1 0 1 alors 𝐸(𝐶) = vaut le taux d’erreur
𝑖,𝑗 𝑛𝑖,𝑗
1 1 0
𝐸 𝐶|𝑦 = 𝑐𝑖 , 𝑋 = 𝐶𝑇 × 𝑃
𝑖
⟹ 𝑦 = argmin 𝐸 𝐶|𝑦 = 𝑐𝑖 , 𝑋
𝑐𝑖
• Paradoxe : la plus grande probabilité n’est pas forcément la meilleure
4 T
10 10 10 0,95
2 3
1
C T P 105 104 104 0,049 105 1 yˆ critique
10 10 10 0,001
8 8 5
0,1
Mineure « Data Science » Frédéric Pennerath
Mesures entropiques
Entropie :
𝐻 𝑝 = 𝐸𝑝 log 𝑝
• Positive ou nulle. Nulle si 𝑝 nulle p.p
• Quantifie l’incertitude d’une distribution
Distance ou divergence de Kullback-Leibler
𝑝
𝐷𝐾𝐿 𝑝, 𝑞 = 𝐸𝑝 log
𝑞
• Positive ou nulle. Nulle si 𝑝 = 𝑞 p.p
• Pseudodistance entre distributions
Entropie croisée
𝐻 𝑝, 𝑞 = −𝐸𝑝 log 𝑞 = 𝐻 𝑝 + 𝐷𝐾𝐿 𝑝, 𝑞 ≥ 𝐻(𝑝)
• Quantifie l’incertitude qui s’ajoute à représenter p par q
Logloss :
Estimation de l’entropie croisée entre les classes réelles (𝑝) et la probabilité des classes prédites (𝑞)
𝑛 𝐶
1
𝑙𝑜𝑔𝑙𝑜𝑠𝑠 = − 𝕝 𝑦𝑖 = 𝑐 log( 𝑝𝑖,𝑐 )
𝑛
𝑖=1 𝑐=1