6步创建一个通用机器学习模板

小编说:本文将介绍一个通用的机器学习的项目模板,创建这个模板总共有六个步骤。你将会学到:

•端到端地预测(分类与回归)模型的项目结构。

•如何将前面学到的内容引入到项目中。

•如何通过这个项目模板来得到一个高准确度的模板。

机器学习是针对数据进行自动挖掘,找出数据的内在规律,并应用这个规律来预测新数据。

在项目中实践机器学习

端到端地解决机器学习的问题是非常重要的。可以学习机器学习的知识,可以实践机器学习的某个方面,但是只有针对某一个问题,从问题定义开始到模型部署为止,通过实践机器学习的各个方面,才能真正掌握并应用机器学习来解决实际问题。

在部署一个项目时,全程参与到项目中可以更加深入地思考如何使用模型,以及勇于尝试用机器学习解决问题的各个方面,而不仅仅是参与到自己感兴趣或擅长的方面。一个很好的实践机器学习项目的方法是,使用从 UCI机器学习仓库(http://archive.ics.uci.edu/ ml/datasets.html) 获取的数据集开启一个机器学习项目。如果从一个数据集开始实践机器学习,应该如何将学到的所有技巧和方法整合到一起来处理机器学习的问题呢?

分类或回归模型的机器学习项目可以分成以下六个步骤:

(1)定义问题。

(2)理解数据。

(3)数据准备。

(4)评估算法。

(5)优化模型。

(6)结果部署。

有时这些步骤可能被合并或进一步分解,但通常是按上述六个步骤来开展机器学习项目的。为了符合Python的习惯,在下面的Python项目模板中,按照这六个步骤分解整个项目,在接下来的部分会明确各个步骤或子步骤中所要实现的功能。

机器学习项目的Python模板

下面会给出一个机器学习项目的Python模板。代码如下:

# Python机器学习项目的模板

# 1. 定义问题

# a) 导入类库

# b) 导入数据集

# 2. 理解数据

# a) 描述性统计

# b) 数据可视化

# 3. 数据准备

# a) 数据清洗

# b) 特征选择

# c) 数据转换

# 4. 评估算法

# a) 分离数据集

# b) 定义模型评估标准

# c) 算法审查

# d) 算法比较

# 5. 优化模型

# a) 算法调参

# b) 集成算法

# 6. 结果部署

# a) 预测评估数据集

# b) 利用整个数据集生成模型

# c) 序列化模型

当有新的机器学习项目时,新建一个Python文件,并将这个模板粘贴进去将其填充到每一个步骤中。

各步骤的详细说明

接下来将详细介绍项目模板的各个步骤。

步骤1:定义问题

主要是导入在机器学习项目中所需要的类库和数据集等,以便完成机器学习的项目,包括导入Python的类库、类和方法,以及导入数据。同时这也是所有的配置参数的配置模块。当数据集过大时,可以在这里对数据集进行瘦身处理,理想状态是可以在1分钟内,甚至是30秒内完成模型的建立或可视化数据集。

步骤2:理解数据

这是加强对数据理解的步骤,包括通过描述性统计来分析数据和通过可视化来观察数据。在这一步需要花费时间多问几个问题,设定假设条件并调查分析一下,这对模型的建立会有很大的帮助。

步骤3:数据准备

数据准备主要是预处理数据,以便让数据可以更好地展示问题,以及熟悉输入与输出结果的关系。包括:

通过删除重复数据、标记错误数值,甚至标记错误的输入数据来清洗数据。

特征选择,包括移除多余的特征属性和增加新的特征属性。

数据转化,对数据尺度进行调整,或者调整数据的分布,以便更好地展示问题。

要不断地重复这个步骤和下一个步骤,直到找到足够准确的算法生成模型。

步骤4:评估算法

评估算法主要是为了寻找最佳的算法子集,包括:

分离出评估数据集,以便于验证模型。

定义模型评估标准,用来评估算法模型。

抽样审查线性算法和非线性算法。

比较算法的准确度。

在面对一个机器学习的问题的时候,需要花费大量的时间在评估算法和准备数据上,直到找到3~5种准确度足够的算法为止。

步骤5:优化模型

当得到一个准确度足够的算法列表后,要从中找出最合适的算法,通常有两种方法可以提高算法的准确度:

对每一种算法进行调参,得到最佳结果。

使用集合算法来提高算法模型的准确度。

步骤6:结果部署

一旦认为模型的准确度足够高,就可以将这个模型序列化,以便有新数据时使用该模型来预测数据。

通过验证数据集来验证被优化过的模型。

通过整个数据集来生成模型。

将模型序列化,以便于预测新数据。

做到这一步的时候,就可以将模型展示并发布给相关人员。当有新数据产生时,就可以采用这个模型来预测新数据。

使用模板的小技巧

快速执行一遍:首先要快速地在项目中将模板中的每一个步骤执行一遍,这样会加强对项目每一部分的理解并给如何改进带来灵感。

循环:整个流程不是线性的,而是循环进行的,要花费大量的时间来重复各个步骤,尤其是步骤3或步骤4(或步骤3~步骤5),直到找到一个准确度足够的模型,或者达到预定的周期。

尝试每一个步骤:跳过某个步骤很简单,尤其是不熟悉、不擅长的步骤。坚持在这个模板的每一个步骤中做些工作,即使这些工作不能提高算法的准确度,但也许在后面的操作就可以改进并提高算法的准确度。即使觉得这个步骤不适用,也不要跳过这个步骤,而是减少该步骤所做的贡献。

定向准确度:机器学习项目的目标是得到一个准确度足够高的模型。每一个步骤都要为实现这个目标做出贡献。要确保每次改变都会给结果带来正向的影响,或者对其他的步骤带来正向的影响。在整个项目的每个步骤中,准确度只能向变好的方向移动。

按需适用:可以按照项目的需要来修改步骤,尤其是对模板中的各个步骤非常熟悉之后。需要把握的原则是,每一次改进都以提高算法模型的准确度为前提。

本文来自企鹅号 - 博文视点Broadview媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

学界 | 密歇根州立大学提出NestDNN:动态分配多任务资源的移动端深度学习框架

论文:NestDNN: Resource-Aware Multi-Tenant On-Device Deep Learning for Continuous M...

1973
来自专栏磐创AI技术团队的专栏

使用Keras进行深度学习:(六)LSTM和双向LSTM讲解及实践

3144
来自专栏数据科学与人工智能

【DS】Doc2Vec和Logistic回归的多类文本分类

Doc2vec是一个NLP工具,用于将文档表示为向量,是word2vec方法的推广。 为了理解doc2vec,最好理解word2vec方法。但是,完整的数学细节...

2784
来自专栏AI研习社

微软开源 repo 1.0 ,旨在创造深度学习框架通用语言

AI 研习社按,日前,微软提出深度学习框架的通用语言——repo1.0,号称希望通过构建这一深度学习框架「Rosetta Stone(罗塞塔石碑)」,让研究者们...

1382
来自专栏IT派

一文简短介绍Caffe

导语:在经过三天之后,我们的活动人数已经达到50人了,感谢大家对小编的支持,同时在本文末附上活动的众筹榜单(同日另一篇文)。希望能跟小伙伴们度过愉快的6天! 深...

3597
来自专栏AI研习社

如何用PyTorch训练图像分类器

如果你刚刚开始使用PyTorch并想学习如何进行基本的图像分类,那么你可以参考本教程。它将介绍如何组织训练数据,使用预训练神经网络训练模型,然后预测其他图像。

1682
来自专栏技术随笔

[译] Introduction to debugging neural networks

3526
来自专栏腾讯Bugly的专栏

深度学习三大框架对比

人工智能的浪潮正席卷全球,诸多词汇时刻萦绕在我们的耳边,如人工智能,机器学习,深度学习等。

1.5K11
来自专栏吉浦迅科技

【在线视频】如何在GPU上进行混合精度训练

使用精度低于FP32的系统可以减少内存使用,允许部署更大的网络。数据传输需要更少的时间,而且计算性能会提高,尤其是在NVIDIA gpu上,它的Tensor C...

4291
来自专栏机器学习算法与理论

利用二维图像进行头部姿态估计

3D头部姿态估计(ubuntu操作系统,基于opencv3.2+Dlib19.4+python2.7)打开摄像头,可实现实时(realtime)姿态检测。 坐标...

5885

扫码关注云+社区

领取腾讯云代金券