支持向量机二分类画图
时间: 2023-08-12 20:03:42 浏览: 87
支持向量机二分类
当使用支持向量机(SVM)进行二分类时,可以通过绘制决策边界来可视化分类结果。下面是一个简单的示例代码,用于绘制线性可分离的二分类数据集的SVM决策边界:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
# 创建线性可分离的二分类数据集
X = np.array([[1, 2], [2, 1], [2, 3], [3, 2]])
y = np.array([0, 0, 1, 1])
# 创建SVM分类器对象
clf = svm.SVC(kernel='linear')
# 训练模型
clf.fit(X, y)
# 绘制决策边界
# 确定坐标轴的范围
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
# 生成网格点坐标
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),
np.arange(y_min, y_max, 0.02))
# 预测网格点的标签
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
# 绘制决策边界和训练样本点
plt.contourf(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired)
# 设置坐标轴标签和标题
plt.xlabel('X1')
plt.ylabel('X2')
plt.title('SVM Classification')
# 显示图形
plt.show()
```
上述代码中,首先创建了一个线性可分离的二分类数据集(X和y)。然后,使用`svm.SVC`创建了一个SVM分类器对象,并使用`fit`方法对模型进行训练。接下来,通过生成网格点坐标和预测网格点的标签,绘制了决策边界和训练样本点。最后,通过调用`show`方法显示图形。
请注意,以上示例代码仅适用于线性可分离的数据集。对于非线性可分离的数据集,可以使用不同的SVM核函数(例如多项式核函数或高斯核函数)来绘制决策边界。
阅读全文