0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ML项目的6个基本步骤

倩倩 来源:AI科技大本营 2020-04-15 14:44 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

每个机器学习项目都有自己独特的形式。对于每个项目,都可以遵循一组预定义的步骤。尽管没有严格的流程,但是可以提出一个通用模板。

准备问题

不仅是机器学习,任何项目的第一步都是简单地定义当前的问题。您首先需要了解背景和需要解决的问题。然后设计机器学习算法来有效地解决这一问题。一旦清楚地了解了问题,就可以解决它。

加载库

我将继续使用Python。第一步是加载或导入所需的所有库和包。一些非常基本且几乎必要的机器学习软件包是-NumPy,Pandas,Matplotlib和Scikit-Learn。

加载数据集

加载库后,您需要加载数据。Pandas具有执行此任务的非常简单的功能-pandas.read_csv。read.csv函数不仅限于csv文件,而且还可以读取其他基于文本的文件。其他格式也可以使用pandas读取功能(例如html,json,pickled文件等)读取。需要牢记的一件事是,您的数据需要与当前工作目录位于同一工作目录中,否则您将需要在函数中提供以“ /”为前缀的完整路径。

汇总数据

现在数据已加载并准备好进行操作。但是,您需要先检查数据的外观以及内容。首先,您需要查看数据具有多少行和列,以及每一列的数据类型都是什么(pandas认为它们是什么类型)。

快速查看数据类型和形状的方法是— pandas.DataFrame.info。这将告诉您数据框具有多少行和列以及它们包含哪些数据类型和值。

描述性统计

顾名思义,描述性统计数据以统计数据的形式描述数据-均值,标准差,四分位数等。获得完整描述的最简单方法是pandas.DataFrame.describe。您可以轻松确定数据是否需要缩放或需要添加缺失值,等等。(稍后会对此进行更多介绍)。

数据可视化

数据可视化非常重要,因为它们是了解数据和规律(即使它们不存在)的最快方法。您的数据可能具有数千个样本,甚至更多。无法直接分析所有数值数据。如果需要可视化,可以使用Matplotlib和Seaborn这样强大的可视化程序包。

使用Seaborn的Matplotlib进行可视化可用于检查特征内的相关性以及与目标的关系,可以使用散点图,直方图和箱形图来检查分布和偏度等。甚至pandas都有自己的内置可视化库-pandas.DataFrame.plot,其中包含条形图,散点图,直方图等。

Seaborn本质上是经过改造的matplotlib,因为它建立在matplotlib的基础上,使绘图更加美观,并且绘图速度更快。热图和对图(pairplot)是Seaborn快速绘制整个数据的可视化以检查多重共线性,缺失值等特征的示例。

一种获取大多数上述数据描述性和推断性信息的统计数据的非常有效的方法是Pandas Profiling。它会生成数据的精美报告,其中包含上述所有详细信息,使您能够一次分析所有数据。

准备数据

知道了数据的内容和规律,就需要对其进行转换,以使其适合算法来更有效地工作,以便提供更准确,更精确的结果。这就是数据预处理,这是任何ML项目中最重要,最耗时的阶段。

数据清洗

现实生活中的数据不能很好地安排在没有异常的数据框中并呈现给您。数据通常具有很多所谓的异常,例如缺失值,许多格式不正确的特征,不同比例的特征等。所有这些都需要手动处理,这需要大量时间和编码技巧(主要是python和pandas:D )!

Pandas具有各种功能来检查异常,例如pandas.DataFrame.isna以检查NaN等值。您可能还需要转换数据格式以摆脱无用的信息,例如删除“ Mr.”和“ Mrs” ”(如果存在单独的性别特征)。您可能需要使用pandas.DataFrame.replace函数以整个数据框的标准格式获取它,或使用pandas.DataFrame.drop删除不相关的特征。

特征选择

特征选择是选择一定数量的最有用特征的过程,这些特征将用于训练模型。这样做是为了在大多数特征对整体差异的贡献不足时缩小尺寸。如果您的数据中有300个特征,而前120个特征可以解释97%的方差,那么用这么多无用的特征来充实您的算法是没有意义的。减少特征不仅可以节省时间,还可以节省成本。

一些流行的特征选择技术包括SelectKBest,特征消除方法(例如RFE(递归特征消除))和嵌入式方法(例如LassoCV)。

特征工程

所有功能可能都不处于最佳状态。特征工程的意思是通过使用一组函数可以将它们转换为不同的相关的数据。这是为了增加与目标的相关性,从而增加准确性/分数。其中一些转换与缩放有关,例如StandardScaler,Normalizer,MinMaxScaler等。甚至可以通过将一些特征进行线性/二次组合来增加特征,以提高性能。对数转换,交互作用和Box-Cox转换是数字数据的一些有用转换。

