Saya bekerja dengan perpustakaan scikit-learn dengan python. Dalam kode di bawah ini, saya memprediksi probabilitas tetapi saya tidak tahu cara membaca output.
Menguji data
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])
Pisahkan dataset
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.5, random_state=0)
Hitung probabilitasnya
clf = RF()
clf.fit(X_train,y_train)
pred_pro = clf.predict_proba(X_test)
print pred_pro
Hasil
[[ 1. 0.]
[ 1. 0.]
[ 0. 1.]]
Daftar X_test berisi 3 array (saya punya 6 sampel dan test_size = 0,5) sehingga output memiliki 3 juga.
Tapi saya memprediksi 3 nilai (0,1,2) jadi mengapa saya hanya mendapatkan 2 elemen di setiap array?
Bagaimana saya harus membaca hasilnya?
Saya juga memperhatikan, ketika saya memodifikasi jumlah nilai yang berbeda dalam y, jumlah kolom dalam output selalu berbeda dengan y -1.
python
scikit-learn
HonzaB
sumber
sumber
Jawaban:
Lihatlah
y_train
. Ituarray([0, 0, 1])
. Ini berarti pemisahan Anda tidak mengambil sampel di mana y = 2. Jadi, model Anda tidak tahu bahwa kelas y = 2 ada.Anda memerlukan lebih banyak sampel untuk mengembalikan sesuatu yang berarti.
Periksa juga dokumen untuk memahami bagaimana menafsirkan output.
sumber
y = np.array([0,2,1,0,1,2])
danrandom_state=2
sekarang Anda akan melihat 3 kolom outputclf.classes_
. Kolom akan berada dalam urutan itu.clf.fit(X_train,y_train).classes_
:?clf.classes_
setelah berlariclf.fit(X_train,y_train)