面对众多数据难以下手?数据预处理让你轻轻松松“超车”

众所周知,基于现实世界数据不完整(缺少属性值,只有聚合数据),数据不一致(比如说错误或异常值)等原因,我们对数据预处理越发的看重。

在机器学习算法中,我们通常会使用一些技术来处理数据,以获得更好的结果。在这里,作者使用的是Python语言,你也可以用其他语言来处理数据。

面对众多数据难以下手?数据预处理让你轻轻松松“超车”


在python中,我们首先导入库/模块,这些库/模块可以帮助我们将代码区分为不同的部分。

导入库

面对众多数据难以下手?数据预处理让你轻轻松松“超车”


在这里,我们使用了不同的数据集,其中包括一些独立的变量。

导入数据集

面对众多数据难以下手?数据预处理让你轻轻松松“超车”


在导入数据时,我们发现在"年龄"和"工资"方面有一些缺失值。并且某些分类数据包含在了"采购"这一独立值中。

因此,我们需要从实际情况出发,解决这些问题。

缺失值

面对众多数据难以下手?数据预处理让你轻轻松松“超车”


想查找缺失值,我们就需要找出平均值。

分类数据

面对众多数据难以下手?数据预处理让你轻轻松松“超车”


什么是分类属性?

面对众多数据难以下手?数据预处理让你轻轻松松“超车”


分类变量是属于特定类别的变量。像头发颜色、性别、大学专业、大学就读、政治倾向、残疾或性取向都可以是列出分类变量的类别。通常,这些变量在一个集合中是固定不变的。

例如:

"头发颜色"这一类别可以包含"黑色"、"棕色"、"金色"和"红色"这些分类变量。

"性别"类别可以包含"男性"、"女性"或"其他人"这些分类变量。

拆分数据集

面对众多数据难以下手?数据预处理让你轻轻松松“超车”


拆分数据集意味着将完整的数据集分成两部分。即拆分为:

1.测试数据

2.训练数据

在拆分中,测试数据应包含20%的数据,训练数据应包含80%的数据。为了拆分数据,我们使用带有cross_validation的scikit-learn包,并然后把它导入模块train_test_split中。

功能拓展

面对众多数据难以下手?数据预处理让你轻轻松松“超车”


面对众多数据难以下手?数据预处理让你轻轻松松“超车”


什么是StandardScaler?

对许多机器学习估计器来说,数据集StandardScaler化是一种极其常见的需求。如果单个特征不像标准的正态分布数据时(例如,均值为0的高斯分布和单位方差为0的高斯分布),它们的表现会很糟糕。

预处理模块提供了实用程序类StandardScaler分析器,该分析器通过Transformer API来计算训练和测试数据集上的均值和标准差。相关链接:http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html

FIT_Transform()和Transform()之间的区别?

将数据居中(使其均值为0,单位标准差为0),减去均值,再除以标准差。

面对众多数据难以下手?数据预处理让你轻轻松松“超车”


因此,每个sklearn的变换的fit()只计算参数(例如StandardScaler的μ和σ)并将它们保存为内部对象状态。

功能拓展方法

面对众多数据难以下手?数据预处理让你轻轻松松“超车”


参考资料

如果你想要完整的python代码对每个数据进行预处理,请访问下面的链接:https://github.com/LAsain/Machine_Learning/blob/master/Data_Preprocessing.ipynb

此外,关于数据预处理的更多细节,请点击下面这个链接。熟练掌握这些数据预处理方法,能使你更上一层楼。

链接:http://scikit-learn.org/stable/modules/preprocessing.html

数据预处理的具体细节及其类型,你可以参照这个链接:https://medium.com/@silicon.smile1/data-preprocessing-b1552b4060f3(在这篇文章中,你会知道为什么我们需要数据预处理? 数据清理、数据集成、数据转换、数据离散化等更多内容。)

面对众多数据难以下手?数据预处理让你轻轻松松“超车”

出品


请使用浏览器的分享功能分享到微信等