对于分类数据,有必要将类别编码为数字,以便算法可以从中识别出来。一些最有用的编码技术是– LabelEncoder,OneHotEncoder和Binarizer。

评估算法

数据准备就绪后,请继续检查各种回归/分类算法的性能(基于问题的类型)。您可以首先创建一个基本模型来设置要进行比较的基准。

拆分验证数据集

训练完模型后,还需要对其进行验证,以查看它是否真的对数据进行了概括或拟合过度/不足。手中的数据可以预先分为训练集和验证集。这种拆分具有多种技术-训练测试拆分,随机排序等。您还可以对整个数据集运行交叉验证,以进行更可靠的验证。KFold交叉验证,Leave-One-Out-CV是最流行的方法。

测试选项和评估指标

基于一组需要定义的评估指标来评估模型。对于回归算法,一些常用指标是MSE和R Square。

与分类有关的评估指标要多样化得多-混淆矩阵,F1得分,AUC / ROC曲线等。对每种算法的这些得分进行比较,以检查哪些算法的性能优于其余算法。

抽查算法

拆分数据并定义评估指标后,您需要在for循环中运行一组算法,以检查哪个算法表现最佳。简短的算法列表可以很好地解决您的问题,这是一个反复的尝试,这样您便可以加速研究并进一步调优它们。

可以制作流水线,并可以混合使用线性和非线性算法来检查性能。

比较算法

现场运行测试工具后,您可以轻松查看哪些工具最适合您的数据。始终获得高分的算法应该是您的目标。然后,您可以选择最好的,并对其进行进一步调整以提高其性能。

提高准确性

拥有性能最佳的算法之后,可以调整它们的参数和超参数以提供最好的结果。也可以连接多种算法。

算法调整

维基百科指出“超参数调整是为机器学习算法选择一组最佳超参数”。超参数是无法学习的参数,必须在运行算法之前进行设置。超参数的一些例子包括逻辑回归的损失,随机梯度下降的损失以及SVM的核。

这些参数可以在数组中传递,并且算法可以递归运行,直到找到完美的超参数。这可以通过诸如网格搜索和随机搜索之类的方法来实现。

组合

可以将多种机器学习算法组合在一起,以形成一个更健壮和更优化的模型,该模型相比于单个算法可以提供更好的预测。这被称为合奏。

有2种类型常见的合奏-套袋(Bootstrap-Aggregating)和Boosting。例如,“随机森林”是一种Bagging集成体,它组合了多个决策树并获取输出的总和。

另一方面,Boosting通过适应性学习的方式组合了一组弱学习方式:集合中的每个模型都得到了拟合,从而更加重视数据集中实例中序列中先前模型存在较大错误的实例。XGBoost,AdaBoost,CatBoost是一些例子。

完成模型

验证数据集的预测

当您获得具有最佳超参数和合奏的最佳性能模型时,可以在未知的测试数据集上对其进行验证。

在训练集上创建独立模型

验证后,对整个数据集运行一次模型,以确保在训练/测试时不会遗漏任何数据点。现在,您的模型处于最佳状态。

保存模型以备后用

有了准确的模型后,您仍然需要保存并加载它,以备将来需要时使用。完成此操作的最常用方法是Pickle。

以上就是本文的内容。当然,在机器学习方面,这还不是全部。但这可以用作良好的路线图。对于不同类型的数据/问题,需要自己发挥。在下面评论您的想法,或说一说您是否了解更好和更关键的技术。

半小时训练亿级规模知识图谱,亚马逊AI开源知识图谱嵌入表示框架DGL-KE

中国顶尖的技术社区们在一个群里,会聊什么…

京东智能内容创作算法的演进与实践:基于关键词自动生成摘要

马化腾、马云并列成为中国首富;百度回应“将上线电商直播”;.NET 5 Preview 2 发布 | 极客头条

程序员职场背锅甩锅指南

警惕!新骗术出现:这些虚假二维码生成器已成功盗取 4.6 万美元!

