数据预处理流程梳理(1)---单要素处理
程序员文章站
2022-03-18 21:49:34
...
天池大赛赛题解析--特征工程
天池大赛赛题解析梳理数据预处理流程
1.任务变量分析
-
变量识别使用变量类型和数据类型两方面进行分析。
- 变量从多个维度进行解析
- 输入输出变量:输入(feature),输出(target)
- 数据类型:字符、数值
- 连续型、类别型
- 变量从多个维度进行解析
-
对于数据类型的单要素变量可以采用如下方式进行初步解析
-
变量分析
- 单变量分析
- 缺测值统计
import pandas as pd df.isnull().sum()
- 异常值
- 异常值得简单检测可以使用百分位数法来观察
# dataframe 函数中有可以进行百分位数计算函数 df.quantile(0.1) # 箱线图 import seaborn as sns sns.boxplot(df['V'], orient='v', width=0.5)
- 利用预测方式检测异常值也是一种方式,可以使用sklearn中得模型继续简单建模
- 分布特征
- 原因:
- 很多算法注入多元线性回归、支持向量机,逻辑回归等算法对于正态分布数据适应性更好
- 同特征在不同得时段或者数据集中可能特征不同,需要尤为注意
- 原因:
- 一般采用直方图和Q-Q图来检测数据是否符合正态分布
import seaborn as sns from scipy import stats import matplotlib.pyplot as plt plt.figure(figsize=(10,5)) ax = plt.subplot(1,2,1) # 绘制直方图,并绘制拟合曲线 sns.distplot(df[columnName], fit=stats.norm) ax = plt.subplot(1,2,2) res = stats.prodplot(df[columnName],plot[plt)
- 缺测值统计
- 单变量分析
-
单要素预处理
- 对于数值型变量
- 若不符合正态分布,需要对数据进行转化,可采用 log、平方、开方转化等方式,但是使用频率较高的为box-cox转化,以下函数为对data进行逐列转化,注意转化前要对数据进行归一化
from scipy import stats def box_cox_trans(data): ''' box-cox 转化 ''' data = data.dropna(axis=0) data = data+1 dat = data.apply(stats.boxcox, axis=0) lamDic = {} for icol in data.columns: data[icol] = dat[icol][0] lamDic[icol] = dat[icol][1] return data, lamDic
- 时间序列分析
- 对于时间序列数据,还需要对数据进行时间序列分析,以了解时间维度的变化影响,必要时需要提取主要信息
- 时间序列分析一般采用时间序列分解的方式
- 根据时间序列分解理论,时间序列可以分为:趋势项、周期项、残差项,python提供了相关库进行操作
from statsmodels.tsa.seasonal import seasonal_decompose
def ts_decopose(timeSeries):
'''
对时间序列进行分解
timeSeries:
series index 为 timetamp
'''
#timeSeries = ser_2_df(timeSeries)
decomposition = seasonal_decompose(
timeSeries.values,
period=24, # 预设周期
model="additive") #multiplicative,additive 乘法模型和加法模型
trend = decomposition.trend
seasonal = decomposition.seasonal
residual = decomposition.resid
return trend, seasonal, residual
上一篇: 小白成长之路_LeetCode刷题记录
下一篇: 小米11将首发!一文了解高通骁龙888
推荐阅读