政策资讯

Policy Information


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

来源: 重庆市软件正版化服务中心    |    时间: 2022-09-19    |    浏览量: 62385    |   

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

目录

输出结果

实现代码


输出结果

实现代码

  1. import numpy as np
  2. import matplotlib.pyplot as pl python中的绘图模块
  3. from pylab import show
  4. from sklearn import svm
  5. np.random.seed(0) 随机固定随机值
  6. X = np.r_[np.random.randn(20,2)-[2,2],np.random.randn(20,2)+[2,2]] 随机生成左下方20个点,右上方20个点
  7. Y = [0]*20+[1]*20 将前20个归为标记0,后20个归为标记1
  8. 建立模型
  9. clf = svm.SVC(kernel='linear')
  10. clf.fit(X,Y) 传入参数
  11. 画出建立的超平面
  12. w = clf.coef_[0] 取得w值,w中是二维的
  13. a = -w[0]/w[1] 计算直线斜率
  14. xx = np.linspace(-5,5) 随机产生连续x值
  15. yy = a*xx-(clf.intercept_[0])/w[1] 根据随机x得到y值
  16. 计算与直线相平行的两条直线
  17. b = clf.support_vectors_[0]
  18. yy_down = a*xx+(b[1]-a*b[0])
  19. b = clf.support_vectors_[-1]
  20. yy_up = a*xx+(b[1]-a*b[0])
  21. print('w:',w)
  22. print('a:',a)
  23. print('support_vectors:',clf.support_vectors_)
  24. print('clf.coef_',clf.coef_)
  25. 画出三条直线
  26. pl.plot(xx,yy,'k-')
  27. pl.plot(xx,yy_down,'k--')
  28. pl.plot(xx,yy_up,'k--')
  29. pl.scatter(clf.support_vectors_[:,0],clf.support_vectors_[:,1],s=100,c="g") ,facecolors='none',zorder=10
  30. pl.scatter(X[:,0],X[:,1],c=Y, cmap=pl.cm.Paired)
  31. pl.axis('tight')
  32. pl.title('The bold circle is the support vector')
  33. pl.show()

评论

QQ咨询 扫一扫加入群聊,了解更多平台咨询
微信咨询 扫一扫加入群聊,了解更多平台咨询
意见反馈
立即提交
QQ咨询
微信咨询
意见反馈