机器学习项目模板:ML项目的6个基本步骤
来源 | DeepHub IMBA
每个机器学习项目都有自己独特的形式。对于每个项目,都可以遵循一组预定义的步骤。尽管没有严格的流程,但是可以提出一个通用模板。
准备问题
不仅是机器学习,任何项目的第一步都是简单地定义当前的问题。您首先需要了解背景和需要解决的问题。然后设计机器学习算法来有效地解决这一问题。一旦清楚地了解了问题,就可以解决它。
加载库
我将继续使用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大调研》,只需2分钟,便可收获价值299元的「AI开发者万人大会」在线直播门票!
推荐阅读半小时训练亿级规模知识图谱,亚马逊AI开源知识图谱嵌入表示框架DGL-KE
中国顶尖的技术社区们在一个群里,会聊什么…京东智能内容创作算法的演进与实践:基于关键词自动生成摘要马化腾、马云并列成为中国首富;百度回应“将上线电商直播”;.NET 5 Preview 2 发布 | 极客头条程序员职场背锅甩锅指南
警惕!新骗术出现:这些虚假二维码生成器已成功盗取 4.6 万美元!“出道” 5 年采用率达 78%,Kubernetes 的成功秘诀是什么?
你点的每个“在看”,我都认真当成了AI
相关文章:

ib_logfile 在数据库中有何作用?
ib_logfile 在数据库中有何作用? ib_logfile0/ib_logfile1 文件在数据库中起什么作用? 如果被删除,对数据库有何影响? ----->>>>>>>>>>> 回复 #1 mugua_xinli 的帖子 用于存放InnoDB引擎的事…

Podfile 常见语法
source URL : 指定镜像仓库的源 platform : ios, 6.0 : 指定所支持系统和最低版本 inhibit_all_warnings! :屏蔽所有warning workspace 项目空间名: 指定项目空间名 xcodeproj 工程文件名:指定xcodeproj工程文件名 …

今天学完了ccna
通过10天的学习,终于学完了NA,但是会不会呢?还是个未知数,再就也一知半解的。觉得基础知识太差了,可是看书,又觉得太长了,太多了,晚上老是停电 白天啥也看不进去。热。还是静不下心&…
攀登数据科学家和数据工程师之间的隔墙
来源 | 数据派 THU机器学习的教育和研究重点往往集中在数据科学过程的模型构建、训练、测试和优化等方面。要使这些模型投入使用,需要一套工程专长和组织结构,对于其中的标准尚不存在。有一个架构可以指导数据科学和工程团队相互协作,从而将机…

js变量以及其作用域详解
2019独角兽企业重金招聘Python工程师标准>>> 一、变量的类型 Javascript和Java、C这些语言不同,它是一种无类型、弱检测的语言。它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变…
在A*寻路中使用二叉堆
在A*寻路中使用二叉堆 作者:Patrick Lester(2003年4月11日更新) 译者:Panic 2005年3月28日 译者序: 这一篇文章,是“A* Pathfinding for Beginners.”,也就是我翻译的另一篇文章A*寻路初探…
“Hey Siri” 背后的黑科技大揭秘!
作者 | Vishant Batta译者 | 苏本如,责编 | 伍杏玲出品 | CSDN(ID:CSDNnews)以下是译文: 如今苹果手机可随时检测并回答“Hey Siri”命令,有人可能会想,它是不是在随时记录我们的日常生活对话呢…

[ASP.NET4之旅]Circular file references are not allowed
将ASP.NET 2.0的项目升级到ASP.NET 4后,用VS2010编译站点,某些控件出现编译错误“Circular file references are not allowed”,比如: <% Control Language"C#"ClassName"NewsRight"%>解决方法…

IOS-XMPP
一、即时通讯技术简介 即时通讯技术(IM -- Instant Messaging)支持用户在线实时交谈。如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容有许多的IM系统,如AO…

libcurl使用
官网:http://curl.haxx.se/libcurl/c/libcurl-tutorial.html #curl-config --libs 得到 -lcurl #cc libcurl_test.c -o libcurl_test -lcurl 所有的例子:http://curl.haxx.se/libcurl/c/example.html 例子: /***********************…

RH5.4下samba共享配置实例(3)
一、基于用户名的访问控制实例: 王乾大哥写的比较详细了,我是跟着他的教程学习的,按照他的教程走一边; 要求如下: 1、创建一个公共的交换文件夹,所有人都可以写入删除,但不能删除修改其他人的文…

《评人工智能如何走向新阶段》后记(再续21)
346.中国抗疫十大黑科技(以人工智能为主力的黑科技) 摘自数邦客(2020.3.30发布) 负压救护车 人工智能机器人:如送餐机器人、消毒机器人、服务型机器人,及机器人呼叫等呼吸道病毒核配检测试剂盒…

