Py学习  »  机器学习算法

完整的端到端的机器学习流程(附代码和数据)|比赛、工程都可以用!

机器学习初学者 • 4 年前 • 323 次点击  

近日在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. 探索性数据分析

  3. 特征工程和特征选择

  4. 基于性能指标比较几种机器学习模型

  5. 对最佳模型执行超参数调整

  6. 在测试集上评估最佳模型

  7. 解释模型结果

  8. 得出结论

提前设置机器学习管道结构让我们看到每一步是如何流入另一步的。但是,机器学习管道是一个迭代过程,因此我们并不总是以线性方式遵循这些步骤。我们可能会根据管道下游的结果重新审视上一步。例如,

  • 虽然我们可以在构建任何模型之前执行特征选择,但我们可以使用建模结果返回并选择一组不同的特征。
  • 或者,建模可能会出现意想不到的结果,这意味着我们希望从另一个角度探索我们的数据。
  • 一般来说,你必须完成一步才能继续下一步,但不要觉得一旦你第一次完成一步,你就不能回头做出改进!你可以在任何时候返回前面的步骤并作出相应的修改。

代码部分

代码部分较长,仅贴代码的目录,完整代码在文末提供下载。

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)

总结

本文是一个完整的监督学习的机器学习流程,包含:

  • 数据清理,探索性数据分析,特征工程和选择等常见问题的解决办法
  • 随机搜索,网格搜索,交叉验证等方法寻找最优超参数
  • 可视化决策树
  • 对完整的机器学习项目流程建立一个宏观的了解

代码非常完整,可以在平时的机器学习项目中拿来用,只需要改少量代码即可。

本文代码和数据下载:

https://github.com/DeqianBai/Your-first-machine-learning-Project---End-to-End-in-Python

往期精彩回顾





本站qq群1003271085,加入本站微信群请回复“加群

获取一折本站知识星球优惠券,请回复知识星球

喜欢文章,点个在看

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55660
 
323 次点击