当前位置:   article > 正文

python3 svm实现_svm 完整代码示例 python3

svm 完整代码示例 python3

1,在svm向量机中我们要找到一个相平面来对数据进行分类;而这个相平面应该怎么样选择呢?
在这里插入图片描述
现在我们给出两个相平面的分类图看看,而我们需要找到相平面法中边际最大的一个。
在这里插入图片描述
在这里插入图片描述那么我们怎么样来找到这个相平面函数方程呢?
我们可以定义一个向量方程WX +b =0,而在这个例子中我们用到一个二维平面,及方程可以是w0+w1x1+w2x2=0(此方程就是上面larg margin里面的那条实线方程)。
而在上面实线下面的方程可以表示为:w0+w1x1+w2x2<0,而实线上面的方程可以表示为:w0+w1x1+w2x2>0.
为了统一调节weight,我们引入yi(+1或-1),从而将公式统一成一个公式:
在这里插入图片描述
在这里插入图片描述
因此我们来用数学建模的方法来求解最优解吧!
在这里插入图片描述所以我们用求解直线间的距离公式来求解这两条直线(w
x+b=0和w*x+b=c的距离):两条平行直线之间的距离:(我们换中方法来求解两条直线之间的距离,定义直线的方程为L1:Ax+By+c1=0,L2:Ax+By+c2=0;故两直线之间的距离为:
在这里插入图片描述
从而我们总结一下公式如下:
在这里插入图片描述
所以我们可以得到如下的总结:
约束条件和目标函数:
在这里插入图片描述
构建拉格朗日数乘法来求解最优值:待补充:

2,我们来举一个简单例子来说明一下:
在这里插入图片描述代码实现如下:simplesvm.py

from sklearn import svm
x = [[2, 0], [1, 1], [2, 3]]
y = [0, 0, 1]
#调用svm的分类器函数
clf = svm.SVC(kernel = 'linear')
#建立模型
clf.fit(x, y)
print(clf)
# get support vectors
print( clf.support_vectors_)
# get indices of support vectors
print( clf.support_)
# get number of support vectors for each class
print (clf.n_support_)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

运行结果如下:
在这里插入图片描述
结果说明:SVC就是clf的打印;
[[1,1],[2,3]]是满足svm的值,[1 2]表明支持向量机的下标点[1 2]表明找到第2和3个点满足。
[1 1]表示找到了几个支持向量,相平面上面一个,下面一个。
测试:
代码最后一行加入:

print(clf.predict([[1,1]]))
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/140903
推荐阅读
相关标签
  

闽ICP备14008679号