用线性核函数的支持向量机分类器画图
时间: 2023-10-18 19:25:19 浏览: 89
下面是使用线性核函数的支持向量机分类器画图的Python代码示例:
```python
import matplotlib.pyplot as plt
from sklearn import svm
import numpy as np
# 构造训练数据
X_train = np.array([[0, 0], [1, 1], [1, 0], [0, 1]])
y_train = np.array([0, 0, 1, 1])
# 定义SVC模型
svc = svm.SVC(kernel='linear')
# 训练模型
svc.fit(X_train, y_train)
# 绘制决策边界
w = svc.coef_[0]
a = -w[0] / w[1]
xx = np.linspace(-0.5, 1.5)
yy = a * xx - (svc.intercept_[0]) / w[1]
margin = 1 / np.sqrt(np.sum(svc.coef_ ** 2))
yy_down = yy - np.sqrt(1 + a ** 2) * margin
yy_up = yy + np.sqrt(1 + a ** 2) * margin
# 绘制数据点和决策边界
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=plt.cm.Paired)
plt.plot(xx, yy, 'k-')
plt.plot(xx, yy_down, 'k--')
plt.plot(xx, yy_up, 'k--')
# 设置图像标题和坐标轴标签
plt.title("Linear SVM")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
# 显示图像
plt.show()
```
在这个示例中,我们首先构造了训练数据`X_train`和`y_train`,其中`X_train`是一个4行2列的矩阵,每行代表一个数据点的特征,`y_train`是一个1维数组,代表每个数据点的类别。接下来,我们定义了一个SVC模型,并将其拟合到训练数据上。然后,我们使用训练好的模型绘制出决策边界。具体来说,我们首先计算出超平面的斜率和截距,然后根据这些参数绘制出超平面和支持向量所构成的线段。最后,我们使用`plt.scatter`函数绘制出数据点,并设置图像标题和坐标轴标签,最终将图像显示出来。
阅读全文