> Modules non standards > Scikit-Learn > Cross Validation
Cross Validation
Cross-validation automatique (sur le sample de training) :
-
from sklearn.model_selection import cross_val_score
rf = RandomForestClassifier()
cross_val_score(rf, X, y, cv = 5)
fait une cross-validation à 5 parties et calcule à chaque fois le score sur le 1/5 restant (donc appels automatiques à fit, predict et score). Le score calculé est celui définit par le predicteur (par sa méthode "score"). La valeur retournée est une array des scores pour chaque partie (5 scores ici).
- si y est binaire ou multiclasse, le k-fold cross-validation se fait en utilisant la classe StratifiedKFold pour avoir les mêmes effectifs de classe dans chaque fold.
- on peut forcer un autre scoring que celui standard associé au classifier avec l'argument : cross_val_score(rf, X, y, cv = 5, scoring = 'f1'). Pour avoir la liste des scorings possibles : sklearn.metrics.SCORERS.keys() (accuracy, balanced_accuracy, f1, roc_auc)
- pour faire du leave-one-out, il suffit de donner comme valeur le nombre d'individus de l'échantillon d'apprentissage.
cross_validate : permet d'évaluer plusieurs scores simultanément :
- from sklearn.model_selection import cross_validate
- result = cross_validate(df, X, y, cv = 5, scoring = ['balanced_accuracy', 'roc_auc'])
- le résultat renvoyé est un dictionnaire dont les clefs sont : fit_time, score_time et ici test_balanced_accuracy, test_roc_auc (car ce sont les scores sur le sample de test qui sont renvoyés) et chaque valeur est une array, ici de 5 valeurs (car 5 folds).
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert