Python机器学习及实践(一、分类学习——支持向量机分类器)

Python机器学习及实践(一、分类学习——支持向量机分类器)

支持向量机简介

支持向量机(support vector machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化

代码及注释

输入:

#支持向量机
#导入手写数字识别数据
#type 获取数据类型 dtype获取数组数据类型  astype()修改数据类型
from sklearn.datasets import load_digits
digits=load_digits()
digits.data.shape
from sklearn.model_selection 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)
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC
from sklearn.metrics import classification_report
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)
print('Accuracy of LinearSVC :',lsvc.score(X_test,y_test))
print(classification_report(y_test,y_predict,target_names=digits.target_names.astype(str)))

输出:

Accuracy of LinearSVC : 0.9488888888888889
              precision    recall  f1-score   support

           0       0.92      0.97      0.94        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.90      1.00      0.95        35
           8       0.98      0.83      0.90        58
           9       0.95      0.91      0.93        44

    accuracy                           0.95       450
   macro avg       0.95      0.95      0.95       450
weighted avg       0.95      0.95      0.95       450

知识点

1.支持向量机

在这里插入图片描述
这根红色线代表的超平面抗“扰动”性最好。这个超平面离直线两边的数据的间隔最大,对训练集的数据的局限性或噪声有最大的“容忍”能力。具体细节在原文链接中有详细的讲述。
原文链接:https://blog.csdn.net/b285795298/article/details/81977271

2.from sklearn.datasets import load_digits

2.1.sklearn.datasets

是sklearn中的自定义数据集,其中有自带的一些数据集。具体详情看链接:https://www.cnblogs.com/feffery/p/8686128.html(总结的非常清晰)

2.2.shape

用于检视数据规模以及维度

3.from sklearn.svm import LinearSVC

SVM是二分类器,线性SVM分类是画出一条决策边界,使得到两个类样本的最短距离最大。

SVM直接输出样本的列别,而不是像Logistic回归以及SGD分类那样,输出概率(输出都使用的是score(x_test,y_test))
LinearSVC是实现SVM的一种方法

4.from sklearn.metrics import classification_report

classification_report(y_test,y_predict,target_names=digits.target_names.astype(str)))

precision(P):
精确率,针对预测结果,它表示的是预测为正的样本中有多少是真正的样本。
recall(R):
召回率,针对原来的样本,它表示的是样本中的正例有多少被预测正确了。
f1-score(F1):
是精确度和召回率的一种平均值
该方法的具体理解看链接:https://www.jianshu.com/p/13debf42fdb7
对于metric的其他常用函数见链接:https://blog.csdn.net/akadiao/article/details/78788864

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值