簡體   English   中英

一類 SVM,得到所有 -1

[英]One class SVM, got all -1

我正在做一個二進制分類,只為圖像返回“是”或“否”。 因為我只有一個類的圖像,所以我想在“目標”和“異常值”之間進行分類。

例如,我正在對消防員進行分類。 在此處輸入圖片說明

我正在使用 Scikit Learn svm.OneClassSVM() 然而,在訓練模型后,我每次都得到“-1”,即使是預測訓練數據也是如此。

這是我的代碼:

X_train = []
for subdir, dirs, files in os.walk("training"):
    for imagePath in files:
        print ("path = ", imagePath)
        img = Image.open(os.path.join(subdir, imagePath))
        img = img.resize(sample_size, PIL.Image.ANTIALIAS)
        img = np.array(img)
        img = img[:,:,0]
        img = img.reshape(1, img.shape[0]* img.shape[1])
        X_train.append(img[0])

clf = svm.OneClassSVM(nu=0.1, kernel="rbf", gamma=0.1)
clf.fit(X_train)

然后我預測“訓練數據”的結果

print clf.predict (X_train)

但是,我仍然得到所有“-1”。 誰能告訴我出了什么問題?

您可以通過計算分數樣本來設置閾值級別。 例如

clf = OneClassSVM()        
y_scores = clf.score_samples(test)

您需要自己檢查哪個閾值更好。 您可以通過在某些異常類數據上運行模型來檢查這一點,並檢查低於哪個閾值會得到您的答案。 分數樣本越少,離群值越多。

超參數調整最有可能。 伽馬可能應該低很多。

您的訓練示例“img[0]”的最終形狀是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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