支持向量机(分类)

支持向量机分类器(Support Vector Classifier)是根据训练样本的分布,搜索所有的线性分类器中最佳的那个,有使用过线性分类器的小伙伴们会发现决定直线位置的样本并不是所有训练数据,而是其中两个空间间隔最小的两个不同类别的数据点,我们把这种真正帮助决策最优线性分类模型的数据点叫做“支持向量”。

下面使用Scikit-learn内部集成的手写体数字图片数据集进行编程实现,使用的语言是python3.6版本,集成环境是Anaconda3。

1、手写体数据读取代码

#导入手写体数字加载器
from sklearn.datasets import load_digits
#从加载器中获得手写体数字的数码图像
digits=load_digits()
#检视数据规模和特征维度
digits.data.shape

2、手写体数据分割代码

#手写体数据分割代码
from sklearn.cross_validation import train_test_split
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
y_test.shape

3、使用支持向量机(分类)对手写体数字图像进行识别

#使用支持向量机(分类)对手写体数字图像进行识别
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC

ss=StandardScaler()
X_train=ss.fit_transform(X_train)
X_test=ss.fit_transform(X_test)

lsvc=LinearSVC()
lsvc.fit(X_train,y_train)
y_predict=lsvc.predict(X_test)
4、对模型进行评估

#使用模型自带的评估函数进行准确性测评
print('The Accuracy of Linear SVC is',lsvc.score(X_test,y_test))

#依然使用sklearn.metrics里面的classification_report模块对测试结果做更好的详细分析
from sklearn.metrics import classification_report
print(classification_report(y_test,y_predict,target_names=digits.target_names.astype(str)))

5、结果分析

The Accuracy of Linear SVC is 0.951111111111



    precision    recall  f1-score   support


          0       0.92      1.00      0.96        35
          1       0.95      0.98      0.96        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.83      0.90        58
          9       0.95      0.91      0.93        44


avg / total       0.95      0.95      0.95       450



上面两个是对模型评估的结果,可以知道支持向量机(分类)模型能够提供比较高的手写体数字识别性能。这里需要进一步指出:召回率、准确率和F1指标最先适用于二分类任务,但是本案例中分类目标有10个类别,即0~9这10个数字,因此无法直接计算上面三个指标,通常的做法就是逐一评估某个类别的这三个性能指标,这样一来就相当于创造了10个二分类任务。


本博客内容有参考学习《python机器学习及实践——从零开始通往Kaggle竞赛之路》

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值