Scikit predict_proba การตีความผลลัพธ์


12

ฉันทำงานกับห้องสมุด scikit เรียนรู้ในหลาม ในโค้ดด้านล่างนี้ฉันกำลังทำนายความน่าจะเป็น แต่ฉันไม่รู้วิธีอ่านเอาต์พุต

ข้อมูลการทดสอบ

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])

แยกชุดข้อมูล

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

คำนวณความน่าจะเป็น

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

ผลลัพธ์

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

รายการ X_test มี 3 อาร์เรย์ (ฉันมี 6 ตัวอย่างและ test_size = 0,5) ดังนั้นผลลัพธ์ก็มี 3 เช่นกัน

แต่ฉันคาดการณ์ 3 ค่า (0,1,2) ดังนั้นทำไมฉันจึงได้รับเพียง 2 องค์ประกอบในแต่ละอาร์เรย์?

ฉันจะอ่านผลลัพธ์ได้อย่างไร

ฉันยังสังเกตเห็นว่าเมื่อฉันแก้ไขจำนวนค่าที่แตกต่างใน y จำนวนคอลัมน์ในผลลัพธ์จะนับจำนวนที่แตกต่างกันของ y -1 เสมอ


ยินดีต้อนรับสู่ CrossValidated คุณเห็นคำตอบของฉันด้านล่างหรือไม่ หากมันแก้ไขคำถามของคุณไปข้างหน้าและทำเครื่องหมายว่าเป็นคำตอบที่ถูกต้อง มิฉะนั้นแจ้งให้เราทราบว่ามีอะไรขาดหายไปและฉันจะพยายามล้างข้อมูลให้คุณ
Ben

คำตอบ:


5

y_trainลองดูที่ array([0, 0, 1])มันเป็น ซึ่งหมายความว่าการแยกของคุณไม่ได้รับตัวอย่างโดยที่ y = 2 ดังนั้นโมเดลของคุณจึงไม่รู้ว่า class y = 2 มีอยู่จริง

คุณต้องการตัวอย่างเพิ่มเติมเพื่อส่งคืนสิ่งที่มีความหมาย

ตรวจสอบเอกสารเพื่อให้เข้าใจวิธีตีความผลลัพธ์


1
สิ่งนี้ถูกต้อง หากคุณตั้งค่าy = np.array([0,2,1,0,1,2])และrandom_state=2ตอนนี้คุณจะเห็นคอลัมน์ผลลัพธ์ 3 คอลัมน์
tdc

คำตอบแก้ไขคำถามของฉัน ขอบคุณมาก. แล้วคอลัมน์ไหนล่ะที่ได้โปรด? มันเพิ่มขึ้นเสมอหรือไม่
HonzaB

clf.classes_วิ่ง คอลัมน์จะอยู่ในลำดับนั้น
เบ็น

เพียงเช่นนี้clf.fit(X_train,y_train).classes_?
HonzaB

1
ฉันคิดว่ามันจะใช้งานได้ แต่คุณสามารถวิ่งได้clf.classes_ หลังจากวิ่งclf.fit(X_train,y_train)
เบ็น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.