前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习——支持向量机

机器学习——支持向量机

作者头像
py3study
发布2020-01-19 15:59:04
2810
发布2020-01-19 15:59:04
举报
文章被收录于专栏:python3python3

SVM就是试图把棍放在一堆球中的最佳位置,好让在棍的两边有尽可能大的间隙。这个间隙就是球到棍的距离。

  • 支持向量机:找到分类界面,使支持向量间的间隔最大,支持向量到分割界面的距离最小
  • 支持向量是通过到分割界面距离最小的点的向量,且两向量间的距离最大,在二维中其实就是点
  • 取支持向量间的最大间隔是为了若当再添加一个点到一类中,最大间隔可以容许,仍然可以进行有效分割
  • 支持向量到分割界面(决策面)距离最小意思是这些点最为接近

导入类库

代码语言:javascript
复制
1 from sklearn.datasets import load_digits
2 from sklearn.metrics import classification_report
3 from sklearn.model_selection import train_test_split
4 from sklearn.preprocessing import StandardScaler
5 from sklearn.svm import LinearSVC
6 import numpy as np
7 import matplotlib.pyplot as plt

代码

代码语言:javascript
复制
 1 def hw_recognition():
 2     digits = load_digits()
 3 
 4     X_train, X_test, Y_train, Y_test = train_test_split(digits.data, digits.target, test_size=0.25, random_state=23)
 5 
 6     ss = StandardScaler()
 7     # fit 是实例方法,必须由实例调用
 8     X_train = ss.fit_transform(X_train)
 9     X_test = ss.transform(X_test)
10 
11     lsvc = LinearSVC()
12     lsvc.fit(X_train, Y_train)
13 
14     # 预测测试集数据
15     # Y_predict = lsvc.predict(np.array([X_test[90]]))
16     # print(Y_predict)
17 
18     # 生成评估报告
19     # 精确率precision = 正正 / (正正 + 反正)
20     # 按列计算
21     #
22     # 召回率recall = 正正 / (正正 + 正反)
23     # 按行计算
24     # 按行解释正反:正正-真正的正例预测为正例;正反-真正的正例预测为反例
25     #            反正-真正的反例预测为正例;反正-真正的反例预测为正例
26     Y_predict = lsvc.predict(X_test)
27     print(classification_report(Y_test, Y_predict, target_names=digits.target_names.astype(str)))
28 
29     # 对比预测的数字与原图像中的数字
30     # Y_predict = lsvc.predict(np.array([digits.data[307]]))
31     # plt.imshow(digits.images[307])
32     # print(Y_predict)
33     # plt.show()

解析

代码语言:javascript
复制
 1 真实数据       预测数据
 2 ---------------------------
 3            18正     12反   
 4  20正      12正正    8正反  
 5  10反       6反正    4反反  
 6 ---------------------------
 7 
 8 精确率precision = 正正/(正正+反正)            按列计算
 9 
10 召回率recall = 正正/(正正+正反)            按行计算

运行结果

代码语言:javascript
复制
精确率      召回率
             precision    recall  f1-score   support

          0       1.00      1.00      1.00        37
          1       0.86      0.90      0.88        48
          2       1.00      0.98      0.99        46
          3       0.91      0.98      0.94        41
          4       1.00      0.96      0.98        49
          5       0.91      0.98      0.94        50
          6       0.98      0.98      0.98        41
          7       0.92      0.95      0.93        37
          8       0.93      0.89      0.91        46
          9       1.00      0.91      0.95        55

avg / total       0.95      0.95      0.95       450
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导入类库
  • 代码
  • 解析
  • 运行结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档