scikit-learn Webサイトでこの例をフォローして、ランダムフォレストモデルでマルチ出力分類を実行しています。
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))
これからpredict_proba
、2つの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]])]
マトリックスごとに本当に期待していましn_sample
たn_classes
。これがクラスの存在確率にどのように関係しているかを理解するのに苦労しています。
ドキュメントのためpredict_proba
の状態:
形状の配列= [n_samples、n_classes]、またはn_outputs> 1の場合はn_outputsのような配列の配列。
入力サンプルのクラス確率。クラスの順序は、属性classes_の順序に対応しています。
私は説明に後者があると推測していますが、これが私のクラスの確率にどのように関係するかを理解するのにまだ苦労しています。
さらに、モデルのclasses_
属性にアクセスしようとすると、が表示され、この属性はに存在しません。クラスを出力に関連付けるにはどうすればよいですか?forest
AttributeError
MultiOutputClassifier
print(forest.classes_)
AttributeError: 'RandomForestClassifier' object has no attribute 'classes_'