我在 scikit-learn 网站上关注这个示例,以使用随机森林模型执行多输出分类。
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_'