Tôi đang theo dõi ví dụ này trên trang web scikit-learn để thực hiện phân loại đa mục tiêu với mô hình Rừng ngẫu nhiên.
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))
Từ đây predict_proba
tôi nhận được một mảng 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]])]
Tôi đã thực sự mong đợi một n_sample
bởi n_classes
ma trận. Tôi đang đấu tranh để hiểu làm thế nào điều này liên quan đến xác suất của các lớp hiện tại.
Các tài liệu cho predict_proba
các tiểu bang:
mảng hình dạng = [n_samples, n_groupes] hoặc danh sách các nDefputs các mảng như vậy nếu nDefputs> 1.
Các xác suất lớp của các mẫu đầu vào. Thứ tự của các lớp tương ứng với thứ tự trong các lớp thuộc tính_.
Tôi đoán tôi có phần sau trong phần mô tả, nhưng tôi vẫn đang cố gắng để hiểu điều này liên quan đến xác suất của lớp tôi như thế nào.
Hơn nữa, khi tôi cố gắng truy cập classes_
thuộc tính cho forest
mô hình tôi nhận được AttributeError
và thuộc tính này không tồn tại trên MultiOutputClassifier
. Làm thế nào tôi có thể liên kết các lớp với đầu ra?
print(forest.classes_)
AttributeError: 'RandomForestClassifier' object has no attribute 'classes_'