首发于 快乐机器学习
数据挖掘(一)EDA-数据探索性分析

数据挖掘(一)EDA-数据探索性分析

EDA(Exploratory Data Analysis),全名数据探索性分析,是通过了解数据集,了解变量间的相互关系以及变量与预测值之间的关系,从而帮助我们后期更好地进行特征工程和建立模型,是数据挖掘中十分重要的一步。

所需工具:数据科学库(pandas、numpy、scipy)、可视化库(matplotlib、seabon)

大致包含步骤:

  1. 数据总览
  2. 查看数据缺失和异常
  3. 查看预测值的分布
  4. 把特征分成类别特征、数值特征,然后对这两种种特征进行更细致的分析

对于不懂的名词,文末有参考

下面我以 天池二手车价格预测为例子,进行以上步骤的分析。

1. 查看数据集整体情况

用pandas的.head()等方法,查看数据的具体形式;用.info()查看数据的类型和数据量;用.describe查看数据极值、均值、方差等统计指标以及在回归等问题中,需要保持量纲一致,方法是对变量进行归一化。

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 150000 entries, 0 to 149999
Data columns (total 31 columns):
 #   Column             Non-Null Count   Dtype  
---  ------             --------------   -----  
 0   SaleID             150000 non-null  int64  
 1   name               150000 non-null  int64  
 2   regDate            150000 non-null  int64  
 3   model              149999 non-null  float64
 4   brand              150000 non-null  int64  
 5   bodyType           145494 non-null  float64
 6   fuelType           141320 non-null  float64
 7   gearbox            144019 non-null  float64
 8   power              150000 non-null  int64  
 9   kilometer          150000 non-null  float64
 10  notRepairedDamage  150000 non-null  object 
 11  regionCode         150000 non-null  int64  
 12  seller             150000 non-null  int64  
 13  offerType          150000 non-null  int64  
 14  creatDate          150000 non-null  int64  
 15  price              150000 non-null  int64  
 16  v_0                150000 non-null  float64
 17  v_1                150000 non-null  float64
 18  v_2                150000 non-null  float64
 19  v_3                150000 non-null  float64
 20  v_4                150000 non-null  float64
 21  v_5                150000 non-null  float64
 22  v_6                150000 non-null  float64
 23  v_7                150000 non-null  float64
 24  v_8                150000 non-null  float64
 25  v_9                150000 non-null  float64
 26  v_10               150000 non-null  float64
 27  v_11               150000 non-null  float64
 28  v_12               150000 non-null  float64
 29  v_13               150000 non-null  float64
 30  v_14               150000 non-null  float64
dtypes: float64(20), int64(10), object(1)
memory usage: 35.5+ MB
data_testA.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 50000 entries, 0 to 49999
Data columns (total 30 columns):
 #   Column             Non-Null Count  Dtype  
---  ------             --------------  -----  
 0   SaleID             50000 non-null  int64  
 1   name               50000 non-null  int64  
 2   regDate            50000 non-null  int64  
 3   model              50000 non-null  float64
 4   brand              50000 non-null  int64  
 5   bodyType           48587 non-null  float64
 6   fuelType           47107 non-null  float64
 7   gearbox            48090 non-null  float64
 8   power              50000 non-null  int64  
 9   kilometer          50000 non-null  float64
 10  notRepairedDamage  50000 non-null  object 
 11  regionCode         50000 non-null  int64  
 12  seller             50000 non-null  int64  
 13  offerType          50000 non-null  int64  
 14  creatDate          50000 non-null  int64  
 15  v_0                50000 non-null  float64
 16  v_1                50000 non-null  float64
 17  v_2                50000 non-null  float64
 18  v_3                50000 non-null  float64
 19  v_4                50000 non-null  float64
 20  v_5                50000 non-null  float64
 21  v_6                50000 non-null  float64
 22  v_7                50000 non-null  float64
 23  v_8                50000 non-null  float64
 24  v_9                50000 non-null  float64
 25  v_10               50000 non-null  float64
 26  v_11               50000 non-null  float64
 27  v_12               50000 non-null  float64
 28  v_13               50000 non-null  float64
 29  v_14               50000 non-null  float64
dtypes: float64(20), int64(9), object(1)
memory usage: 11.4+ MB

2. 查看数据缺失和异常

通过查看数据结合赛题给出的数据信息,我们可以把特征分成三部分,分别是日期特征、类别特征、数值特征。然后看看每一维特征的缺失率、类别个数和异常值(异常值不处理可能会造成过拟合)等信息

3. 查看预测值的分布

目标变量要尽量符合高斯分布。有很多算法的前提假设是数据符合正态分布,例如线性回归里面最小二乘法的一个前提假设就是数据符合正态分布。下面两个图分布是目标变量转换前,转换后

4. 数值型特征分析

查看偏度和峰度

如果训练集和测试集分布不一致,就要考虑进行分布转换。还好,我们这里数据分布都很一致,不需要转换

相关性分析

为后期特征选择做准备

5. 类别特征分析

查看类别个数及其分布情况

类别倾斜非常严重的可以删掉,比如:seller、offerType

有异常值的要处理,比如:notRepairedDamage


结语

至此,对于数据的分析有了一个概况,比如我们了解到v12、kilometers和v3是几个比较重要的特征,匿名特征的分布较为符合正态分布等。对那些数据拥有缺省值和异常值也有了一个了解,这对于后续的工作是十分有帮助的。


欢迎大家讨论指正~

参考:

  1. 偏度峰度解释
  2. 箱线图和小提琴图

代做工资流水公司淄博车贷流水公司潮州车贷流水费用邢台薪资流水单镇江制作薪资流水单徐州做对公银行流水滁州代办银行流水单昆明贷款流水代开泉州车贷流水样本贷款银行流水代办哈尔滨离职证明开具东莞对公流水查询温州做公司流水江门入职银行流水价格岳阳工作收入证明办理金华做个人银行流水商丘开房贷流水洛阳代做签证工资流水芜湖签证工资流水开具荆州对公账户流水制作邢台工资流水账单打印保定房贷收入证明报价沧州转账流水费用太原对公流水多少钱南昌银行流水修改代做杭州打流水湛江查询银行流水单镇江打工资代付流水孝感办理流水兰州代开入职工资流水珠海代开消费贷流水香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化