之前说到在模型选择方面没有银弹,那么如何确定最合适的模型提出假设,探索性数据分析(EDA)是一个必不可少的环节。
为什么要做EDA
- 更好的理解数据。数据主要是什么类型,数据量有多少,大概分布如何。。
- 构建模型直觉。根据对数据的了解可以构建对于模型的直觉,这可能需要一些经验。
- 提出模型假设。当你对数据有基本的了解以及直觉之后就可以预设从那个范围选取模型,线性、决策树、聚类还是NN。
分析什么
这里我们以iris数据集为例
import pandas as pd
iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
-
数据取样 随机获取5个样例,可以看到有多少列,每列的数据类型。类似的你也可以用
.head()
或者.tail()
方法, 得到的分别是数据集的头部和尾部数据。 -
概要统计信息
主要用到的是Pandas的describe()
这个方法输出非常丰富,包括数据总量、平均数、方差、最小最大值以及各种分位数。通过这个结果可以对数据大概分布有一个了解
- 可视化 数据可视化在EDA过程中非常重要,常常可以通过可视化过程发现可能的建模方向。可视化主要有两个目的,一是探索单个特征的分布规律 , 二是探索特征之间的相互关系。
在单特征探索用到的主要工具有直方图、散点图
直方图 直方图将单个特征值的数据划分为不同的数据区段,可以直观看到数据在各个区段的分布情况。需要注意的是,直方图是一种聚合方法,我们无法看到一个数据区间里面的数据分布情况,这有时候可能造成判断偏差。 在存在数据缺失或有异常值的情况这种误差可能尤其明显,这时候可能需要做一些预处理,比如填补缺失值或者取log等操作。
点图
以index为x轴, 各特征值为y值画散点图,可以看到数据随index变化情况,用以检查数据有没有shuffle, 比如上图petal_length是均匀分布的,petal_width就呈现出阶段性特点。
在多特征相互作用探索用到的主要工具有散点图和相关矩阵图
散点图
可以看两个特征之间的相互关系。值得注意的是,有时散点图会
矩阵图
矩阵图囊括了散点图和直方图,是Pandas提供的一种非常方便的可视化工具,但是需要注意的是对于大型数据集渲染速度可能有些慢
写在最后 EDA 由于其探索方式多种多样,其本身可以称之为一种艺术,其效果好坏来自于你对数据的直觉以及对于各种工具技巧的熟悉程度,想要提高这方面的能力需要不断的练习并且学习各种先进的思路。