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_probatô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_samplebởi n_classesma 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_probacá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 forestmô hình tôi nhận được AttributeErrorvà 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_'