【风控模型】一、探索性数据分析(EDA)

什么是EDA

探索性数据分析(Exploratory Data Analysis,EDA)主要用于数据分析过程中的探索,通过探索可以发现数据背后隐藏的 内在规律和联系,挖掘出数据中出现 异常情况 的原因。

EDA 总览

  • 探索单变量质量
    • 变量类型情况
    • 变量缺失情况
    • 变量异常情况
    • 变量重复情况
    • 变量均匀情况
  • 探索单变量价值
    • 变量与标签主观相关性(业务逻辑)
    • 变量与标签客观相关性(数据表现)
  • 探索多变量关联
    • 连续变量间关联
      • 可视化:散点图; 相关性热力图
      • 数学验证: 皮尔逊系数; 互信息
    • 离散变量间关联
      • 可视化:柱状图; 饼图分组表
      • 数学验证: 卡方检验
    • 连续与离散变量间关联
      • 可视化: 直方图; 箱线图; Quantile-Quantile (QQ图)

通过上述的流程, 可以大概分析出:

  1. 变量是否需要筛选、替换和清洗;
  2. 变量是否需要转换;
  3. 变量之间是否需要交叉;
  4. 变量是否需要采样;

EDA 实战

Pandas Profiling

关于 pandas_profiling 细节参数设定可以参考 advanced_usage

pandas_profiling 对于数据分析提供通用配置文件, 用户可以根据自己需求订制, 从而不断复用, 减少代码量. 配置文件见config_default.yaml

# conda install -c conda-forge pandas-profiling
from pandas_profiling import ProfileReport
profile = ProfileReport(df, title="Pandas Profiling Report", explorative=True)
profile.to_widgets()
profile.to_file("your_report.html")

pandas_profilingTitanic Dataset上的数据分析样例

Sweetviz

Sweetviz与Pandas Profiling类似, 其独特特点在于, 可以对比数据集之间的数据特点差异(评估训练集, 验证集以及测试集数据分布).

# conda install weetviz
import sweetviz as sv
sv_report = sv.analyze(source = {train_data: "train", valid_data: "valid", test_data: "test"}, target_feat = "target")
sv_report.show_html(filepath='SWEETVIZ_REPORT.html')
# 针对子集进行数据分析
sub_class_report = sv.compare_intra(
    train_data, 
    train_data["Sex"] == "male", # 区分条件
    ["Male", "Female"]           # 命名标签
)

SweetvizTitanic Dataset上的数据分析样例, 针对分类类别特征, 相关性表现为其为其他特征提供信息的程度, 其结果并不对称.

pandasGUI

pandasGUI 工具相对自由, 可以通过拖拽实现 EDA 过程, 比较适合传统 EDA 完成后自我扩展时进行使用.

from pandasgui import show
gui = show(mpg)

参考资料


【风控模型】一、探索性数据分析(EDA)
https://www.windism.cn/4060319945.html
作者
windism
发布于
2022年3月17日
许可协议