Giải thích đầu ra Scikit dự đoán_proba


12

Tôi đang làm việc với thư viện scikit-learn trong python. Trong đoạn mã dưới đây, tôi dự đoán xác suất nhưng tôi không biết cách đọc đầu ra.

Kiểm tra dữ liệu

from sklearn.ensemble import RandomForestClassifier as RF
from sklearn import cross_validation

X = np.array([[5,5,5,5],[10,10,10,10],[1,1,1,1],[6,6,6,6],[13,13,13,13],[2,2,2,2]])
y = np.array([0,1,1,0,1,2])

Tách tập dữ liệu

X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.5, random_state=0) 

Tính xác suất

clf = RF()
clf.fit(X_train,y_train)
pred_pro = clf.predict_proba(X_test)
print pred_pro

Đầu ra

[[ 1.  0.]
 [ 1.  0.]
 [ 0.  1.]]

Danh sách X_test chứa 3 mảng (tôi có 6 mẫu và test_size = 0,5) vì vậy đầu ra cũng có 3 mảng.

Nhưng tôi dự đoán 3 giá trị (0,1,2) vậy tại sao tôi chỉ nhận được 2 phần tử trong mỗi mảng?

Làm thế nào tôi nên đọc đầu ra?

Tôi cũng nhận thấy, khi tôi sửa đổi số lượng giá trị riêng biệt trong y, số lượng cột trong đầu ra luôn là số lượng riêng biệt của y -1.


Chào mừng đến với CrossValidated. Bạn có thấy câu trả lời của tôi dưới đây không? Nếu nó giải quyết được câu hỏi của bạn, hãy tiếp tục và đánh dấu nó là câu trả lời đúng. Nếu không, hãy cho tôi biết những gì còn thiếu và tôi sẽ cố gắng làm rõ nó cho bạn.
Ben

Câu trả lời:


5

Hãy nhìn vào y_train. Đó là array([0, 0, 1]). Điều này có nghĩa là phần tách của bạn không nhận được mẫu trong đó y = 2. Vì vậy, mô hình của bạn không có ý tưởng rằng lớp y = 2 tồn tại.

Bạn cần nhiều mẫu hơn cho điều này để trả lại một cái gì đó có ý nghĩa.

Ngoài ra kiểm tra các tài liệu để hiểu làm thế nào để giải thích đầu ra.


1
Chính xác. Nếu bạn đã đặt y = np.array([0,2,1,0,1,2])random_state=2bây giờ bạn sẽ thấy 3 cột đầu ra
tdc

Câu trả lời đã giải quyết câu hỏi của tôi. Cảm ơn rât nhiều. Và theo thứ tự các cột là gì? Nó luôn luôn tăng dần?
HonzaB

Chạy đi clf.classes_. Các cột sẽ theo thứ tự đó.
Ben

Chỉ như thế này : clf.fit(X_train,y_train).classes_?
HonzaB

1
Tôi nghĩ rằng nó sẽ hoạt động nhưng bạn chỉ có thể chạy clf.classes_ sau khi bạn chạyclf.fit(X_train,y_train)
Ben
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.