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

支持向量机实现分类案例

作者头像
用户3577892
发布2020-06-11 12:20:23
7850
发布2020-06-11 12:20:23
举报
文章被收录于专栏:数据科学CLUB数据科学CLUB

导入数据数据处理构建模型结果评估

导入数据

代码语言:javascript
复制
#从sklearn.datasets里导人手写体数字加载器。
from sklearn.datasets import load_digits
#从通过数据加载器获得手写体数字的数码图像数据并储存在digits变量中。
digits = load_digits()
#检视数据规模和特征维度。
digits.data.shape
代码语言:javascript
复制
(1797, 64)

输出表明:该手写体数字的数码图像数据共有1797条,并且每幅图片是由8X8=64的像素矩阵表示。在模型使用这些像素矩阵的时候,我们习惯将2D的图片像素矩阵逐行首尾拼接为1D的像素特征向量。这样做也许会损失-些数据本身的结构信息。

数据处理

  • 分割测试集和训练集

对于没有直接提供测试样本的数据,都要通过数据分割获取75%的训练样本和25%的测试样本,代码如下:

代码语言:javascript
复制
#从sklearn.cross validation中导人train test_ split 用于数据分割。
from sklearn.cross_validation import train_test_split
#随机选取75%的数据作为训练样本;其余25%的数据作为测试样本。
x_train, x_test, y_train, y_test = train_test_split (digits.data, digits.
target, test_size = 0.25, random_state = 33)
#分别检视训练与测试数据规模。
y_train.shape
代码语言:javascript
复制
(1347,)
代码语言:javascript
复制
y_test.shape
代码语言:javascript
复制
(450,)

构建模型

  • 使用支持向量机对手写体数字图像进行识别
代码语言:javascript
复制
#从sklearn. preprocessing里导人数据标准化模块。
from sklearn.preprocessing import StandardScaler
#从sklearn.svm里导人基于线性假设的支持向量机分类器LinearSVC.
from sklearn.svm import LinearSVC
#从仍然需要对训练和测试的特征数据进行标准化。
ss = StandardScaler ()
x_train = ss.fit_transform(x_train)
x_test = ss.transform(x_test)
#初始化线性假设的支持向量机分类器LinearSVC.
lsvc = LinearSVC()
#进行模型训练
lsvc.fit(x_train, y_train)
#利用训练好的模型对测试样本的数字类别进行预测,预测结果储存在变量y_predict中。
y_predict = lsvc.predict (x_test)

结果评估

使用准确性、召回率、精确率和F1指标,这4个测度对支持向量机模型从事手写体数字图像识别任务进行性能评估。

代码语言:javascript
复制
#使用模型自带的评估函数进行准确性测评。
print('The Accuracy of Linear SVC is', lsvc.score (x_test, y_test))
代码语言:javascript
复制
The Accuracy of Linear SVC is 0.9533333333333334
代码语言:javascript
复制
#依然使用sklearn .metrics里面的classification_ report 模块对预测结果做更加详细的分析。
from sklearn .metrics import classification_report
print (classification_report(y_test, y_predict, target_names = digits.target_names.astype (str)))
代码语言:javascript
复制
             precision    recall  f1-score   support

          0       0.92      1.00      0.96        35
          1       0.96      0.98      0.97        54
          2       0.98      1.00      0.99        44
          3       0.93      0.93      0.93        46
          4       0.97      1.00      0.99        35
          5       0.94      0.94      0.94        48
          6       0.96      0.98      0.97        51
          7       0.92      1.00      0.96        35
          8       0.98      0.84      0.91        58
          9       0.95      0.91      0.93        44

avg / total       0.95      0.95      0.95       450

在这里需要进一步指出的是:召回率、准确率和F1指标最先适用于二分类任务;但是在本示例中,分类目标有10个类别,即0~9的10个数字。因此无法直接计算上述三个指标。通常的做法是,逐一评估某个类别的这三个性能指标:把所有其他的类别看做阴性(负)样本,这样一来,就创造了10个二分类任务。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据科学CLUB 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导入数据
  • 数据处理
  • 构建模型
  • 结果评估
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档