(一)数据探索性分析(EDA)目标
EDA的价值主要在于熟悉数据集,了解数据集,对数据集进行验证来确定所获得数据集可以用于接下来的机器学习或者深度学习使用。
当了解了数据集之后我们下一步就是要去了解变量间的相互关系以及变量与预测值之间的存在关系。
引导数据科学从业者进行数据处理以及特征工程的步骤,使数据集的结构和特征集让接下来的预测问题更加可靠。
完成对于数据的探索性分析,并对于数据进行一些图表或者文字总结并打卡。
(二)EDA分析内容
1. 载入各种数据科学以及可视化库:
数据科学库 pandas、numpy、scipy;
可视化库 matplotlib、seabon、missinggo;
其他;
2. 载入数据:
载入训练集和测试集,使用read_csv等函数载入数据;
简略观察数据(head()+shape);
3. 数据总览:
通过describe()来熟悉数据的相关统计量,作用于数值型属性。
通过info()来熟悉数据类型
4. 判断数据缺失和异常
查看每列的存在nan情况,如果空值较多则考虑删除,如空值较少,则考虑填充,如果使用lgb等树模型则不需填充。
异常值检测,观察统计信息和统计图查看异常值。
5. 了解预测值的分布
总体分布概况(无界约翰逊分布等)
查看skewness and kurtosis,直接使用skew和kurt函数。
查看预测值的具体频数,使用value_counts
# log变换 z之后的分布较均匀,可以进行log变换进行预测,这也是预测问题常用的trick
6. 特征分为类别特征和数字特征,并对类别特征查看unique分布
# 这个区别方式适用于没有直接label coding的数据
# 这里不适用,需要人为根据实际含义来区分
# 数字特征
# numeric_features = Train_data.select_dtypes(include=[np.number])
# numeric_features.columns
# 类型特征
#categorical_features=Train_data.select_dtypes(include=[np.object])
# categorical_features.columns
7. 数字特征分析
相关性分析
查看几个特征得 偏度和峰值
每个数字特征得分布可视化
数字特征相互之间的关系可视化
多变量互相回归关系可视化
8. 类型特征分析
unique分布
类别特征箱形图可视化
类别特征的小提琴图可视化
类别特征的柱形图可视化类别
特征的每个类别频数可视化(count_plot)
9. 用pandas_profiling生成数据报告
(三)小结
1. 对于数据的初步分析(直接查看数据,或.sum(), .mean(),.descirbe()等统计函数)可以从:样本数量,训练集数量,是否有时间特征,是否是时许问题,特征所表示的含义(非匿名特征),特征类型(字符类似,int,float,time),特征的缺失情况(注意缺失的在数据中的表现形式,有些是空的有些是”NAN”符号等),特征的均值方差情况。
2. 分析记录某些特征值缺失占比30%以上样本的缺失处理,有助于后续的模型验证和调节,分析特征应该是填
充(填充方式是什么,均值填充,0填充,众数填充等),还是舍去,还是先做样本分类用不同的特征模型去预测。
3. 对于异常值做专门的分析,分析特征异常的label是否为异常值(或者偏离均值较远或者事特殊符号),异常值是否应该剔除,还是用正常值填充,是记录异常,还是机器本身异常等。
4. 对于Label做专门的分析,分析标签的分布情况等。
5. 进步分析可以通过对特征作图,特征和label联合做图(统计图,离散图),直观了解特征的分布情况,通过这一步也可以发现数据之中的一些异常值等,通过箱型图分析一些特征值的偏离情况,对于特征和特征联合作图,对于特征和label联合作图,分析其中的一些关联性。
(四)疑问
1. 时间类型数据如何处理?
2.是否可以使用DP来进行自动特征提取?直接解决问题?