2016-01-24 60 views
0

我正在使用Scikit-learn構建SVM分類器......並且在運行分類器時..我想通過檢查錯誤分類的實例並試圖找出分類器來提高分類器的準確性錯誤分類背後的原因... 所以有沒有辦法顯示錯誤分類的實例?顯示錯誤分類的實例

回答

3

有沒有辦法顯示錯誤分類的實例?

是的,你需要在這裏和那裏做一些索引。下面是一個例子,但技術細節將取決於分類器的輸入和輸出。

簡單的情況是當輸出是單個值時,因此您可以輕鬆地比較實例是否已被正確分類。例如,我們收集了一些數據和訓練二元分類:

>>> from sklearn import cross_validation, datasets, svm 
>>> X, y = datasets.make_classification() 
>>> X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y) 
>>> clf = svm.LinearSVC().fit(X_train, y_train) 
>>> y_pred = clf.predict(X_test) 

您可以比較y_testy_pred直接作爲輸出是單值。如果你正在訓練一個多類模型,那麼你將無法做一個簡單的比較,而是應該按班級進行比較。

>>> misclassified_samples = X_test[y_test != y_pred] 

如果需要,還可以將布爾掩碼轉換爲索引。

>>> import numpy as np 
>>> np.flatnonzero(y_test != y_pred) 
array([ 0, 20, 22]) 
1

假設您使用線性SVM。如果不是,這是非常類似的程序。

from sklearn.svm import LinearSVC 
X_train=your_train_data 
y_train=your_train_lables 
X_test=your_test_data #should be around 30% of you your data 
y_test=your_test_labels 
svm = LinearSVC() 
svm.fit(X_train, y_train) 
for item, label in zip(X_test, y_test): 
    result = svm.predict([item]) 
    if result != label: 
     print "predicted label %s, but true label is %s" % (result, label) 

這會打印出你的分類器在測試數據上所做的每一個錯誤。