Matrice de confusion dans sklearn
Si vous regardez ceci:
>>> y_true = ["cat", "ant", "cat", "cat", "ant", "bird"]
>>> y_pred = ["ant", "ant", "cat", "cat", "ant", "cat"]
>>> confusion_matrix(y_true, y_pred, labels=["ant", "bird", "cat"])
array([[2, 0, 0],
[0, 0, 1],
[1, 0, 2]])
Je suppose que la première rangée de tableau signifie "fourmi prédite" et la première colonne est "est en fait une fourmi", la deuxième colonne est "est en fait un oiseau" etc.
Donc la première ligne, la première colonne 2, je lis comme "fourmi prédite, est fourmi", la première ligne, deuxième col 0, je lis comme "fourmi précitée est oiseau" est 0 ce qui correspond, et la troisième colonne est "fourmi prédite est chat" est 0 mais devrait être 1.
Ce que je fais mal tout en comprenant la matrice de confusion.
Un autre exemple est celui-ci
>>> from sklearn.metrics import confusion_matrix
>>> y_true = [2, 0, 2, 2, 0, 1]
>>> y_pred = [0, 0, 2, 2, 0, 2]
>>> confusion_matrix(y_true, y_pred)
array([[2, 0, 0],
[0, 0, 1],
[1, 0, 2]])
Où n'est même pas clair, quel est l'ordre des classes.
La source: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html
edit : Sauf s'il est échangé. La première ligne est "est fourmi" et non "fourmi prédite". Seulement que sur wikipedia, le système est que cette ligne est la prédiction.
Réponses
Vous venez de confondre le réel et le prédit. Chaque ligne représente les valeurs réelles d'éléments distincts dans votre tableau et les colonnes en représentent les valeurs prédites. C'est,
- Première rangée: il y a 2 fourmis et 2 échantillons sont prédits comme fourmis .
- Deuxième rangée: Il y a 1 oiseau et 1 échantillon est prédit comme chat .
- Troisième rangée: Il y a 3 chats , 1 échantillon est prédit comme fourmi , 2 échantillons sont prédits comme chat .