http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html
3. Scoring - Ciblage
5. Sélection de variables
ANALYSE PRÉDICTIVE
Y = f(X1,X2,…) +
#taux de succès
acc = metrics.accuracy_score(y_test,y_pred)
print(acc) # 0.793 = (184 + 54)/ (184 + 17 + 45 + 54)
#taux d'erreur
err = 1.0 - acc
print(err) # 0.206 = 1.0 – 0.793
VALIDATION CROISÉE
SCORING
Y = f(X1,X2,…) +
Ensemble
de données
(dataset) (Y , score)
Y : valeurs observées
Ensemble de test score : propension à être positif
attribué par f(.)
#affichage
plt.show()
R.R. – Université Lyon 2 19
Recherche des paramètres optimaux des algorithmes
GRID SEARCH
#modélisation
modele2 = mvs.fit(X_app,y_app)
#succès en test
print(metrics.accuracy_score(y_test,y_pred2)) # 0.67
C’est la méthode (SVM) qui est inapte ou c’est le paramétrage qui est inadapté ?
R.R. – Université Lyon 2 21
Détermination des meilleurs valeurs des paramètres
#import de la classe Stratégie : Grille de recherche. On
from sklearn.grid_search import model_selection indique les paramètres à faire varier,
#combinaisons de paramètres à évaluer scikit-learn les croise et mesure les
parametres = [{'C':[0.1,1,10],'kernel':['rbf','linear']}] performances en validation croisée.
#évaluation en validation croisée de 3 x 2 = 6 configurations
#accuracy sera le critère à utiliser pour sélectionner la meilleure config
#mvs est l’instance de la classe svm.SVC (cf. page précédente)
grid = model_selection.GridSearchCV(estimator=mvs,param_grid=parametres,scoring='accuracy')
#lancer la recherche – attention, gourmand en calculs
grille = grid.fit(X_app,y_app)
#résultat pour chaque combinaison
print(pandas.DataFrame.from_dict(grille.cv_results_).loc[:,["params","mean_test_score"]])
#meilleur paramétrage
print(grille.best_params_) # {‘C’ : 10, ‘kernel’ : ‘linear’}
#meilleur performance – estimée en interne par validation croisée
print(grille.best_score_) # 0.7564
#prédiction avec le modèle « optimal » c.-à-d. {‘C’ : 10, ‘kernel’ : ‘linear’}
y_pred3 = grille.predict(X_test)
#taux de succès en test
print(metrics.accuracy_score(y_test,y_pred3)) # 0.7833, on se rapproche de la rég. logistique
R.R. – Université Lyon 2 22
Réduire le modèle aux variables explicatives les plus pertinentes
SÉLECTION DE VARIABLES
#ordre de suppression
print(sol.ranking_) # [1 2 4 1 1 3 1 5] Serum a été retirée en premier, puis triceps, puis âge, puis
diastolic. Les variables restantes sont indexées 1.
R.R. – Université Lyon 2 24
Sélection de variables (2/2)
Site du cours
http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html
Site de Python
Welcome to Python - https://www.python.org/
Python 3.4.3 documentation - https://docs.python.org/3/index.html
Portail Python
Page Python de Developpez.com
POLLS (KDnuggets)
Data Mining / Analytics Tools Used
Python, 4ème en 2015
What languages you used for data mining / data science?
Python, 3ème en 2014 (derrière R et SAS)