划分训练集和测试集

  1. from sklearn.model_selection import train_test_split
  2. x_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%的数据对向量机模型进行训练。


  1. from sklearn.svm import SVC
  2. clf = svm.SVC(kernel='linear') //其中核函数可以选择线性核、多项式核、高斯核、sig核,分别用linear、poly、rbf、sigmoid表示,默认情况下选择高斯核。本题使用线性核函数
  3. clf.fit(x_train,y_train)//调用svm中的fit()方法进行训练。
  4. rv=clf.score(x, y); 调用svm中的score()方法,考查训练效果。
  5. 此时的rv为模型准确率(针对训练数据)
  6. y1=clf.predict(x_test)//对测试数据进行预测,并获得预测结果
  7. r=y1-y_test//预测值与真实值相减
  8. 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 **********#

更多推荐