第二次打卡 数据处理

直播课程 https://tianchi.aliyun.com/notebook-ai/detail?postId=95457

赛季理解

~拿到赛题,先阅读赛题。查看赛题背景和需要完成的任务。是否存在数据缺失,误报,飘移等情况。可能会包含处理数据需要的步骤。需要考虑模型的泛化能力。
~查看赛题,列名及描述。
~考虑显式特征和匿名特征。对于匿名特征做一些变换猜测特征的特点。考虑不同表之间的关联和匹配。
~考虑数据量,笔记本的承受能力。

评测标准

这道赛题使用MAE评测标准。
不同评测指标对模型的判断标准不一样,会影响评分。最好是让训练评测标准和赛题标准一致。

评估指标是对于模型效果的数值型量化,可以使用sklearn.metrics中的函数进行评分计算。
分类:敏感度(accuracy_score)、Precision、Recall、F1-score、AUC-score
回归:MAE(平均绝对误差)、MSE(均方误差)、MAPE(平均绝对百分误差)、R2-score

结果提交

注意提交的标准和格式。

这道题是典型的回归问题,主要有应用xgb、lgb、catboost以及pandas numpy seaborn sklearn等常用包和框架来挖掘。

使用sklearn的metrics来判断分类效果。

总结:

理解赛题是什么问题,需要完成什么。
对数据进行读取,了解数据分布。
根据赛题的评价指标,调整本地模型评价以及调整模型。
了解赛题背景里面隐藏的条件,比如数据缺失,异常等。

Baseline

1 导入工具包
导入数据,查看数据特征,简单判断是否存在异常点。
2 数据查看
查看train和test对应位置的分布情况
3 特征工程
提取特征列,提取数据列,文本列进行处理,添加逻辑特征
构建训练测试样本
填补缺失值
4 模型训练
使用xgb进行模型调参
5 模型融合

第二部分

探索性数据分析EDA

通过各种方法,对所给的数据集进行熟悉,了解数据的特征,了解各个变量之间的关系,进行数据清洗数据梳理,以便于下一步选取特征工程进行建模,这一步骤可能会反复好多次,占据整个建模流程的大多数时间。

  • 绘图
    原始图
    统计图(均值、直方图、箱型)
    对比不同特征的差异

时序图,便于观察数据特点,周期性,震荡幅度
直方图,方便观察数据分布,
密度曲线图,连续的分布
箱型图,方便查看不同区间数据的分布以及查看异常情况
小提琴图,可看出值附近的频率

  • 量化方法
    相关性分析:
    定类
    定序
    定距

独立性分析:

代码实战

导入各种库:

  • 载入各种数据科学以及可视化库:
    数据科学库 pandas、numpy、scipy、sklearn;
    可视化库 matplotlib、seabon;
    其他;
  • 载入数据:
    载入训练集和测试集;
    简略观察数据(head()+shape),查看字段名,行列数等基础信息
  • 数据总览:
    通过describe()来熟悉数据的相关统计量,对比训练集和测试集是否一致
    通过info()来熟悉数据类型
  • 判断数据缺失和异常
    通过isnull()函数进行空值的统计和检验,可以通过sum计数也可以通过可视化展示。空值可以进行填充,多的情况下可以考虑删除。对于lgb等树模型,可以不填充,模型会自动填充。
    异常值检测。使用value_counts()函数查看数据分布情况,对于普遍的不具备特征性的字段可以考虑删除,del Train_data[‘字段名’]
  • 了解预测值的分布
    总体分布概况,查看待预测值的分布,scipy.stats统计包,同时可以使用seaborn进行曲线拟合,选取适当的分布进行正态分布转换
    查看偏度和蜂度 .skew() .kurt()
    查看预测值的具体频数,查看分布情况,可以考虑使用对数转化等转换方法,使得分布均匀

特征分为两种,一种是数字型特征,一种是类别型特征,对他们分开进行分析。

  • 数字特征分析
    相关性分析,使用corr()函数,先选取价格字段,与其他字段进行相关性排序;使用sns.heatmap 热度,分析不同字段相互的相关性。
    偏度和峰值
    每个数字特征得分布可视化
    数字特征相互之间的关系可视化 sns.pairplot
    多变量互相回归关系可视化。将变量和价格绘制成散点图,再使用sns函数拟合,

  • 类型特征分析,查看数据分布情况
    unique分布
    类别特征箱形图可视化,使用sns.boxplot
    类别特征的小提琴图可视化 sns.violinplot
    类别特征的柱形图可视化类别
    特征的每个类别频数可视化(count_plot)

  • 用pandas_profiling生成数据报告

#导入warnings包,利用过滤器来实现忽略警告语句。
import warnings
warnings.filterwarnings('ignore')
import pandas as pd #导入各种常用包
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import missingno as msno

sorted_value(inplace=True) # 使用排序后得到的新数据集替换原来的数据集

你可能感兴趣的:(python)