近日在github上发现一个机器学习的完整流程,附代码非常全,几乎适合任何监督学习的分类问题,本文提供代码和数据下载。
作者:WillKoehrsen
翻译:DeqianBai(https://github.com/DeqianBai)
编辑:黄海广
项目来源:
这是2018年夏天,一位美国数据科学家在申请工作时的“作业”,完整的英文版作业在:
https://github.com/WillKoehrsen/machine-learning-project-walkthrough/blob/master/hw_assignment.pdf
项目目标:
- 使用提供的建筑能源数据开发一个模型,该模型可以预测建筑物的能源之星得分,
项目介绍:
这是一个受监督的回归机器学习任务:给定一组包含目标(在本例中为分数)的数据,我们希望训练一个可以学习将特征(也称为解释变量)映射到目标的模型。
- 受监督问题:我们可以知道数据的特征和目标,我们的目标是训练可以学习两者之间映射关系的模型。
- 回归问题:Energy Star Score是一个连续变量。
在训练中,我们希望模型能够学习特征和分数之间的关系,因此我们给出了特征和答案。然后,为了测试模型的学习效果,我们在一个从未见过答案的测试集上进行评估
我们在拿到一个机器学习问题之后,要做的第一件事就是制作出我们的机器学习项目清单。下面给出了一个可供参考的机器学习项目清单,它应该适用于大多数机器学习项目,虽然确切的实现细节可能有所不同,但机器学习项目的一般结构保持相对稳定:
提前设置机器学习管道结构让我们看到每一步是如何流入另一步的。但是,机器学习管道是一个迭代过程,因此我们并不总是以线性方式遵循这些步骤。我们可能会根据管道下游的结果重新审视上一步。例如,
- 虽然我们可以在构建任何模型之前执行特征选择,但我们可以使用建模结果返回并选择一组不同的特征。
- 或者,建模可能会出现意想不到的结果,这意味着我们希望从另一个角度探索我们的数据。
- 一般来说,你必须完成一步才能继续下一步,但不要觉得一旦你第一次完成一步,你就不能回头做出改进!你可以在任何时候返回前面的步骤并作出相应的修改。
代码部分
代码部分较长,仅贴代码的目录,完整代码在文末提供下载。
1. 数据清理和格式化
2. 探索性数据分析
- 2.5 双变量图(Two-Variable Plots)
3. 特征工程和特征选择
4. 基于性能指标比较几种机器学习模型
5. 对最佳模型执行超参数调整
6. 在测试集上评估最佳模型
7. 解释模型结果
8. 得出结论
代码截图
参考
[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)
总结
本文是一个完整的监督学习的机器学习流程,包含:
- 数据清理,探索性数据分析,特征工程和选择等常见问题的解决办法
代码非常完整,可以在平时的机器学习项目中拿来用,只需要改少量代码即可。
本文代码和数据下载:
https://github.com/DeqianBai/Your-first-machine-learning-Project---End-to-End-in-Python