1

J'essaie de comprendre comment faire une validation croisée de k-fold. J'espérais que quelqu'un pourrait me dire la différence entre mes deux déclarations imprimées. Ils me donnent des données très différentes et je pensais qu'ils seraient les mêmes.Dans cross_val_score, comment le paramètre cv est-il utilisé différemment?

##train is my training data, 
##target is my target, my binary class. 

dtc = DecisionTreeClassifier() 
kf = KFold(n_splits=10) 
print(cross_val_score(dtc, train, target, cv=kf, scoring='accuracy')) 
print(cross_val_score(dtc, train, target, cv=10, scoring='accuracy')) 

Répondre

1

DecisionTreeClassifier dérive de ClassifierMixin, etc., comme mentionné dans les documents (moi qui souligne):

Computing cross-validated metrics

Lorsque l'argument cv est un nombre entier, cross_val_score utilise le KFold ou StratifiedKFold stratégies par défaut, ce dernier étant utilisé si l'estimateur dérive de ClassifierMixin.

Voici donc quand vous passez cv=10 vous utilisez la stratégie StratifiedKFold, alors que lors du passage cv=kf vous utilisez la stratégie du KFold régulière.

Dans la classification, la stratification tente généralement de s'assurer que chaque pli d'essai a une représentation de classe à peu près égale. Voir Understanding stratified cross-validation sur validation croisée pour plus d'informations.