Python支持向量机(svm手写字体识别实战)

Python⽀持向量机(svm⼿写字体识别实战)⼀、线性可分svm.LinearSVC()
1. 使⽤⽹格搜索法,选择线性可分SVM“类”中的最佳C值
1# 导⼊第三⽅模块
2from sklearn import svm
3import pandas as pd
4from sklearn import model_selection
电算化软件
5from sklearn import metrics
6
7# 读取外部数据
8 Hw = pd.read_csv(r'Handwritten.csv')
9# 数据特征个数
10
11#选取特征列
12 predict = Hw.columns[:1024]
13 Train = Hw[predict]
14# 打印数据前5⾏
15 Train.head()
16
17# 选取标签列
18 label = lumns[1024]]
19print(label.head())
20
21 X_train,X_test,y_train,y_test = ain_test_split(Train,label,test_size=0.25,random_state=123)
22
23# 使⽤⽹格搜索法,选择线性可分SVM“类”中的最佳C值
24 C=[0.05,0.1,0.5,1,2,5]巴彬斯基征
25 parameters = {'C':C}
26 grid_linear_svc = model_selection.GridSearchCV(estimator = svm.LinearSVC(),param_grid =parameters,scoring='accuracy',cv=5,verbose =1) 27# 模型在训练数据集上的拟合
28 grid_linear_svc.fit(X_train,y_train)
29# 返回交叉验证后的最佳参数值
30 grid_linear_svc.best_params_, grid_linear_svc.best_score_
结果:
({'C': 0.05}, 0.9675775822139879)
2.模型训练与预测
1 F_svc = svm.LinearSVC(C=0.05)
2 F_svc.fit(X_train,y_train)
3# 模型在测试集上的预测
4 pred = F_svc.predict(X_test)
5# # 模型的预测准确率
6 metrics.accuracy_score(y_test, pred)
结果:
0.9541666666666667
3.混淆矩阵绘制
1# 导⼊第三⽅模块
2from sklearn import metrics
3# 混淆矩阵
4 cm = fusion_matrix(y_test, pred)
5
颠黑倒白6import seaborn as sns
7import matplotlib.pyplot as plt
8 sns.heatmap(cm,annot = True,cmap = 'GnBu')
9 plt.xlabel(' Real Lable')
10 plt.ylabel(' Predict Lable')
结果:
⼆、⾮线性svm.SVC()
1.使⽤⽹格搜索法,选择⾮线性SVM“类”中的最佳C值与核函数
1# 使⽤⽹格搜索法,选择⾮线性SVM“类”中的最佳C值
2 kernel=['rbf','linear','poly','sigmoid']
3 C=[0.1,0.5,1,2,5]
4 parameters = {'kernel':kernel,'C':C}
5 grid_svc = model_selection.GridSearchCV(estimator = svm.SVC(),param_grid =parameters,scoring='accuracy',cv=5,verbose =1)
6# 模型在训练数据集上的拟合
7 grid_svc.fit(X_train,y_train)
8# 返回交叉验证后的最佳参数值
9 grid_svc.best_params_, grid_svc.best_score_
结果:
({'C': 5, 'kernel': 'rbf'}, 0.9856415006947661)
2.模型训练与预测
1 svm_svc = svm.SVC(C=5,kernel='rbf')
2 svm_svc.fit(X_train,y_train)
3
4# 模型在测试集上的预测
5 pred_svc = grid_svc.predict(X_test)
6# 模型的预测准确率
7 metrics.accuracy_score(y_test,pred_svc)
中长波辐射器结果:
0.9763888888888889改性环氧树脂
3.混淆矩阵绘制
1from sklearn import metrics
2 cm = fusion_matrix(y_test,pred_svc)
3
4import seaborn as sns
5import matplotlib.pyplot as plt
6 sns.heatmap(cm,annot=True,cmap='PuBu_r')
7 plt.xlabel(' Real Lable')
贺州水污染
8 plt.ylabel(' Predict Lable')
结果:
三、总结
在⼿写数字识别上,⾮线性SVC预测的准确率⽐线性可分的要⾼⼀点,在模型选择时,我们可以根据理论知识适当选取合适模型,然后参数调优。

本文发布于:2024-09-24 07:23:45,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/570008.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模型   线性   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议