最后更新:2020-06-17 10:43:50 手机定位技术交流文章

杰森·布朗利
翻译:吴振东
校对:冯玉
这篇文章大约有4500字,建议阅读10分钟。
本文以病马数据集为例,帮助您理解如何使用统计策略来处理机器学习领域中的缺失值,并更详细地解释代码。
数据可能包含缺失值,这可能导致许多机器学习算法出现问题。
同样,在对预测任务建模之前,确定并替换每列数据的缺失值也是非常合适的。这一步称为数据缺失值插值,或简称插值。
缺失数据值的常见插值方法是计算每列的统计值(例如平均值),并用该值替换该列的所有缺失值。这是一种非常流行的方法,因为计算训练集的统计值列表很容易,并且通过这种方法获得的效果也很理想。
在本教程中,您将学习如何使用统计插值来处理机器学习领域中的缺失值。
学习本教程后,您将掌握:
缺失值必须标记为NaN,并可以用统计计算的列值替换。如何加载缺少值的CSV文件,使用NaN识别缺少的值,并显示每列中缺少值的数量和百分比。如何用统计数据填充缺失值是评估模型并将预测结果与最终模型和新数据拟合的数据准备方法中的一个步骤。让我们开始吧!

课程概述
本教程可分为三个部分,即:
1.统计插值
2.马大肠数据集
3.使用简单估算器进行统计插值
1.简单估算数据转换2。简单估算和模型评估3。比较不同的插值统计4。在预测期间执行简单估算器转换统计插值
数据集可能包含缺失值。
缺少值意味着一行数据中一个或多个项目的数据值没有意义。可能值为空,也可能用一些特殊字符或值来表示,如问号“?”。
“这些价值可以用各种形式来表达。我见过这样的形式,比如一个完整的字符串空,一个空,一个“空”字段,“不适用”或“不适用”,以及数字0。无论它们以何种形式出现在您的数据集中,您都应该知道自己的目的,并确保这些数据的功能符合您的期望,这将在您开始使用数据时减少问题。”
——摘自2012年出版的《不良数据手册》,第10页
地址:https://amzn.to/3b5yutA
数据丢失可能有多种原因,需要根据问题所在的具体区域来确定,例如,包括测量仪器的损坏或数据本身无法获得。
数据丢失可能有多种原因,例如测量仪器故障、数据收集阶段的实验设计变更,或者从多组相似但不同的数据集收集数据
——摘自《数据挖掘:实用机器学习工具和技术》,2016年出版,第63页
地址:https://amzn.to/3bbfIAP
大多数机器学习算法要求输入类型为数字,并且数据集中的每一行和每一列都有值。在这种情况下,缺失值的出现可能会导致机器学习算法出现问题。
像这样,识别数据集中缺失的值并用数值替换它们是很常见的。这个过程称为数据插值或数据缺失值插值。
一种简单且流行的数据插值方法是使用统计方法来估计缺失值所在列中的值,然后使用该统计方法计算的统计数据来替换该列中的缺失值。
这种方法非常简单,因为统计数据可以很快计算出来,它也非常受欢迎,因为它被证明是非常有效的。
常见的统计数据包括:
整列的平均值、整列的中值、整列的许多值、常数值。现在我们熟悉了这些用于缺失值插值的统计方法。接下来,让我们看看缺少值的数据。
病马数据集
病马数据集用于记录患有腹部痉挛的马的医学特征,以及马最终是存活还是死亡。
数据集有300条记录(300行),有26个输入变量和1个输出变量。这是一个两类预测问题,标签有两个值,活马是1,死马是2。
简单模型的分类准确率约为67%。对于性能优良的模型,经过3次重复的10次交叉验证,预测结果的准确率可达85.2%。这定义了可以通过对数据集建模来表示的预期范围。
该数据集在几个列中包含大量缺失值,每个列都标有问号“?”。
以下是该数据集中缺失值的一些示例:
2,1,530101,38.50,66,28,3,3,?,2,5,4,4,?什么?什么?,3,5,45.00,8.40,?什么?,2,2,11300,00000,00000,21,1,534817,39.2,88,20?什么?,4,1,3,4,2,?什么?什么?,4,2,50,85,2,2,3,2,02208,00000,00000,22,1,530334,38.30,40,24,1,1,3,1,3,3,3,1?什么?什么?,1,1,33.00,6.70,?什么?,1,2,00000,00000,00000,11,9,5290409,39.10,164,84,4,1,6,2,2,4,4,1,2,5.00,3,?,48.00,7.20,3,5.30,2,1,02208,00000,00000,1...您可以通过以下链接了解有关此数据集的更多信息:
horse Colic Datasetps://raw . githubuser content . com/jbrownlee/Datasets/master/horse-Colic . CSV
马大肠数据集描述
我们不需要下载数据集,因为它将在下面的代码示例中自动下载。
在用Python语言加载数据集时,最好将所有缺失的值标记为NaN(而不是使用数字)。
我们可以使用熊猫库中的read_csv()函数来加载数据集,然后指定要加载的“na_values”缺少由符号表示的值。
...# load data seturl = ' https://raw . githubuser content . com/jbrownlee/Datasets/master/horse-colic . CSV ' data frame = read _ CSV(URL,标头=无,na_values= '?)加载后,让我们检查数据以确保所有"?"所有都被标记为NaN。
我们可以列出数据集的每一列,并观察每一列中缺失值的数量。
...#汇总范围(dataframe.shape)中I的每列缺少值的行数
在患病马数据集上填充不同统计策略的缺失值后获得的模型结果的方框图
进行预测时的简单估算转换
我们可能希望创建一个最终的模型管道,它使用用常数填充缺失值的方法,并使用随机森林算法来预测新数据。
我们可以首先定义一个管道,然后将它放在所有可用的数据上,最后用predict()函数转换它,将新数据作为参数。
新数据中每行的缺失值必须由NaN表示,这一点很重要。
...#定义新数据行=完整的示例代码如下:
#对来自numpy import nan的软管共线数据的常量插补策略和预测从熊猫import read _ csvfrom .系综import Ra ndomforestClassifierFrom sklearn . impert import simpleInferFrom sklearn . Pipeline import Pipeline # load data seturl = ' https://raw . githubuser content . com/jbrownlee/Datasets/master/horse-colic . CSV ' data frame = read _ CSV(URL,header=None,na_values= '?)#拆分为输入和输出元素sdata = dataframe.valuesX,y = data[:,:-1],data[:,-1]#创建建模管道管道管道=管道(步骤=[('i ',SimpleInputer(strategy = ' constant '),(' m ',rAnDomForestDiceptor())])#拟合模型管道,拟合(X,y)#定义新数据行= #进行预测。
吴振东,法国洛林大学计算机与决策硕士。目前从事人工智能和大数据相关的工作,成为一名数据科学家是一生的目标。来自山东济南,我不会开挖掘机,但我会写Java、Python和PPT。
-完毕-
为了在数据科学领域获得更多相关发展,我们诚挚邀请您关注清华-青岛数据科学研究所官方微信公众平台“数据派THU”。
本文由 在线网速测试 整理编辑,转载请注明出处。