一类SVM在sklearn中的奇怪行为

时间:2015-05-13 16:15:58

标签: python matplotlib scikit-learn

我在个人数据集上使用一个类SVM。 这是我正在使用的代码:

pca = PCA(n_components=2).fit(X0)
X_pca = pca.transform(X0)




X = X_pca

X = X/X.max()
X = sk.preprocessing.scale(X)

n_new = 1641
n_normal = 500
x_normal = X[:n_normal]
x_new = X[:n_new]

n, p = X.shape
svm = OneClassSVM(kernel='rbf', degree=2, gamma=0.0, coef0=0.0, tol=0.001, 
                  nu=.1, shrinking=True, cache_size=200, verbose=False, 
                  max_iter=-1, random_state=None)
svm.fit(x_normal)
anomaly = svm.predict(x_new)
anomaly_score = - svm.decision_function(x_new)
anomaly_normal = svm.predict(x_normal)
anomaly_score_normal = - svm.decision_function(x_normal)


xx1, yy1 = np.meshgrid(np.linspace(-2, 2, 1000), np.linspace(-2, 2, 1000))

Z1 = svm.decision_function(np.c_[xx1.ravel(), yy1.ravel()])
Z1 = Z1.reshape(xx1.shape)

nrow = 2
i = 1
plt.subplot(nrow, 1, i)
plt.scatter(x_normal[:, 0], x_normal[:, 1], c=anomaly_score_normal)
plt.colorbar()
plt.contour( xx1, yy1, Z1, levels=[0], linewidths=2, cmap=plt.cm.Paired)
i += 1
plt.subplot(nrow, 1, i)
plt.scatter(x_new[:, 0], x_new[:, 1], c=anomaly_score)
plt.colorbar()
plt.contour( xx1, yy1, Z1, levels=[0], linewidths=2, cmap=plt.cm.Paired)
plt.show()

我得到的情节如下: enter image description here

我不明白为什么地块左下方的点是用蓝色着色的,而这些点距决策边界的距离远远大于某些黄点的距离。

我做错了吗?

0 个答案:

没有答案