SVM算法识别手写体数字
sklearn内部集成了一些手写体数字图片数据集,现在我们使用这些数据,用SVM支持向量机算法进行训练识别的练习。笔者习惯用pycharm,今天手痒,用一下Spyder编辑,顺便对比一下哪一个好用。废话不多说,上码:
#-*- coding:utf-8 -*-
#------导入sklearn里的数据集
from sklearn.datasets import load_digits
digits=load_digits()
print('数据集的数据量及单个数据的大小:',digits.data.shape)
#------训练集和测试集随机分割,25%作为测试集
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)
print('训练集数量:',y_train.shape)
print('测试集数量:',y_test.shape)
#------调用SVM算法训练模型
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC
ss=StandardScaler()
X_train=ss.fit_transform(X_train)
X_test=ss.transform(X_test)
lsvc=LinearSVC()
lsvc.fit(X_train,y_train)
y_predict=lsvc.predict(X_test)
#-------性能评估
print('The accuracy of Linear SVCis:',lsvc.score(X_test,y_test))
from sklearn.metrics import classification_report
print(classification_report(y_test,y_predict,target_names=digits.target_names.astype(str)))
结果如下:
准确率不错的,识别手写体数字准确在95%以上。