Comment est scikit-learn cross_val_predict précision score calculé?
Ne le cross_val_predict
(voir doc, v0.18) avec kfois méthode comme indiqué dans le code ci-dessous calculer la précision pour chaque pli et la moyenne finalement ou pas?
cv = KFold(len(labels), n_folds=20)
clf = SVC()
ypred = cross_val_predict(clf, td, labels, cv=cv)
accuracy = accuracy_score(labels, ypred)
print accuracy
Vous devez vous connecter pour publier un commentaire.
Non, il ne le fait pas!
Selon validation croisée doc page,
cross_val_predict
ne renvoie pas les scores, mais seulement les étiquettes en fonction d'une certaine stratégie qui est décrit ici:Et, par conséquent, en appelant
accuracy_score(labels, ypred)
vous êtes juste de calculer les scores de précision des étiquettes prédit par susmentionnés stratégie particulière par rapport à la vraie étiquettes. Ce qui est spécifié dans la même page de documentation:Si vous avez besoin de précision, les scores des différents plis que vous devriez essayer:
et puis, pour la précision moyenne de tous les plis utilisation
scores.mean()
:Comment calculer le coefficient kappa de Cohen et de la confusion de la matrice à chaque fois?
Pour le calcul de
Cohen Kappa coefficient
et de la confusion de la matrice je suppose que vous dire du coefficient kappa et matrice de confusion entre le vrai étiquettes et chaque fois annoncée des étiquettes:Ce n'
cross_val_predict
retour?Il utilise KFold pour diviser les données pour
k
pièces et ensuite pouri=1..k
itérations:i'th
partie comme données de test et toutes les autres parties, en tant que données d'entraînementi'th
)i'th
partie (données de test)À chaque itération, l'étiquette de
i'th
partie des données est prévu. En fin de compte cross_val_predict fusionne toutes partiellement prédit les étiquettes et les retourne comme résultat final.Ce code montre ce processus étape par étape:
Le résultat est:
cross_val_score
et moyenne pour chaque pli. De même, pourriez-vous me montrer comment calculerCohen kappa coefficient
etconfusion matrix
pour chaque pli, puis la moyenne?then average
?ypred = cross_val_predict(clf, td, labels, cv=cv)
pourriez-vous m'expliquer comment leypred
a été calculé en utilisant un langage simple...cross_val_predict
fusionne toutes partiellement prédit les étiquettes et les retourne dans son ensemble.Comme vous pouvez le voir dans le code de
cross_val_predict
sur github, la fonction calcule pour chaque fois les prédictions et les concatène. Les prédictions sont basées sur le modèle appris d'autres plis.Ici est une combinaison de votre code et de l'exemple fourni dans le code
Enfin, pour répondre à votre question: "Non, la précision n'est pas la moyenne pour chaque pli"
the function computes for each fold the predictions and concatenates them.
Qu'entendez-vous parconcatenates
? Qu'est-ce que l'extrait de la précision moyenne? Semble-t-il gâcher tout. Comment puis-je calculer la précision en moyenne à chaque fois?Comme il est écrit dans le documenattion sklearn.model_selection.cross_val_predict :
Je voudrais ajouter une option pour un moyen rapide et facile de répondre, au-dessus de ce que le précédent développeurs ont contribué.
Si vous prenez le micro de la moyenne de la F1 vous sera essentiellement à obtenir le taux de précision. Ainsi, par exemple, qui serait:
Cela fonctionne mathématiquement, depuis la micro-moyenne vous donne la moyenne pondérée de la matrice de confusion.
Bonne chance.