这是一道在面试中被问到的题目,比较晕,今天做了实验只是get了结果先记录一下,具体原因探索清楚再补充
【问题】
- 当样本点整体copy一份会改变SVM的预测吗
- 仅正/负样本点整体copy一份会改变SVM的预测吗
【实验】
```python
from sklearn import svm
# 测试数据
X = [[-2, 0], [0, 0], [0, 1], [1, 0]] # training samples
y = [0, 0, 1, 1] # training target
# 线性SVM
sv = svm.SVC(kernel='linear') # class
sv.fit(X, y) # training the svc model
# 支持向量
data3=sv.support_vectors_
print(data3)
#画分类线图,支持向量机
import numpy as np
import matplotlib.pyplot as plt
#正样本 & 负样本
data1 = np.asarray(X)[np.nonzero(np.asarray(y) > 0)[0], :]
data2 = np.asarray(X)[np.nonzero(np.asarray(y) <= 0)[0], :]
plt.plot(np.asarray(data1)[:, 0], np.asarray(data1)[:, 1], 'ro')
plt.plot(np.asarray(data2)[:, 0], np.asarray(data2)[:, 1], 'bo')
plt.plot(np.asarray(data3)[:, 0], np.asarray(data3)[:, 1], 'xk')
x = np.arange(-3.0, 3.0, 0.1)
w1 = sv.coef_[0, 0]
w2 = sv.coef_[0, 1]
y = (w1 * x + sv.intercept_) / (-w2)
print(w1 / (-w2), sv.intercept_/ (-w2))
plt.plot(x, y,'black')
结果:四个点都是支持向量,y=-x - 0.5
改变Xy为所有数值均copy
X = [[-2, 0], [0<