簡體   English   中英

一個 class SVM 玩具例子看不懂

[英]One class SVM toy example not understood

我一直在玩弄一台 class SVM。 我想我理解它背后的理論(它試圖將數據與來源分開)。 我試圖運行一個算法應該完全適合的玩具示例; 但是,我似乎遺漏了一些東西,因為該算法並未將所有訓練示例都歸類為非異常。 代碼:

import numpy as np
from sklearn import svm
import matplotlib.pyplot as plt
import matplotlib.font_manager

xx, yy = np.meshgrid(np.linspace(-5, 5, 500), np.linspace(-5, 5, 500))

x = np.array([1, 3, 1, 3, 2])
y = np.array([1, 1, 3, 3, 2])
feature = np.vstack((x, y)).T
clf = svm.OneClassSVM(nu=0.1, kernel="rbf", gamma=0.1)
clf.fit(feature)
y_pred_train = clf.predict(feature)
Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()]) 
Z = Z.reshape(xx.shape)
print(y_pred_train)
print(feature)
plt.title("Novelty Detection")
plt.contourf(xx, yy, Z, levels=np.linspace(Z.min(), 0, 7), cmap=plt.cm.PuBu)
a = plt.contour(xx, yy, Z, levels=[0], linewidths=2, colors='darkred')
plt.contourf(xx, yy, Z, levels=[0, Z.max()], colors='palevioletred')

b1 = plt.scatter(feature[:, 0], feature[:, 1], c='white', s=40, 
edgecolors='k')

plt.show()

對訓練集的預測是[1 -1 1 1 1],這沒有意義。

請指教。

一個 Class SVM 在您的數據集中至少有一個異常值(異常)。 這就是為什么您會在預測標簽中看到一個“錯誤”的 label。

暫無
暫無

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

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