天池-工业蒸汽量排放预测1
链接:工业蒸汽量预测_学习赛_赛题与数据_天池大赛-阿里云天池的赛题与数据 (aliyun.com)
数据探索
变量识别
通过变量类型,数据类型等方面分析,常见的有:字符型变量,数值型变量,连续性变量,类别性变量
变量分析
单变量分析
连续性变量需要统计数据的中心分布趋势与变量分布
类别性变量使用频次或者占比表示每一个类别的分布情况。可用柱状图可视化分布情况
双变量分析
双变量分析主要是为了洞察各变量之间的关系
1. 连续型与连续型
- 绘制散点图观察是线性还是非线性
- 计算相关性
散点图如下所示:
2. 类别性与类别性
- 双向表,建立频次(次数)与频率(占比)的表格
- 堆叠柱状图,更直观
- 卡方检验,用于两个和两个以上样本率及两个二值型离散变量的关联性分析,即比较理论频次与实际频次的吻合程度
3. 类别性与连续性
- 小提琴图,可以在分析变量在不同类别时,另一个连续变量的分布情况,如下图
缺失值处理
产生原因就不说了,反正没啥实际用处,tmd都得处理,处理办法如下:
1. 删除:成列删除和成对(行)删除
2. 平均值,众数,中值填补:最常用的办法
3. 建立模型填充:好处:规范;坏处:模型有问题就G
异常值处理
异常值的影响为增加错误方差,降低模型的拟合能力
1. 如何检测?(异常值通常取决于业务理解)
- 箱线图
2. 处理办法
- 删除:很小或很少的直接删
- 转化:如取对数,减少极值影响
- 填充:平均值,中值等,前提是人为的,模型预测也可
- 区别对待:真的很多就正常的分一组,异常的分一组,然后模型合并
变量转换
对变量的分布不平均的时候,需要对变量的取值区间进行转换,使其落在合理的区间内。如下,当需要基于正态分布假设前提的模型的时候, 进行对数转换
1. 方法
- 对数转换:右转左,左转右,负或非零不能转
- 取平方根或立方根:有波形影响
- 变量分组
新变量生成
目的是为了与目标变量有更好的相关性
1. 方法
- 创建派生变量:将Mr,Mrs,Miss作为新变量
- 哑变量
常用函数与作图
# 读取txt,\t为分隔 data = pd.read_csv('url', sep='\t', encoding='?') # 查看基本信息 data.info() # 查看统计信息 data.describe()
# 箱线图 fig = plt.figure(figsize=(4, 6)) sns.boxplot(train_data['V0'], orient='v', width=0.5)
筛选出异常值
# 直方图 plt.figure(figsize=(10, 5)) ax = plt.subplot(1, 2, 1) sns.distplot(train_data['V0'], fit=stats.norm)
# q-q图,查看是否符合正态发布 ax = plt.subplot(1, 2, 1) res = stats.probplot(train_data['V0'], plot=plt)
非正态分布的数据可以进行数据变换
# KDE,对直方图的加窗平滑 plt.figure(figsize=(8,4), dpi=150) ax = sns.kdeplot(train_data['V0'], color='Red', shade=True) ax = sns.kdeplot(test_data['V0'], color='Blue', shade=True) ax.set_xlabel('V0') ax.set_ylabel('Frequency') ax = ax.legend(['train', 'test'])
在test和train中如果分布不一致,模型的泛化能力会变差,需要删除
# 线性回归关系图,分析变量之间的线性回归关系 fcols = 2 frows = 1 plt.figure(figsize=(8, 4), dpi=150) ax = plt.subplot(1, 2, 1) sns.regplot(x='V0', y='target', data=train_data, ax=ax, scatter_kws={'marker':'.', 'alpha':0.3}, line_kws={'color':'k'}) plt.xlabel('V0') plt.ylabel('target') ax = plt.subplot(1, 2, 2) sns.distplot(train_data['V0'].dropna()) plt.xlabel('V0') plt.show()
对于那些相关性不怎么重要的,就可以直接删去了
Box-Cox
转换为正态分布形式。该变换方法可以使线性回归方程在满足线性,正态性,独立性及方差齐性的同时还,又不丢失信息。需要先做归一化在B-C变换