欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据预处理流程梳理(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