[英]Extracting the Classification of a SVM model in python
我第一次在python中使用SVM。 我還使用了5個交叉驗證來檢查模型的准確性。
該模型的目的是對輸出是否為缺陷進行分類。 我想對照原始數據集交叉檢查輸出分類。 換句話說,我想了解哪些產品被歸類為缺陷,哪些特定產品未被歸類為缺陷。 我該怎么辦?
我的代碼:
from sklearn.svm import SVC
svclassifier_rbf = SVC(kernel='rbf')
clf = svclassifier_rbf.fit(X_train, y_train)
from sklearn.metrics import classification_report, confusion_matrix
print(confusion_matrix(y_test,y_pred_A_rbf))
print(classification_report(y_test,y_pred_A_rbf)
)
謝謝你,尼米什
我沒有看到代碼的交叉驗證部分。 假設您已經完成了,它看起來像這樣:
from sklearn.model_selection import KFold
from sklearn.svm import SVC
kf = KFold(n_splits = 5, shuffle = True)
for train_index, test_index in kf.split(X):
X_train, X_test = X[train_index], X[test_index]
y_train = y_true[train_index]
svclassifier_rbf = SVC(kernel='rbf')
svclassifier_rbf.fit(X_train, y_train)
###### NEXT LINE NEEDED #######
y_pred_A_rbf[test_index] = svclassifier_rbf.predict(X_test)
您的代碼中缺少的是svclassifier_rbf.predict(X_test)
這用於預測您的課程。 現在,您可以獲取變量y_pred_A_rbf
的值,並將其傳遞給混淆矩陣,以讀取“真肯定”,“真否定”,“假肯定”和“假否定”。 Python中的典型混淆矩陣可以映射到下圖:
既然您有了兩個實際標簽和預測標簽數組,則可以執行以下操作: 如果實際標簽和預測標簽為true,或者換句話說為1,則它們是真實的正數並且已正確分類 ,類似地,您可以接下來是真陰性,假陽性和假陰性,以研究哪些記錄已正確預測或錯誤分類。
例如,如果您想知道哪些記錄已正確分類為肯定類(在這種情況下,我們可以假設是有缺陷的),則可以執行以下操作:
tp = np.where((y_true == 1) & (y_pred == 1), 'True Positive', 'Else')
現在,您將獲得已正確分類為肯定類的所有記錄的索引。
如果您正在處理分類問題,只是為了測試模型的准確性和行為,
from sklearn.metrics import accuracy_score
accuracy_score(y_test,clf.predict(your_X_test))
請參閱我的git鏈接以獲取文檔分類,我在tfidf / count矢量化器功能之上使用了朴素貝葉斯。
希望這對您的文檔分類有幫助
您可以使用以下代碼獲取預測為缺陷的記錄。 我假設X_test是您的測試輸入數據。
print(X_test[y_pred_A_rbf==1])
您有很多方法可以測試y_pred的准確性。 基本上,您需要匹配y_pred和y_test。 如果您是該領域的新手,並且在解釋混淆矩陣和報告時遇到問題,則只需在CSV文件中打印y_pred並將其與y_test進行比較即可。 這將為您提供方案的實際情況。
np.savetxt("filename.csv",y_pred,delimiter=",",fmt="%.5f")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.