
每个机器学习项目都有自己独特的形式。对于每个项目,您可以遵循一组预定义的步骤。虽然没有严格的流程,但是可以提出一个通用的模板。
准备问题不仅仅是机器学习,任何项目的第一步都是简单定义当前问题。你需要先了解背景和要解决的问题。然后设计了机器学习算法来有效解决这一问题。问题一旦搞清楚了,就可以解决了。
加载库,我继续用Python。第一步是加载或导入所有需要的库和包。一些非常基础的,几乎是必须的机器学习软件包有-NumPy,Pandas,Matplotlib和Scikit-Learn。
加载数据集加载库后,需要加载数据。熊猫有一个很简单的功能来执行这个任务——熊猫。read _ CSV。read.csv函数不限于csv文件,还可以读取其他基于文本的文件。其他格式也可以使用熊猫阅读功能阅读(如html、json、pickled文件等。).需要记住的一点是,您的数据需要位于与当前工作目录相同的工作目录中,否则您将需要在函数中提供以“/”为前缀的完整路径。
将数据制成表格
现在,数据已经加载完毕,可以进行操作了。但是,您需要首先检查数据的外观和内容。首先你要看数据有多少行和多少列,每一列的数据类型是什么(熊猫以为自己是什么)。
快速查看数据类型和形状的方法是-panda。dataframe.info。这将告诉您一个数据框有多少行和列,以及它们包含什么数据类型和值。
描述统计学,顾名思义,以统计数据的形式描述数据——均值、标准差、四分位数等。最容易得到完整描述的是熊猫。DataFrame.describe您可以轻松确定数据是否需要缩放或添加缺失值等等。(这个我们以后再详细讲。).
数据可视化数据可视化非常重要,因为它们是理解数据和规律的最快方式,即使它们并不存在。您的数据可能有数千个样本,甚至更多。不可能直接分析所有的数值数据。如果需要可视化,可以使用Matplotlib、Seaborn等强大的可视化包。
使用Seaborn的Matplotlib进行可视化可用于检查特征内部的相关性以及与目标的关系,散点图、直方图和箱线图可用于检查分布和偏斜度。甚至熊猫都有自己内置的可视化库——熊猫。dataframe.plot,包含条形图、散点图、直方图等。
Seaborn本质上是一个修改过的matplotlib,因为它是基于matplotlib,使得画图更美观,速度更快。热图和pairplot是Seaborn快速可视化整个数据以检查多重共线性、缺失值和其他特征的示例。
获得上述大部分数据的描述性和推断性信息的统计数据的一种非常有效的方法是熊猫概况分析。它将生成一个漂亮的数据报告,其中包含所有上述细节,这样您就可以一次分析所有数据。
准备数据。一旦知道了数据的内容和规则,就需要对其进行转换,使其适合算法更有效地工作,从而提供更准确和精确的结果。这是数据预处理,是任何ML项目中最重要也是最耗时的阶段。
数据清洗现实生活中的数据不可能毫无例外地很好地排列在一个数据框中呈现给你。数据通常会有很多所谓的异常,比如缺失值、很多格式不正确的特征、不同比例的特征等等。这些都需要手工处理,需要大量的时间和编码技巧(主要是python和熊猫:D)!
Pandas有各种功能来检查异常,比如pandas。DataFrame.isna来检查NaN等效性。你可能还需要转换数据格式,去掉无用的信息,比如删除“先生”和“夫人”(如果有单独的性别特征)。你可能需要用熊猫。DataFrame.replace函数以整个数据框的标准格式获取,或者使用pandas。DataFrame.drop删除无关要素。
特征选择特征选择是选择一定数量的最有用的特征的过程,这些特征将用于训练模型。这样做是为了在大多数特征对整体差异贡献不足时减小尺寸。如果你的数据中有300个特征,前120个特征可以解释百分之九十七的方差,那么用这么多无用的特征来丰富你的算法是没有意义的。减少功能不仅可以节省时间,还可以节省成本。
一些流行的特征选择技术包括SelectKBest、特征消除方法(如RFE(递归特征消除))和嵌入式方法(如LassoCV)。
特征工程的所有功能可能不会处于最佳状态。特征工程意味着通过使用一组功能,可以将它们转换成不同的相关数据。这是为了增加与目标的相关性,从而增加准确率/得分。其中一些转换与缩放有关,如StandardScaler、Normalizer、MinMaxScaler等。您甚至可以通过一些功能的线性/二次组合来添加功能,以提高性能。对数变换、交互和Box-Cox变换是一些有用的数字数据变换。
对于分类数据,有必要将类别编码成数字,以便算法可以识别它们。一些最有用的编码技术是——标签编码器、OneHotEncoder和二进制化器。
评估算法数据准备好之后,请继续检查各种回归/分类算法的性能(根据题型)。您可以首先创建一个基本模型来设置比较基准。
在通过分割验证数据集来训练模型之后,需要对其进行验证,以查看它是否真正概括了数据或者是否过度/欠拟合了数据。手头的数据可以预先分为训练集和验证集。这种拆分有很多技巧——训练测试拆分、随机排序等等。您还可以对整个数据集运行交叉验证,以获得更可靠的验证。交叉验证,留一法是最流行的方法。
测试选项和评估指标基于一组需要定义的评估指标来评估模型。对于回归算法,一些常用的指标是MSE和R平方。
与分类相关的评价指标要多样得多——混淆矩阵、F1评分、AUC/ROC曲线等。每个算法的这些分数被比较,以检查哪个算法比其他算法具有更好的性能。
在抽查算法拆分数据并定义评估指标后,您需要在for循环中运行一组算法来检查哪个算法的性能最好。一个简短的算法列表可以很好地解决你的问题,这是一个试错法,这样你可以加快你的研究,并进一步调整。
可以做流水线,可以混合线性和非线性算法来检查性能。
在现场运行测试工具后比较算法,您可以很容易地看到哪些工具最适合您的数据。一个总是拿高分的算法应该是你的目标。然后,您可以选择最佳的一个,并进一步调整以提高其性能。
提高精确度拥有最佳性能算法后,您可以调整它们的参数和超参数以提供最佳结果。也可以连接多个算法。
算法调整维基百科指出“超参数调整就是为机器学习算法选择一组最优的超参数”。超参数是无法学习的参数,必须在运行算法之前设置。超参数的一些例子包括逻辑回归的损失、随机梯度下降和SVM核的损失。
这些参数可以在数组中传递,算法可以递归运行,直到找到完美的超参数。这可以通过网格搜索和随机搜索等方法来实现。
组合可以将多种机器学习算法结合起来,形成一个更健壮、更优化的模型,可以提供比单一算法更好的预测。这叫合奏。
有两种常见的集成类型-引导-聚合和提升。例如,“随机森林”是一个Bagging ensemble,它将多个决策树组合在一起,并获得输出的总和。
另一方面,Boosting通过自适应学习结合了一套弱学习方法:集合中的每个模型都经过了拟合,从而更加关注数据集中前一个模型误差较大的例子。XGBoost、AdaBoost和CatBoost就是一些例子。
完成模型验证数据集的预测。
当你用最好的超参数和系综得到最好的性能模型,你就可以在未知的测试数据集上验证它。
在训练集上创建独立的模型
验证后,在整个数据集上运行一次模型,以确保在训练/测试期间没有遗漏任何数据点。现在,你的模型处于最佳状态。
保存模型以备将来使用有了准确的模型后,仍然需要保存并加载它以备将来使用。最常见的做法是腌制。
以上是本文的内容。当然,就机器学习而言,这还不是全部。但可以作为一个很好的路线图。对于不同类型的数据/题,需要自己发挥。在下面评论你的想法,或者说你是否知道更好更关键的技术。
半小时训练亿级规模知识图谱,亚马逊AI开源知识图谱嵌入展示框架DGL-柯。
中国顶尖的技术社区在一个小组里,他们将谈论什么…
京东智能内容创作算法的演进与实践:基于关键词的自动摘要生成
马花藤和马云并列中国首富;百度回应“电商会文章”; net5preview2发布|极客头条
程序员工作场所指南
小心!新骗术:这些假二维码生成器已经成功盗取了46000美元!
《出道》五年采用率78%。Kubernetes的成功秘诀是什么?









