支持向量机PYTHON几何间隔
时间: 2023-07-09 13:28:22 浏览: 132
支持向量机(SVM)是一种常见的分类算法,它通过在不同类别之间寻找一个最优的超平面来进行分类。在SVM中,几何间隔是非常重要的概念。
几何间隔指的是超平面到最近的训练样本点的距离。对于一个线性可分的数据集,SVM的目标就是找到一个能够使几何间隔最大化的超平面。
在Python中,可以使用sklearn库中的SVM模块来实现SVM算法,具体可以参考以下代码:
```python
from sklearn import svm
import numpy as np
# 构造数据集
X = np.array([[1, 2], [2, 3], [4, 5], [5, 6]])
y = np.array([1, 1, -1, -1])
# 创建SVM模型
clf = svm.SVC(kernel='linear', C=1000)
# 训练模型
clf.fit(X, y)
# 获取超平面法向量w和偏移b
w = clf.coef_[0]
b = clf.intercept_
# 计算几何间隔
margin = 1 / np.sqrt(np.sum(w ** 2))
# 输出结果
print("w:", w)
print("b:", b)
print("margin:", margin)
```
在上述代码中,我们使用了sklearn库中的SVC类来创建SVM模型,其中kernel参数指定了核函数类型,这里使用的是线性核函数,C参数指定了正则化参数。
训练完成后,我们可以通过clf.coef_和clf.intercept_来获取超平面的法向量w和偏移b,然后根据几何间隔的定义计算出几何间隔。
阅读全文