【机器学习】机器学习项目流程
共 2213字,需浏览 5分钟
·
2021-12-14 09:06
本文是中国大学慕课《机器学习》的“机器学习项目流程”章节的课后代码。
课程地址:
https://www.icourse163.org/course/WZU-1464096179
课程完整代码:
https://github.com/fengdu78/WZU-machine-learning-course
代码修改并注释:黄海广,haiguang2000@wzu.edu.cn
项目来源:
这是一个机器学习的完整流程,附代码非常全,几乎适合任何监督学习的分类问题,本文提供代码和数据下载。
作者:WillKoehrsen
翻译:DeqianBai(https://github.com/DeqianBai)
这是2018年夏天,一位美国数据科学家在申请工作时的“作业”,完整的英文版作业在:
https://github.com/WillKoehrsen/machine-learning-project-walkthrough/blob/master/hw_assignment.pdf
项目目标:
使用提供的建筑能源数据开发一个模型,该模型可以预测建筑物的能源之星得分, 然后解释结果以找到最能预测得分的变量。
项目介绍:
这是一个受监督的回归机器学习任务:给定一组包含目标(在本例中为分数)的数据,我们希望训练一个可以学习将特征(也称为解释变量)映射到目标的模型。
受监督问题:我们可以知道数据的特征和目标,我们的目标是训练可以学习两者之间映射关系的模型。 回归问题:Energy Star Score是一个连续变量。
在训练中,我们希望模型能够学习特征和分数之间的关系,因此我们给出了特征和答案。然后,为了测试模型的学习效果,我们在一个从未见过答案的测试集上进行评估
我们在拿到一个机器学习问题之后,要做的第一件事就是制作出我们的机器学习项目清单。下面给出了一个可供参考的机器学习项目清单,它应该适用于大多数机器学习项目,虽然确切的实现细节可能有所不同,但机器学习项目的一般结构保持相对稳定:
数据清理和格式化
探索性数据分析
特征工程和特征选择
基于性能指标比较几种机器学习模型
对最佳模型执行超参数调整
在测试集上评估最佳模型
解释模型结果
得出结论
提前设置机器学习管道结构让我们看到每一步是如何流入另一步的。但是,机器学习管道是一个迭代过程,因此我们并不总是以线性方式遵循这些步骤。我们可能会根据管道下游的结果重新审视上一步。例如,
虽然我们可以在构建任何模型之前执行特征选择,但我们可以使用建模结果返回并选择一组不同的特征。 或者,建模可能会出现意想不到的结果,这意味着我们希望从另一个角度探索我们的数据。 一般来说,你必须完成一步才能继续下一步,但不要觉得一旦你第一次完成一步,你就不能回头做出改进!你可以在任何时候返回前面的步骤并作出相应的修改。
代码部分
代码部分较长,仅贴代码的目录,完整代码在文末提供下载。
1. 数据清理和格式化
1.1 加载并检查数据 1.2 数据类型和缺失值 1.2.1 将数据转换为正确的类型 1.3 处理缺失值
2. 探索性数据分析
2.1 单变量图 2.2 去除异常值 2.3 寻找关系 2.4 特征与目标之间的相关性 2.5 双变量图(Two-Variable Plots) 2.5.1 Pairs Plot
3. 特征工程和特征选择
3.1 特征工程 3.2 特征选择(去除共线特征) 3.3 划分训练集和测试集 3.4 建立Baseline 小结
4. 基于性能指标比较几种机器学习模型
4.1 输入缺失值 4.2 特征缩放 4.3 需要评估的模型
5. 对最佳模型执行超参数调整
5.1 超参数 5.2 使用随机搜索和交叉验证进行超参数调整
6. 在测试集上评估最佳模型
7. 解释模型结果
7.1 特征重要性 7.2 使用特征重要性进行特征选择 7.3 本地可解释的与模型无关的解释 7.4 检查单个决策树
8. 得出结论
8.1 得出结论 记录发现
代码截图
参考
[1] https://github.com/WillKoehrsen/machine-learning-project-walkthrough
[2] https://github.com/DeqianBai/Your-first-machine-learning-Project---End-to-End-in-Python
[3] DeqianBai(https://github.com/DeqianBai)
总结
本文是一个完整的监督学习的机器学习流程,包含:
数据清理,探索性数据分析,特征工程和选择等常见问题的解决办法 随机搜索,网格搜索,交叉验证等方法寻找最优超参数 可视化决策树 对完整的机器学习项目流程建立一个宏观的了解
代码非常完整,可以在平时的机器学习项目中拿来用,只需要改少量代码即可。
往期精彩回顾
本站qq群955171419,加入微信群请扫码:
往期精彩回顾 本站qq群955171419,加入微信群请扫码: