面对众多数据难以下手?数据预处理让你轻轻松松“超车”
点击上方关注,All in AI中国
众所周知,基于现实世界数据不完整(缺少属性值,只有聚合数据),数据不一致(比如说错误或异常值)等原因,我们对数据预处理越发的看重。
在机器学习算法中,我们通常会使用一些技术来处理数据,以获得更好的结果。在这里,作者使用的是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(在这篇文章中,你会知道为什么我们需要数据预处理? 数据清理、数据集成、数据转换、数据离散化等更多内容。)
出品