课后作业:建立算法的管道模型

作者:欧新宇(Xinyu OU)

本文档所展示的测试结果,均运行于:Intel Core i7-7700K CPU 4.2GHz

【作业提交】

将分类结果保存到文本文档进行提交(写上每一题的题号和题目,然后再贴答案),同时提交源代码。

  1. 测试结果命名为: ex11-结果-你的学号-你的姓名.txt
  2. 源代码命名为: ex1101-你的学号-你的姓名.py

*结果文件,要求每小题标注题号,两题之间要求空一行*


  • 要求在 "乳腺癌" 数据集(breast_cancer)上完成以下任务,要求如下:
    1. 要求训练集验证集的分割比例为:70%:30%
    2. 使用StratifiedKFold算法进行分层3折交叉验证
    3. 所有算法的随机参数 random_state=8
    4. 结果保留3位小数
    5. 输出训练集和测试集的预测结果
    6. 要求在网格搜索中测试两种预处理算法:StandardScaler(), MinMaxScaler()
    7. 要求在网格搜索中测试两种分类算法:神经网络MLPClassifier和高斯贝叶斯GaussianNB。两种算法要求测试以下参数:
      • MLP需要搜索的参数列表为:
        • alpha: [1e-6, 5e-5, 1e-5, 5e-4, 1e-4, 5e-3, 1e-3, 5e-2, 1e-2],
        • hidden_layer_sizes: [[20], [50], [100], [150], [200], [10, 10],[20, 20],[50, 50]]}
      • 高斯贝叶斯需要搜索的参数列表为:
        • var_smoothing: np.logspace(-15,10,26)

提示

  1. 在训练集上训练模型,并使用交叉验证网格搜索获取最优参数
  2. 使用最优模型(或最优参数)在训练验证集上重新进行训练生成最终模型
  3. 输出训练验证集上的评分和测试集上的评分

对于乳腺癌数据集有如下操作提示:

  • 可以使用 print(cancer.keys()) 查看肿瘤数据集包含哪些字段
  • 使用 print(cancer['字段']) 观察该字段的内容,例如使用 print(cancer['data']) 查看数据的信息

1. 载入MNIST数据集

2. 使用管道模型和网格搜索选择最优模型

3. 保持参数不变,在训练验证集上重新训练,并输出结果