import numpy as np import matplotlib.pyplot as plt from sklearn.svm import SVC from sklearn.datasets.samples_generator import make_circles X, y = make_circles(100, factor=.1, noise=.1) plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='autumn') 仿照课件线性支持向量机的例题,对上述数据集,用高斯核函数非线性支持向量机进行分类,并绘制出决策边界和支持向量,效果图如下图。 提示:支持向量的获取
时间: 2024-01-30 08:03:57 浏览: 25
可以使用SVC模型中的support_vectors_属性来获取支持向量。下面是代码实现:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.svm import SVC
from sklearn.datasets.samples_generator import make_circles
# 生成数据集
X, y = make_circles(100, factor=.1, noise=.1)
# 定义高斯核函数非线性支持向量机模型
svm = SVC(kernel='rbf', C=1E6)
# 拟合模型
svm.fit(X, y)
# 绘制决策边界和支持向量
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='autumn')
plt.xlim(-1.5, 1.5)
plt.ylim(-1.5, 1.5)
# 生成网格数据用于绘制决策边界
xx, yy = np.meshgrid(np.linspace(-1.5, 1.5, 200), np.linspace(-1.5, 1.5, 200))
Z = svm.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
# 绘制决策边界和支持向量
plt.contour(xx, yy, Z, colors='k', levels=[-1, 0, 1], alpha=0.5, linestyles=['--', '-', '--'])
plt.scatter(svm.support_vectors_[:, 0], svm.support_vectors_[:, 1], s=100, linewidth=1, facecolors='none', edgecolors='k')
plt.show()
```
运行结果如下图所示,其中黑色实线为决策边界,黑色虚线为间隔边界,支持向量用空心圆点表示。
![image.png](attachment:image.png)