数据挖掘之数据探索分析(EDA)

前言

数据探索在机器学习中我们一般称为EDA(Exploratory Data Analysis):


       是指对已有的数据(特别是调查或观察得来的原始数据)在尽量少的先验假定下进行探索,通过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法。



1.1 EDA目标

  • EDA的价值主要在于熟悉数据集,了解数据集,对数据集进行验证来确定所获得数据集可以用于接下来的机器学习或者深度学习使用。
  • 了解变量间的相互关系以及变量与预测值之间的存在关系
  • 引导数据科学从业者进行数据处理以及特征工程的步骤,使数据集的结构和特征集让接下来的预测问题更加可靠。

1.2 EDA操作流程(参考)

使用pandas、matplotlib等对数据进行分析

1)载入数据,查看数据基本信息

包括数据的头尾数据,数据集大小

# 1) 简略观察数据(head()+shape)
Train_data.head().append(Train_data.tail()) 

# 2) 观察数据shape
Train_data.shape

2)纵览数据概况

1. pd.describe出每列的统计量,个数count、平均值mean、方差std、最小值min、中位数25% 50% 75% 、以及最大值,看这个信息主要是瞬间掌握数据的大概的范围以及每个值的异常值的判断,比如有的时候会发现999 9999 ,-1 等值这些其实都是nan的另外一种表达方式,有的时候需要注意下
2. info 通过info来了解数据每列的type,有助于了解是否存在除了nan以外的特殊符号异常

3)判断缺失值和异常值

## 1) 查看每列的存在nan情况
Train_data.isnull().sum()

### 使用missingno包可视化缺省值
msno.matrix(Train_data.sample(250))
msno.bar(Train_data.sample(1000))

## 2) 查看异常值检测
Train_data.info()

### 快速查看特征中数据统计
Train_data['notRepairedDamage'].value_counts()
# 0.0 111361
# - 24324
# 1.0 14315
# Name: notRepairedDamage, dtype: int64

通过以上语句可以很直观的了解哪些列存在 “nan”, 并可以把nan的个数打印,主要的目的在于 nan存在的个数是
否真的很大,如果很小一般选择填充,如果使用lgb等树模型可以直接空缺,让树自己去优化,但如果nan存在的
过多、可以考虑删掉

通过.info()语句可以快速查看每个特征的数据类型,对于object类型的数据,一般会存在非数值型数据,应多加关注,可能会有非数字异常值的存在

4)了解预测值的分布

对标签数据进行总体的分布查看,可以通过matplotlib、seaborn等工具包进行分布图绘制

## 1) 总体分布概况(无界约翰逊分布等)
import scipy.stats as st
y = Train_data['price']
plt.figure(1); plt.title('Johnson SU')
sns.distplot(y, kde=False, fit=st.johnsonsu)
plt.figure(2); plt.title('Normal')
sns.distplot(y, kde=False, fit=st.norm)
plt.figure(3); plt.title('Log Normal')
sns.distplot(y, kde=False, fit=st.lognorm)

查看数据的偏度和峰度信息

## 2) 查看skewness and kurtosis
sns.distplot(Train_data['price']);
print("Skewness: %f" % Train_data['price'].skew())
print("Kurtosis: %f" % Train_data['price'].kurt())

查看标签数据的具体频数

## 3) 查看预测值的具体频数
plt.hist(Train_data['price'], orientation = 'vertical',histtype = 'bar', color ='red')
plt.show()

查看特征所属类型(类别特征和数字特征)并对类别特征查看unique分布

对于数字特征可以查看特征之间的相关性、特征的峰度和偏度、可视化每个特征观察

对于类别特征可以查看 unique分布、类别特征箱形图可视化、类别特征的小提琴图可视化、类别特征的柱形图可视化、类别特征的每个类别频数可视化(count_plot)等

1.3 总结

数据探索有利于我们发现数据的一些特性,数据之间的关联性,对于后续的特征构建是很有帮助的。
1. 对于数据的初步分析(直接查看数据,或.sum(), .mean(),.descirbe()等统计函数)可以从:样本数量,训练集数量,是否有时间特征,是否是时许问题,特征所表示的含义(非匿名特征),特征类型(字符类似,int,float,time),特征的缺失情况(注意缺失的在数据中的表现形式,有些是空的有些是”NAN”符号等),特征的均值方差情况。
2. 分析记录某些特征值缺失占比30%以上样本的缺失处理,有助于后续的模型验证和调节,分析特征应该是填充(填充方式是什么,均值填充,0填充,众数填充等),还是舍去,还是先做样本分类用不同的特征模型去预测。
3. 对于异常值做专门的分析,分析特征异常的label是否为异常值(或者偏离均值较远或者事特殊符号),异常值是否应该剔除,还是用正常值填充,是记录异常,还是机器本身异常等。
4. 对于Label做专门的分析,分析标签的分布情况等。
5. 进步分析可以通过对特征作图,特征和label联合做图(统计图,离散图),直观了解特征的分布情况,通过这一步也可以发现数据之中的一些异常值等,通过箱型图分析一些特征值的偏离情况,对于特征和特征联合作图,对于特征和label联合作图,分析其中的一些关联性。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值