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