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-02-03 12:04:26 浏览: 103
可以使用SVC模型的属性support_vectors_来获取支持向量,代码如下:
```
# 定义高斯核函数的SVC模型
clf = SVC(kernel='rbf')
# 训练模型并进行预测
clf.fit(X, y)
y_pred = clf.predict(X)
# 绘制决策边界和支持向量
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='autumn')
plt.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=150, facecolors='none', edgecolors='black')
plt.axis('tight')
# 构建坐标矩阵,并对每个坐标进行预测
xx, yy = np.meshgrid(np.linspace(-1.5, 1.5, 100), np.linspace(-1.5, 1.5, 100))
Z = clf.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.show()
```
运行上述代码,即可得到决策边界和支持向量的效果图。
相关问题
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')对上述数据集,用高斯核函数非线性支持向量机进行分类,并绘制出决策边界和支持向量
代码如下:
```python
# 构造高斯核函数
def gaussian_kernel(x1, x2):
sigma = 0.1
return np.exp(-np.sum((x1 - x2) ** 2) / (2 * sigma ** 2))
# 定义模型并训练
svm = SVC(kernel=gaussian_kernel)
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)
ax = plt.gca()
x_vals = np.linspace(-1.5, 1.5, 50)
y_vals = np.linspace(-1.5, 1.5, 50)
z_vals = np.zeros((50, 50))
for i, xi in enumerate(x_vals):
for j, yj in enumerate(y_vals):
z_vals[i, j] = svm.predict(np.array([[xi, yj]]))
ax.contour(x_vals, y_vals, z_vals, levels=[-0.5, 0.5], linestyles=['--', '-'])
plt.scatter(svm.support_vectors_[:, 0], svm.support_vectors_[:, 1], s=100, linewidth=1, facecolors='none')
plt.show()
```
结果如下图所示:
![svm_decision_boundary](https://img-blog.csdn.net/20180912223456144?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p5eHVhbmdfMjAxOF8x/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80)
解释如下代码:import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.datasets import make_regression from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.metrics import mean_squared_error
这段代码是导入了一些 Python 的第三方库,其作用如下:
1. `numpy`:Python 数组计算库,提供了高效的数组运算功能。
2. `matplotlib.pyplot`:Python 绘图库,用于绘制图形和数据可视化。
3. `sklearn.linear_model`:Scikit-Learn 库中的线性回归模型。
4. `sklearn.datasets`:Scikit-Learn 库中的数据集生成工具。
5. `sklearn.model_selection`:Scikit-Learn 库中的模型选择工具,用于数据集的分割、交叉验证等操作。
6. `sklearn.preprocessing`:Scikit-Learn 库中的数据预处理工具,用于数据标准化、归一化等操作。
7. `sklearn.metrics`:Scikit-Learn 库中的性能评估工具,用于计算模型的性能指标,如均方误差等。
这些库都是数据分析和机器学习中常用的工具,可以帮助我们更加方便地进行数据处理和模型构建。
阅读全文