Je suis cet exemple sur le site Web scikit-learn pour effectuer une classification multi-sorties avec un modèle de forêt aléatoire.
from sklearn.datasets import make_classification
from sklearn.multioutput import MultiOutputClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.utils import shuffle
import numpy as np
X, y1 = make_classification(n_samples=5, n_features=5, n_informative=2, n_classes=2, random_state=1)
y2 = shuffle(y1, random_state=1)
Y = np.vstack((y1, y2)).T
forest = RandomForestClassifier(n_estimators=10, random_state=1)
multi_target_forest = MultiOutputClassifier(forest, n_jobs=-1)
multi_target_forest.fit(X, Y).predict(X)
print(multi_target_forest.predict_proba(X))
De cela, predict_proba
j'obtiens un 2 tableaux 5x2:
[array([[ 0.8, 0.2],
[ 0.4, 0.6],
[ 0.8, 0.2],
[ 0.9, 0.1],
[ 0.4, 0.6]]), array([[ 0.6, 0.4],
[ 0.1, 0.9],
[ 0.2, 0.8],
[ 0.9, 0.1],
[ 0.9, 0.1]])]
Je m'attendais vraiment à une matrice n_sample
par n_classes
. J'ai du mal à comprendre comment cela se rapporte à la probabilité des classes présentes.
Les documents pour les predict_proba
états:
tableau de forme = [n_échantillons, n_classes], ou une liste de n_sorties de tels tableaux si n_sorties> 1.
Les probabilités de classe des échantillons d'entrée. L'ordre des classes correspond à celui de l'attribut classes_.
Je suppose que j'ai ce dernier dans la description, mais j'ai toujours du mal à comprendre comment cela se rapporte à mes probabilités de classe.
De plus, lorsque j'essaie d'accéder à l' classes_
attribut du forest
modèle, j'obtiens un AttributeError
et cet attribut n'existe pas sur le MultiOutputClassifier
. Comment relier les classes à la sortie?
print(forest.classes_)
AttributeError: 'RandomForestClassifier' object has no attribute 'classes_'