当前位置:   article > 正文

SVM 支持向量机,如何寻找超平面的_支持向量机超平面的确定

支持向量机超平面的确定

SVM 支持向量机,如何寻找超平面的?

1.SVM概念

支持向量机(Support Vector Machine, SVM)是一种二分类模型,目标是寻找一个标准(称为超平面)对样本数据进行分割,分割的原则是确保分类最优化(类别之间的间隔最大)。

 

 

1.1 分类

下图绿色和黄色,红色可以基本建红色和黄色划分开

用到CV2的向量机模块

2.1 cv2.ml.SVM_create 来生成用于后续训练的空分类器模型

  • cv2函数格式:

svm=cv2.ml.SVM_create() 获取了空分类器svm,对该模型使用svm.train()函数训练数据,

  • 训练规格式为:

trainedResults =svm.train( trainData,trainCowCol,trainLable)

  • trainData,trainCowCol,trainLable,trainedResults 分别为训练数据,训练数据的排列格式,训练标签和训练结果

1.2 生成模拟数据

首先考虑员工一个月某产品销售数量,成绩考虑用100分来表示,那么可用模拟出分数在95分以上的数据为【95-100】为优秀

 销售数量 积分
19595
29494
38580

1.3 代码

  1. import cv2
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. # 第1步 准备数据
  5. # 表现为A级的员工销售成绩,销售积分
  6. a = np.random.randint(95,100, (20, 2)).astype(np.float32)
  7. # 表现为B级的员工销售成绩,销售积分
  8. b = np.random.randint(85,94, (20, 2)).astype(np.float32)
  9. # 合并数据
  10. data = np.vstack((a, b))
  11. data = np.array(data, dtype='float32')
  12. # 第2步 建立分组标签,0代表A级,1代表B级
  13. #aLabel对应着a的标签,为类型0-等级A
  14. aLabel=np.zeros((20,1))
  15. #print(aLabel)
  16. #bLabel对应着b的标签,为类型1-等级B
  17. bLabel=np.ones((20,1))
  18. # 合并标签
  19. label = np.vstack((aLabel, bLabel))
  20. label = np.array(label, dtype='int32')
  21. # 第3步 训练
  22. # 用ml机器学习模块 SVM_create() 创建svm
  23. svm = cv2.ml.SVM_create()
  24. # 属性设置,直接采用默认值即可
  25. svm.setKernel(cv2.ml.SVM_LINEAR) # line
  26. #svm.setC(0.001)
  27. # 训练
  28. result = svm.train(data, cv2.ml.ROW_SAMPLE, label)
  29. # 第4步 预测
  30. # 生成 2个准备预测的结果
  31. testdata = np.random.randint(85,100, (2, 2)).astype(np.float32)
  32. test = np.vstack(testdata)
  33. test = np.array(test, dtype='float32')
  34. # 预测
  35. (p1, p2) = svm.predict(test)
  36. # 第5步 观察结果
  37. # 可视化
  38. plt.scatter(a[:,0], a[:,1], 80, 'g', 'o')
  39. plt.scatter(b[:,0], b[:,1], 80, 'b', 's')
  40. plt.scatter(test[:,0], test[:,1], 80, 'r', '*')
  41. plt.show()
  42. # 预测结果
  43. print(p2)

1.4 运行结果

要训练的数据和待训练的数据通过随机值来训练,svm的值超级飘。还有固定一下训练集合

1.5结论

svm的关键还是训练数据的选择上,如果训练的结果集不好,结果也会到处飘,怎么去好好选择训练集。继续研究

 

 

 

 

 

    

 

 

 

 

 

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

闽ICP备14008679号