à l'aide de la confusion matrice de notation métrique en validation croisée dans scikit learn
Je suis entrain de créer un pipeline dans scikit learn,
pipeline = Pipeline([
('bow', CountVectorizer()),
('classifier', BernoulliNB()),
])
et le calcul de la précision à l'aide de la validation croisée
scores = cross_val_score(pipeline, # steps to convert raw messages into models
train_set, # training data
label_train, # training labels
cv=5, # split data randomly into 10 parts: 9 for training, 1 for scoring
scoring='accuracy', # which scoring metric?
n_jobs=-1, # -1 = use all cores = faster
)
Comment puis-je signaler la confusion de la matrice au lieu de "précision"?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
cross_val_predict
(Voir la scikit-learn docs) au lieu decross_val_score
.au lieu de faire :
que vous pouvez faire :
confusion_matrix
est une évaluation de la métrique.Bref, la réponse est "on ne peut pas".
Vous avez besoin de comprendre la différence entre
cross_val_score
et la validation croisée en tant que méthode de sélection de modèle.cross_val_score
comme le nom l'indique, ne fonctionne que sur scores. La Confusion de la matrice n'est pas une partition, c'est une sorte de résumé de ce qui s'est passé lors de l'évaluation. Une distinction majeure est que le résultat est censé renvoyer un objet peut être commandé, en particulier dans scikit-learn - un float. Donc, basé sur score que vous pouvez dire si la méthode b est mieux à partir de l'une en comparant simplement si b est plus grand score. Vous ne pouvez pas faire cela avec la confusion de la matrice, qui, comme sont nom l'indique, est une matrice.Si vous souhaitez obtenir des matrices de confusion pour de multiples pistes d'évaluation (telles que le cross-validation), vous devez le faire à la main, ce qui n'est pas que du mauvais dans la scikit-learn - il est, en fait, quelques lignes de code.
Ce que vous pouvez faire est de définir un buteur qui utilise certaines valeurs de la matrice de confusion. Voir ici [lien]. Juste en citant le code:
Cela permettra d'effectuer la validation croisée pour chacun de ces quatre buteurs et retour le dictionnaire de notation
cv_results
, par exemple, avec des touches detest_tp
,test_tn
, etc. contenant les matrices de confusion des valeurs de chaque validation croisée split.À partir de ce que vous pourriez reconstruire une moyenne de la matrice de confusion, mais la
cross_val_predict
de Xema semble plus élégant pour cette.Noter que ce sera fait, de ne pas travailler avec
cross_val_score
; vous en aurez besoincross_validate
(présenté dans scikit-learn v0.19).Côté remarque: vous pouvez utiliser un de ces marqueurs (c'est à dire un élément de la matrice) pour hyper-optimisation des paramètres via la grille de recherche.
*EDIT: vrais négatifs sont retournés à [1, 1], et non [0, 0]