要使用Python绘制支持向量机(SVM)的图像,你可以按照以下步骤进行:
1. 导入必要的库。
2. 创建虚拟数据集。
3. 划分数据集为训练集和测试集。
4. 训练SVM模型。
5. 获取分隔超平面和支持向量。
6. 绘制分隔超平面和支持向量。
下面是一个简单的示例代码,展示了如何使用Python绘制一个线性核SVM的图像:
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
创建虚拟数据集
np.random.seed(0)
X = np.r_[np.random.randn(20, 2) - [2, 2], np.random.randn(20, 2) + [2, 2]]
Y = * 20 + * 20
划分数据集为训练集和测试集(这里省略了这一步,直接训练模型)
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.3, random_state=42)
训练SVM模型
clf = svm.SVC(kernel='linear')
clf.fit(X, Y)
获取分隔超平面和支持向量
w = clf.coef_
a = -w / w
xx = np.linspace(-5, 5)
yy = a * xx - (clf.intercept_) / w
绘制分隔超平面
plt.plot(xx, yy, 'k-')
绘制通过支持向量的平行线
b = clf.support_vectors_
yy_down = a * xx + (b - a * b)
b = clf.support_vectors_[-1]
yy_up = a * xx + (b - a * b)
plt.plot(xx, yy_down, 'k--')
plt.plot(xx, yy_up, 'k--')
绘制支持向量
plt.scatter(b, b, c='red', marker='x')
plt.scatter(clf.support_vectors_[:, 0][Y == 0], clf.support_vectors_[:, 1][Y == 0], c='blue', marker='o')
plt.scatter(clf.support_vectors_[:, 0][Y == 1], clf.support_vectors_[:, 1][Y == 1], c='green', marker='s')
设置坐标轴范围
plt.xlim(-5, 5)
plt.ylim(-5, 5)
显示图像
plt.show()
这段代码首先生成了一个线性可分的数据集,然后用线性核训练了一个SVM模型。之后,它计算了分隔超平面,并绘制了分隔超平面以及通过支持向量的两条平行线。最后,它标记了支持向量以及不同类别的数据点。
请注意,这个示例使用了线性核,但你可以通过改变`kernel`参数来尝试不同的核函数,如`poly`、`rbf`或`sigmoid`。