簡體   English   中英

在python中提取SVM模型的分類

[英]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中的典型混淆矩陣可以映射到下圖:

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矢量化器功能之上使用了朴素貝葉斯。

使用MultinomialNB進行文檔分類

希望這對您的文檔分類有幫助

您可以使用以下代碼獲取預測為缺陷的記錄。 我假設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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM