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_'