ฉันกำลังติดตามตัวอย่างนี้ในเว็บไซต์ scikit-Learn เพื่อทำการจัดประเภทมัลติเอาท์พุทด้วยโมเดล Random Forest
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
รัฐ:
array of shape = [n_samples, n_classes] หรือรายการ n_outputs อาร์เรย์ดังกล่าวหาก n_outputs> 1
ความน่าจะเป็นของคลาสของตัวอย่างอินพุต ลำดับของคลาสสอดคล้องกับที่อยู่ในแอ็ตทริบิวต์ Class_
ฉันเดาว่าฉันมีคำอธิบายหลัง แต่ฉันยังคงดิ้นรนที่จะเข้าใจว่าสิ่งนี้เกี่ยวข้องกับความน่าจะเป็นในชั้นเรียนของฉันอย่างไร
นอกจากนี้เมื่อฉันพยายามที่จะเข้าถึงclasses_
แอตทริบิวต์สำหรับforest
รุ่นที่ผมได้รับและแอตทริบิวต์นี้ไม่ได้อยู่ในAttributeError
MultiOutputClassifier
ฉันจะเชื่อมโยงคลาสกับเอาต์พุตได้อย่างไร?
print(forest.classes_)
AttributeError: 'RandomForestClassifier' object has no attribute 'classes_'