第3关:支持向量机分类模型及其应用

任务描述

本关任务:基于关卡2基础上,取数据集前600条记录作为训练数据,后90条记录作为测试数据,构建支持向量机模型,输出其模型准确率和预测准确率。

相关知识

为了完成本关任务,你需要掌握:1.获取数据和数据处理。2.训练样本与测试样本划分。3、支持向量机分类模型构建。

训练样本与测试样本划分

训练用的特征数据用x1表示,预测变量用y1表示,测试样本则分别记为x2和y2。


  1. x1 = x.iloc[:600,:]
  2. y1 = data.iloc[:600,15]
  3. x2 = x.iloc[600:,:]
  4. y2 = data.iloc[600:,15]

输出:

支持向量机分类模型构建

支持向量机分类模型的构建具体步骤如下:


  1. (1)导入支持向量机模块svm。
  2. from sklearn import svm
  3. (2)利用svm创建支持向量机类`svm`。
  4. clf = svm.SVC(kernel='rbf')
  5. 其中核函数可以选择线性核、多项式核、高斯核、sig核,分别用`linear、poly、rbf、sigmoid`表示,默认情况下选择高斯核。
  6. (3)调用svm中的`fit()`方法进行训练。
  7. clf.fit(x, y)
  8. (4)调用svm中的`score()`方法,考查训练效果。
  9. rv=clf.score(x, y); # 模型准确率(针对训练数据)
  10. (5)调用svm中的`predict()`方法,对测试样本进行预测,获得预测结果。
  11. R=clf.predict(x1)

示例如下:


  1. from sklearn import svm
  2. clf = svm.SVC(kernel='rbf')
  3. clf.fit(x, y)
  4. rv=clf.score(x, y);
  5. R=clf.predict(x1)
  6. Z=R-y1
  7. Rs=len(Z[Z==0])/len(Z)
  8. print("模型准确率: " + str(rv))
  9. print("预测准确率:" + str(Rs))

输出:模型准确率: 0.915 预测准确率:0.9111111111111111

编程要求

根据提示,在右侧编辑器补充代码,构建支持向量机模型并输出模型准确率rv和预测准确率Rs

测试说明

在定义的函数内进行编码,注意格式,平台会对你编写的代码进行测试。 开始你的任务吧,祝你成功!


任务代码:

#********** Begin **********#
#在上一关基础,对经过缺失值填充、数值变量标准化后的数据集,取前600条记录作为训练数据,后90条记录作为测试数据
#构建支持向量机模型,返回计算结果模型准确率rv和预测准确率r
def return_values():
    import numpy as np
    from sklearn import svm
    X1=np.load('X1.npy') #经过缺失值填充、数值变量标准化后的数据集,numpy数组690*15
    Y=np.load('Y.npy')   #因变量,numpy数组,690个元素
    x1 = X1[:600,:]     
    y1 = Y[:600]
    x2 = X1[600:,:]     
    y2 = Y[600:]
    clf = svm.SVC(kernel='rbf')  
    clf.fit(x1, y1) 
    rv=clf.score(x1, y1);
    R=clf.predict(x2)
    Z=R-y2
    r=len(Z[Z==0])/len(Z)
    #print("模型准确率: " + str(rv))
    #print("预测准确率:" + str(r))
    return(rv,r)

#********** End **********#

print的注释不要删掉否则通过不了,这是print的结果

模型准确率: 0.8833333333333333
预测准确率:0.8888888888888888
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