[英]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.