建模数据预处理过程(数据预处理怎么办)
数据预处理是为了提升数据质量,数据输入质量对数据模型效果起到非常关键作用,数据质量很差时模型起不到效果都是很正常的,所以建模前要做好心理准备、多花点时间做好数据预处理。数据预处理的常规基本目标是提升数据完整性、准确性、唯一性、有效性等,清洗过程中要有意识地及时提醒自己这些目标,达到目标适可而止,避免陷入局部小问题中难以自拔。
数据预处理包括但不限于数据清洗、数据集成、数据变换、数据规约等步骤,可以用这些逐步检测并优化提升数据质量,不是每次预处理都需要做这些所有步骤,视数据情况挑选若干即可。
一、数据清洗
1空值:形式上的脏数据;数据显示NULL或Nan,用填充法(e.g.最值/均值/中位数/众数填充;scikit-learn中inputer类填充;)补充完善,或者空值数量占比很小时可以直接删除
2重复记录
形式上的脏数据;重复记录数据是无效数据,占据存储资源同时还不起任何作用,直接进行去重操作即可
3错误值
内容上的脏数据;异常符号%#)*之类、明显错误数据(比如百分比列都是小数或者百分数时突然来个字母字符串这种,或者是否列枚举值都是0和1但突然来个999等)等现象需进行删除/替换/修正等处理
4离群值/异常值
内容上的脏数据;散点图、箱线图都可以直观看出离群/异常情况,常规处理方法是删除法、替换法(可选用空值替换法)等;
以上注意,面对各种形式的脏数据,第一步是先简单统计下脏数据量占比,第二步是根据此比重可以投入相应比重的时间精力或资源进行数据质量提升,比如比重非常小不足0.001%时直接删除,占比较高10%以上时就要实施多种提升优化策略
二、数据集成
采集到的数据往往是很分散的,可以集成为一个或数量不多的少量数据文件,比如多个EXCEL SHEET集成为1个SHEET,或者多个EXCEL集成为1个EXCEL,或用Python/SQL写代码直接将多个数据源集成为同一个数据源
三、数据变换
1.缩放
当不同自变量的欧式距离类数值量级相差很大时会导致高量级变量将弱化低量级变量对模型起到的作用,比如X1变量取值范围1-5之间,X2取值范围10000-50000之间,直接用X1和X2会增强X2作用程度同时弱化X1作用程度。此时需要对特征变量进行缩放,从而让特征变量都归属于相同量纲范围、让特征变量在同一个量纲基准的前提下进行比较分析等处理,好处是为提升模型质量奠定基础,坏处是牺牲了一些可解释性的便捷程度。e.g.sklearn.preprocessing中StandardScaler()。同理,对因变量也可以视情况做类似缩放处理
2.分类编码
通过编码将分类属性转换成数值形式,e.g.sklearn.preprocessing中LabelEncoder将类别编码成1/2/3...,OneHotEncoder创建哑变量将每类枚举值转换成0和1;
3.离散化
连续变量通过离散化转换成分类变量,常规做法是划分bins区间,将连续变量一共划分成N个bin,每个bin代表不同区间范围
四、规约分析
主要基于特征变量规约处理类,相对于以上步骤,此时已经开始简单的统计分析了,比如为了提升特征变量质量要进行粗粒度的相关对比、回归拟合、参数估计等
大家都说数据预处理占据数据建模全过程中60%以上比重,是很符合实际情况的。这一步至关重要,多花点时间是为了打好数据基础,这一步做不好后面模型即便出结果也很有可能是错的、导致多次返工。做好数据预处理为后续建模提供有效的更准的数据基础,以便后续模型结果解读时论据更充分些。
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com