nagios npc安装后状态为off的解决方法
1、检查ndo2db的进程是不是二个 nagios 16825 0.0 0.1 6784 396 ? Ss 19:05 0:00 /usr/local/nagios/bin/ndo2db -c /usr/l nagios 17032 0.0 0.3 6784 1268 ? S 19:09 0:00 /usr/local/nagios/bin/ndo2db -c 2、检查nagios.log日志看…
C语言extern关键字定义外部变量--Redis源码extern使用
在Redis2.8中有networking.c,这个文件没有networking.h networking.c首先引入redis.h这个头文件 #include "redis.h" 在redis.c一开始就声明了全局变量 /* Global vars */ struct redisServer server; networking.c的createClient函数 redisClient *cr…
深度学习面试必备的25个问题
作者 | Tomer Amit译者 | 弯月,编辑 | 屠敏出品 | CSDN(ID:CSDNnews)在本文中,我将分享有关深度学习的25个问题,希望能够帮助你为面试做好准备。1.为什么必须在神经网络中引入非线性?答…

一分钟了解阿里云产品:先知计划
一、 概述 阿里云发布了各种各样的产品,今天让我们一起来了解下阿里云先知计划吧。 什么是先知计划呢? 先知计划是一个帮助企业建立私有应急响应中心的平台(帮助企业收集漏洞信息)。企业加入先知计划后,可…

C语言的HashTable简单实现
原文地址:http://blog.csdn.net/zmxiangde_88/article/details/8025541 HashTable是在实际应用中很重要的一个结构,下面讨论一个简单的实现,虽然简单,但是该有的部分都还是有的。 一,访问接口 创建一个hashtable. h…
GitHub标星2000+,如何用30天啃完TensorFlow2.0?
作者 | 梁云1991来源 | Python与算法之美(ID:Python_Ai_Road)天下苦tensorflow久矣!尽管tensorflow2.0宣称已经为改善用户体验做出了巨大的改进,really easy to use,但大家学得并不轻松。tensorflow2.0官方文档和tenso…

【Struts2学习笔记(1)】Struts2中Action名称的搜索顺序和多个Action共享一个视图--全局result配置...
一、Action名称的搜索顺序 1.获得请求路径的URI,比如url是:http://server/struts2/path1/path2/path3/test.action 2.首先寻找namespace为/path1/path2/path3的package,假设不存在这个package则运行步骤3;假…
大话卷积神经网络CNN,小白也能看懂的深度学习算法教程,全程干货建议收藏!...
来源 | 程序员管小亮本文创作的主要目的,是对时下最火最流行的深度学习算法的基础知识做一个简介,作者看过许多教程,感觉对小白不是特别友好,尤其是在踩过好多坑之后,于是便有了写这篇文章的想法。由于文章较长&#x…
频繁分配释放内存导致的性能问题的分析--brk和mmap的实现
现象1 压力测试过程中,发现被测对象性能不够理想,具体表现为: 进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 2 用ps -o majflt,minflt -C program命令查看,发现majflt每秒增量为0&…

Linux 服务器日志文件查找技巧精粹
用来在日志文件里搜索特定活动事件的工具不下几十种,本文将介绍搜索日志文件时应该采取的策略。然后,通过几个具体示例介绍一些使用grep命令手动搜索日志文件的办法。接下来,我们将看到 logwatch工具和logsurfer工具的用法。最后,…

程序猿面试什么最重要?
程序猿面试一直是社区乐于讨论的热门话题。我自己从06年实习以来。先后经历了4家软件公司。所有是外企。当中有世界500强的通信企业,有从事期权期货交易的欧洲中等规模的金融公司,也有为大型汽车制造商开发Android智能汽车的新兴公司。跨入IT行业以来。我…

open的O_DIRECT选项
http://blog.chinaunix.net/uid-223060-id-2127385.html http://blog.csdn.net/hhtang/article/details/6605951 查看磁盘分区: #df -h #tune2fs -l /dev/mapper/VolGroup-lv_root 或者 #dumpe2fs /dev/mapper/VolGroup-lv_root|grep -i "block size"…
2020 年,AI 芯片内存哪家强?
目前多家公司都在开发网络边缘系统的AI芯片,本文作者详细分析AI边缘芯片遇到的问题和挑战,并给出一些新的内存技术解决方案。作者 | Mark LaPedus译者 | 弯月,责编 | 伍杏玲封图 | CSDN下载自视觉中国出品 | CSDN(ID:CSDNnews&…

Excel数字、文本混合列导入SQL Server出现的问题&解决办法
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://annie-out.blogbus.com/logs/60276495.htmlExcel文件:序号 姓名 内部电话 住址 1 小李 1234 …… 2 小王5678……3小张2345(国内长途)…………………………如上结构的…

ARM 位置无关代码(PIC)的分析理解
2019独角兽企业重金招聘Python工程师标准>>> PIC的特点是: 它被加载到任意地址空间都可以正确的执行。其原理是PIC对常量和函数入口地址的操作都是基于PC偏移量的寻址方式。即使程序被移动,但是PC也变化了,而偏移量是不变的&#…

Linux压缩/解压缩
整合资源,仅供自己参考:) TAR 命令名 tar - tar 档案文件管理程序的 GNU 版本。下面将逐个介绍其含义 总览 tar [ - ] A --catenate --concatenate | c --create | d --diff --compare | r --append | t --list | u --update | x -extract -…
为什么校招面试中总被问“线程与进程的区别”?我该如何回答?
作者 | 宇宙之一粟责编 | 徐威龙出品 | AI 科技大本营(rgznai100)进程与线程?(Process vs. Thread?)面试官(正襟危坐中):给我说说“线程”与“进程”吧。我(总…