EDA目标
EDA的价值主要在于熟悉数据集,了解数据集,对数据集进行验证来确定所获得数据集可以用于接下来的机器学习或者深度学习使用。
当了解了数据集之后我们下一步就是要去了解变量间的相互关系以及变量与预测值之间的存在关系。
引导数据科学从业者进行数据处理以及特征工程的步骤,使数据集的结构和特征集让接下来的预测问题更加可靠。
完成对于数据的探索性分析,并对于数据进行一些图表或者文字总结。
### 所有特征集均脱敏处理
* name - 汽车编码
* regDate - 汽车注册时间
* model - 车型编码
* brand - 品牌
* bodyType - 车身类型
* fuelType - 燃油类型
* gearbox - 变速箱
* power - 汽车功率
* kilometer - 汽车行驶公里
* notRepairedDamage - 汽车有尚未修复的损坏
* regionCode - 看车地区编码
* seller - 销售方
* offerType - 报价类型
* creatDate - 广告发布时间
* price - 汽车价格
* v_0', 'v_1', 'v_2', 'v_3', 'v_4', 'v_5', 'v_6', 'v_7', 'v_8', 'v_9', 'v_10', 'v_11', 'v_12', 'v_13','v_14'(根据汽车的评论、标签等大量信息得到的embedding向量)【人工构造 匿名特征】
包括一些蝉蛹得数据科学库 pandas、numpy、scipy;可视化库 matplotlib、seabon;数据得分布,异常值情况,预测值分布,数字特征之间相关性,类型特征分析。
下载所需安装包
pip install 安装包名称;
查看数据的具体数值(数据已做脱敏)
测试数据集没有price 。因此30 列数据集。
数据集的概况
判断数据缺失和异常
是否有空的列
有空的的字段有多少行的值为空。
又数据图可知,训练数据确实值是4项,测试数据缺失是3项(price价格预测不算)。
由统计信息可知 notRepairedDamage 为object类型其他都为数字 。查看有哪些值。
由值统计可知,其实- 也是nan值。将其替换为空值。而且发现这一列样本类别严重倾斜。
查看其他列是否样本失衡。
由上图可知:可能会失衡的有brand bodyType fuelType gearbox
notRepairedDamage seller offerType这些列
下边的seller 和offerType 严重失去平衡,去掉。
了解预测值的分布
价格不服从正态分布,所以在进行回归之前,它必须进行转换。虽然对数变换做得很好,但最佳拟合是无界约翰逊分布
查看偏度和峰度
一.偏度(Skewness)
Definition:是描述数据分布形态的统计量,其描述的是某总体取值分布的对称性,简单来说就是数据的不对称程度。。
偏度是三阶中心距计算出来的。
(1)Skewness = 0 ,分布形态与正态分布偏度相同。
(2)Skewness > 0 ,正偏差数值较大,为正偏或右偏。长尾巴拖在右边,数据右端有较多的极端值。
(3)Skewness < 0 ,负偏差数值较大,为负偏或左偏。长尾巴拖在左边,数据左端有较多的极端值。
(4)数值的绝对值越大,表明数据分布越不对称,偏斜程度大。
| Skewness| 越大,分布形态偏移程度越大。
二.峰度(Kurtosis)
Definition:偏度是描述某变量所有取值分布形态陡缓程度的统计量,简单来说就是数据分布顶的尖锐程度。
峰度是四阶标准矩计算出来的。
(1)Kurtosis=0 与正态分布的陡缓程度相同。
(2)Kurtosis>0 比正态分布的高峰更加陡峭——尖顶峰
(3)Kurtosis<0 比正态分布的高峰来得平台——平顶峰
查看预测值的具体频数:
看频数, 大于20000得值极少,其实这里也可以把这些当作特殊得值(异常值)直接用填充或者删掉,再前面进行。
log变换 z之后的分布较均匀,可以进行log变换进行预测,这也是预测问题常用的trick。技巧
特征分为类别特征和数字特征,并对类别特征查看unique分布
将标签price,类别特征和数字特征分离.
类别特征nunique分布
数字特征分析
1.价格和其他数字特征的相关性分析
2.查看数字特征的风度和偏度
可知匿名的特征被处理过所以相对比较均匀
类别特征分析
数据探索有利于我们发现数据的一些特性,数据之间的关联性,对于后续的特征构建是很有帮助的。
对于数据的初步分析(直接查看数据,或.sum(), .mean(),.descirbe()等统计函数)可以从:样本数量,训练集数量,是否有时间特征,是否是时许问题,特征所表示的含义(非匿名特征),特征类型(字符类似,int,float,time),特征的缺失情况(注意缺失的在数据中的表现形式,有些是空的有些是”NAN”符号等),特征的均值方差情况。
分析记录某些特征值缺失占比30%以上样本的缺失处理,有助于后续的模型验证和调节,分析特征应该是填充(填充方式是什么,均值填充,0填充,众数填充等),还是舍去,还是先做样本分类用不同的特征模型去预测。
对于异常值做专门的分析,分析特征异常的label是否为异常值(或者偏离均值较远或者事特殊符号),异常值是否应该剔除,还是用正常值填充,是记录异常,还是机器本身异常等。
对于Label做专门的分析,分析标签的分布情况等。
进一步分析可以通过对特征作图,特征和label联合做图(统计图,离散图),直观了解特征的分布情况,通过这一步也可以发现数据之中的一些异常值等,通过箱型图分析一些特征值的偏离情况,对于特征和特征联合作图,对于特征和label联合作图,分析其中的一些关联性。
参考:https://github.com/datawhalechina/team-learning/tree/master/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98%E5%AE%9E%E8%B7%B5%EF%BC%88%E4%BA%8C%E6%89%8B%E8%BD%A6%E4%BB%B7%E6%A0%BC%E9%A2%84%E6%B5%8B%EF%BC%89
https://www.zhihu.com/people/seu-aigua-niu-che
github: https://github.com/chehongshu
skew、kurt说明参:https://www.cnblogs.com/wyy1480/p/10474046.html
https://www.jianshu.com/p/6e18d21a4cad