第2关:基于全像素特征的手写体图像识别模型
·
划分训练集和测试集
from sklearn.model_selection import train_test_splitx_train,x_test,y_train,y_test=train_test_split(X,Y,test_size=0.2,random_state=4)
把X,Y分别随机划分为训练集和测试集,训练集占总数据的80%,测试集占20%。共4个数据集。(test_size为测试集所占的比例)
构建支持向量机分类模型
构建支持向量机分类模型,利用随机分配的80%的数据对向量机模型进行训练。
from sklearn.svm import SVCclf = svm.SVC(kernel='linear') //其中核函数可以选择线性核、多项式核、高斯核、sig核,分别用linear、poly、rbf、sigmoid表示,默认情况下选择高斯核。本题使用线性核函数clf.fit(x_train,y_train)//调用svm中的fit()方法进行训练。rv=clf.score(x, y); 调用svm中的score()方法,考查训练效果。此时的rv为模型准确率(针对训练数据)y1=clf.predict(x_test)//对测试数据进行预测,并获得预测结果r=y1-y_test//预测值与真实值相减v=len(r[r==0])/len(y1)//预测值与真实值相减为0,即预测准确,即测试机预测准确值
编程要求
根据提示,在右侧编辑器补充代码,按照任务要求获取数据,划分数据,利用支持分类向量机输出模型的准确率和测试集的预测准确率。
开始你的任务吧,祝你成功!
# -*- coding: utf-8 -*-
#在上一关的基础上,对手写体图像像素数据集和图像标签数据集,
#按80%训练和20%测试进行随机划分,构建支持向量机分类模型(线性核函数),
#返回模型的准确率rv和测试集的预测准确率v。
#1 读取数据
def return_values():
import sklearn.datasets
a=sklearn.datasets.load_digits()
#2 提取数据
X=a.data
Y=a.target
#3 划分测试集和训练集
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(X,Y,test_size=0.2,random_state=4)
#4构建支持向量机模型
from sklearn.svm import SVC
svm_clf = SVC(kernel='linear') #其中核函数可以选择线性核、多项式核、高斯核、sig核,分别用linear、poly、rbf、sigmoid表示,默认情况下选择高斯核。本题使用线性核函数
svm_clf.fit(x_train,y_train)#调用svm中的fit()方法进行训练。
rv=svm_clf.score(X, Y)
y1=svm_clf.predict(x_test)#对测试数据进行预测,并获得预测结果
r=y1-y_test#预测值与真实值相减
v=len(r[r==0])/len(y1)#预测值与真实值相减为0,即预测准确,即测试机预测准确值
return (rv,v)
#********** End **********#
更多推荐


所有评论(0)