机器学习数据预处理的坑

举报
开飞机的大象 发表于 2019/01/11 14:07:26 2019/01/11
【摘要】 机器学习过程中,数据预处理的步骤是非常重要的,对于建模人员而言,用于数据分析,预处理,特征工程的时间甚至会多于模型搭建与调优的时间。

机器学习过程中,数据预处理的步骤是非常重要的,对于建模人员而言,用于数据分析,预处理,特征工程的时间甚至会多于模型搭建与调优的时间。

常见的数据预处理方法有归一化、标准化、中心化、零均值化,以及独特编码。

我通常是使用sklearn进行数据预处理,以归一化为例,最常用的包是:from sklearn.preprocessing import MinMaxScaler,当我们准备好数据,分割出了训练集与测试集,要对两个部分进行训练的时候,通常应当只对训练集进行fit,得到训练好的归一化标准,对训练集与测试集进行transform得到归一化结果。

这么做的原因显而易见,避免测试集中的数据特征影响了训练集的归一化过程,造成测试集的特征泄露,导致模型结果过拟合,影响模型效果。

有一点需要注意的是,倘若测试集中的数据集不在训练集的最大最小值范围内,则把测试集大于训练集最大值的数据调整为归一化的最大值,把测试集小于训练集最大值的数据调整为归一化的最小值。

不只是归一化,在标准化、中心化、零均值化这些数据预处理方法中,也需要注意这一点。

       但在one-hot编码过程中,却恰好相反。

       原因是,one-hot编码需要对数据集特定字段的每一个类别进行one-hot编码,如假如我们只对训练集进行one-hot编码额训练,如果测试集中出现了训 练集中没有的数据类别,那么将无法对测试集完成one-hot编码动作。

       因此,为了保证one-hot编码顺利进行,我们应当将测试集,训练集指定字段合并后的所有类别进行one-hot编码训练。

====================================================================

本文发表在李思原博客“机器在学习”

原文链接:http://www.siyuanblog.com/?p=2033

欢迎扫码关注我的微信公众号:聚数为塔

qrcode_for_gh_b8391fc7ce11_430.jpg

=====================================================================


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。