ML之SVM:基于sklearn的svm算法实现对支持向量的数据进行标注-阿里云开发者社区

开发者社区> 人工智能> 正文
登录阅读全文

ML之SVM:基于sklearn的svm算法实现对支持向量的数据进行标注

简介: ML之SVM:基于sklearn的svm算法实现对支持向量的数据进行标注

输出结果

image.png

实现代码


import numpy as np

import matplotlib.pyplot as pl  #python中的绘图模块

from pylab import show

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]]  #随机生成左下方20个点,右上方20个点

Y = [0]*20+[1]*20  #将前20个归为标记0,后20个归为标记1

#建立模型

clf = svm.SVC(kernel='linear')

clf.fit(X,Y)  #传入参数

#画出建立的超平面

w = clf.coef_[0]  #取得w值,w中是二维的

a = -w[0]/w[1]  #计算直线斜率

xx = np.linspace(-5,5)   #随机产生连续x值

yy = a*xx-(clf.intercept_[0])/w[1]   #根据随机x得到y值

#计算与直线相平行的两条直线

b = clf.support_vectors_[0]

yy_down = a*xx+(b[1]-a*b[0])

b = clf.support_vectors_[-1]

yy_up = a*xx+(b[1]-a*b[0])

print('w:',w)

print('a:',a)

print('support_vectors:',clf.support_vectors_)

print('clf.coef_',clf.coef_)

#画出三条直线

pl.plot(xx,yy,'k-')  

pl.plot(xx,yy_down,'k--')

pl.plot(xx,yy_up,'k--')

pl.scatter(clf.support_vectors_[:,0],clf.support_vectors_[:,1],s=100,c="g")  #,facecolors='none',zorder=10

pl.scatter(X[:,0],X[:,1],c=Y, cmap=pl.cm.Paired)

pl.axis('tight')

pl.title('The bold circle is the support vector')

pl.show()



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
人工智能
使用钉钉扫一扫加入圈子
+ 订阅

了解行业+人工智能最先进的技术和实践,参与行业+人工智能实践项目

其他文章
最新文章
相关文章