近日在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

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习在线手册深度学习在线手册AI基础下载(pdf更新到25集)本站qq群1003271085,加入本站微信群请回复“加群”获取一折本站知识星球优惠券,请回复“知识星球”喜欢文章,点个在看

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

  1. 带你入门Python数据挖掘与机器学习(附代码、实例)

    作者:韦玮 来源:Python爱好者社区 本文共7800字,建议阅读10+分钟. 本文结合代码实例待你上手python数据挖掘和机器学习技术. 本文包含了五个知识点: 1. 数据挖掘与机器学习技术简介 ...

  2. 入门Python数据挖掘与机器学习(附代码、实例)

    本文包含了五个知识点: 1. 数据挖掘与机器学习技术简介 2. Python数据预处理实战 3. 常见分类算法介绍 4. 对鸢尾花进行分类案例实战 5. 分类算法的选择思路与技巧 一.数据挖掘与机器学 ...

  3. 一套完整的基于随机森林的机器学习流程(特征选择、交叉验证、模型评估))...

    机器学习实操(以随机森林为例) 为了展示随机森林的操作,我们用一套早期的前列腺癌和癌旁基因表达芯片数据集,包含102个样品(50个正常,52个肿瘤),2个分组和9021个变量 (基因).(https: ...

  4. JAVA服务端实现页面截屏(附代码)

    JAVA服务端实现页面截屏 适配需求 方案一.使用JxBrowser 使用步骤: 方案二.JavaFX WebView 使用步骤: 方案三.Headless Chrome 使用步骤: 综上方案对比 记 ...

  5. 用Python进行机器学习(附代码、学习资源)

    作者:Tirthajyoti Sarkar 翻译:张逸 校对:冯羽 本文约3090字,建议阅读6分钟. 本文从非线性数据进行建模,带你用简便并且稳健的方法来快速实现使用Python进行机器学习. 使用 ...

  6. Winform中实现Excel导入、表格展示、多选获取值、生成二维码、打印流程(附代码下载)

    场景 整体流程需求 1.导入Excel并获取Excel的数.. 2.将Excel的数据复制给DataGridView中进行显示并能实现多选. 3.根据选中的内容生成二维码. 4.将二维码打印. 整体效 ...

  7. 【Python】全文3000字,Pyecharts制作可视化大屏全流程! (附代码分享)

    就在上一篇的文章当中 干货分享 | 用Pyecharts绘制20钟不同风格的炫酷交互式图表,建议收藏 有粉丝提到说是不是可以写一篇用Pyecharts模块做可视化大屏的相关教程,小编立马就答应了他的请 ...

  8. Python实现带南海九段线分位数地图完整可视化版本(附代码及数据)

    中国一点都不能少! 首先声明,数据示例中的中国行政区划的数据为简化版,仅能用于学习和练习,不能用于任何公开场合的出版.展示及其他应用.非法在公开场合使用,将会被追究法律责任. 先上一个最简单的实现方式 ...

  9. 2.10 是否要使用端到端的深度学习-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.9 什么是端到端的深度学习 回到目录 2.11 总结 是否要使用端到端的深度学习 (Whether to use end-to-end deep learning?) 假 ...

最新文章

  1. KDD Cup 2021 时序异常检测总结!
  2. android ORM框架LitePal 封装SQLite
  3. ***基础课----***踩点
  4. TCP/IP详解--第十章
  5. MVC学习之简单的CRUD
  6. 无线路由器——多路由器无线桥联解决方案
  7. 生成FaceBook所需的散列哈希值
  8. go语言基础知识笔记(二)之数组和切片
  9. 中文场景文字识别技术创新大赛,总奖池5.4万!
  10. Linux中断(interrupt)子系统之四:驱动程序接口层 中断通用逻辑层
  11. 为什么总说程序员是吃青春饭的?真的是 35 岁混不到管理就等于失业?
  12. 博客积分为0,这是又出错了?
  13. 我的世界java版如何加披风_我的世界正版披风怎么换
  14. QGIS获取OSM地图矢量数据
  15. 20200722-Java面经-被血虐-面试问题及总结
  16. 李彦宏一声「萝卜快跑」,中国首个无人车出行App就位!网友:这才是科技公司该干的事儿...
  17. 缓冲区溢出漏洞浅析(三)
  18. gifcam使用缩小内存_GifCam怎么用?GifCam使用教程
  19. 少年,我看你骨骼惊奇,必是练武奇才,将来维护宇宙正义
  20. 如何使用DataGrip修改数据库表字段长度

热门文章

  1. The Design and Implementation of Open vSwitch
  2. dbms_lob包学习笔记之三:instr和substr存储过程
  3. 网络基础知识----------iptables
  4. 1.Jenkins 在windows下的安装与配置
  5. springmvc中@PathVariable和@RequestParam的区别
  6. Error when loading the SDK:发现了含有元素 'd:skin' 开头的无效内容
  7. AnimalTFDB 3.0:动物转录因子注释和预测的综合资源库
  8. keytool安装tls证书_TLS使用指南(一):如何在Rancher 2.x中进行TLS终止?
  9. laydate组件 无法传值_Vue组件通信的几种方式
  10. Allegro 17.4设置中文界面