“出道” 5 年采用率达 78%,Kubernetes 的成功秘诀是什么?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4762

    浏览量

    97176
  • 机器学习
    +关注

    关注

    66

    文章

    8541

    浏览量

    136245
  • 数据可视化
    +关注

    关注

    0

    文章

    487

    浏览量

    11331
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    开放原子开源基金会与11项目完成捐赠签约

    11月21日,在2025开放原子开发者大会开幕式上,开放原子开源基金会与11开源项目完成捐赠签约,涵盖人工智能、量子计算、机器人、操作系统、物联网等多个关键技术方向。此举既是基金会完善孵化体系、吸纳优质项目的重要举措,更标志着
    的头像 发表于 11-25 17:26 628次阅读

    使用RT-Thread studio 开发RT-Thread Nano项目的时候 串口的驱动是要自己写吗?

    刚入坑。使用RT-Thread studio 开发RT-Thread 标准板项目的时候直接使用里边的串口uart_dev=rt_device_find(“uart5”);然后操作设备,在开发RT-Thread Nano项目的时候,串口的驱动是需要自己写吗。
    发表于 09-26 08:14

    如何将“同步scons 配置至项目”功能添加到编译步骤中?

    我想将rt-thread studio的“同步scons配置至项目”功能添加到编译前步骤中 但是我不知道这个功能执行了什么指令,在构建前步骤中应该输入什么指令,用”scons”命令无法实现
    发表于 09-22 07:39

    AT_DEVICE支持ML307吗?

    这个到底支不支持ML305 ML307,图形界面有 ,但是保存配置后并没有这个文件,如果没有就在介绍上删掉吧,浪费一天时间加这个东西
    发表于 09-11 07:42

    4G网络AT模块:ml307A 总是连接失败,为什么?

    使用 AT client 连接 ml307A 4G网络,在多个地方使用网络,然后就经常出现连接失败或关闭失败: [E/at.skt.ml307] ml307 device(ml
    发表于 09-11 07:05

    华中科技大学与东风汽车首批6科研项目签约

    8月30日,华中科技大学-东风汽车联合研究院管委会召开第一次会议,首批6科研项目签约,标志着联合研究院在华中科技大学军山校区正式落地校企合作进入新阶段。
    的头像 发表于 09-01 10:12 617次阅读

    如何选择适合自己项目的通信协议评估工具?

    LZ-DZ200电能质量在线监测装置 选择适合项目的通信协议评估工具,核心是 对齐项目需求与工具能力 ,避免 “过度选型”(用高端工具测简单场景)或 “功能不足”(用轻量工具测复杂协议)。以下是分步骤
    的头像 发表于 08-27 09:19 458次阅读
    如何选择适合自己<b class='flag-5'>项目的</b>通信协议评估工具?

    石英晶振焊接的6步骤

    [石英晶振]用一种能把电能和机械能相互转化的晶体在共振的状态下工作,其晶振的稳定性与焊接过程中也存在着很大的关系,如果焊接不当可能会使晶振频率发生改变,下面为大家介绍石英晶振的正确焊接的6步骤
    的头像 发表于 08-26 17:42 395次阅读

    使用aicube进行目标检测识别数字项目的时候,在评估环节卡住了,怎么解决?

    使用aicube进行目标检测识别数字项目的时候,前面一切正常 但是在评估环节卡住了,一直显示正在测试,但是完全没有测试结果, 在部署完模型后在k230上运行也没有任何识别结果 期待结果和实际结果
    发表于 08-13 06:45

    是否可以仅使用 Bootloader Host 来实现可引导加载项目的相同编程结果?

    。我知道可以使用PSoC™编程器通过 SWD 直接对目标芯片进行编程。 但是,我想知道是否可以仅使用 Bootloader Host 来实现可引导加载项目的相同编程结果,而不依赖于PSoC™编程器或
    发表于 07-18 07:39

    树莓派项目实战:车牌识别系统开发全记录!

    介绍本项目的目标是设计一基于树莓派微电脑的自动车牌识别系统,用于控制停车场的道闸。为什么?我有一台闲置的树莓派,没有参与任何项目,还有一台摄像头,以及一潜在的问题点——办公室停车场
    的头像 发表于 06-11 17:22 881次阅读
    树莓派<b class='flag-5'>项目</b>实战:车牌识别系统开发全记录!

    嵌入式AI技术漫谈 如何组建一AI项目开发小组

    我们来谈一谈如何组建一AI项目开发小组: 为什么要为嵌入式AI项目 组建一专门的开发小组 相对于以往成熟的项目开发体系,嵌入式AI
    的头像 发表于 06-11 16:34 1080次阅读

    NanoEdge AI Studio 面向STM32开发人员机器学习(ML)技术

    NanoEdge™ AI Studio*(NanoEdgeAIStudio)是一种新型机器学习(ML)技术,可以让终端用户轻松享有真正的创新成果。只需几步,开发人员便可基于最少量的数据为其项目创建
    的头像 发表于 04-22 11:09 1002次阅读
    NanoEdge AI Studio 面向STM32开发人员机器学习(<b class='flag-5'>ML</b>)技术

    SSM开发环境的搭建教程 SSM与Spring Boot的区别

    SSM开发环境的搭建教程 SSM(Spring+SpringMVC+MyBatis)开发环境的搭建涉及多个步骤,以下是详细的教程: 创建Maven项目 : 使用Maven工具创建一新的Maven
    的头像 发表于 12-16 18:13 1827次阅读

    Silicon Labs携手Eta Compute简化边缘ML开发

    Silicon Labs(芯科科技)与 Eta Compute近期共同宣布建立合作伙伴关系,将支持产品开发人员将机器学习(ML)高级功能无缝集成到其边缘ML嵌入式产品中,以添加多样应用价值。
    的头像 发表于 12-12 10:26 1079次阅读