python培训之Box-Cox变换是什么

发布时间:2023-02-08 09:35:52 人气:81 作者:多测师

  python中Box-Cox变换是什么

  概念

  1、Box-Cox变换是统计建模中常用的建模方法,主要用于连续响应变量不满足正态分布。

  可采用Box-Cox变换。

  2、使线性回归模型在满足线性、正态性、独立性和方差的同时不丢失信息。

  在Box-Cox转换之前,有必要将数据归一化。

  实例

  #我们这里是对训练集和测试集一起归一化,也可以分开进行归一化,(分开)这种方式需要建立训练数据和测试数据分布一直的情况下,建议在数据量大的情况下使用。

python培训之Box-Cox变换是什么

  # 绘图显示Box-Cox变换对数据分布影响

  cols_numeric_left = cols_numeric[0:13]

  cols_numeric_right = cols_numeric[13:] #这里是将特征分为两部分,前13个为第一部分

  ## Check effect of Box-Cox transforms on distributions of continuous variables

  train_data_process = pd.concat([train_data_process, train_data['target']], axis=1)

  fcols = 6

  frows = len(cols_numeric_left)

  plt.figure(figsize=(4*fcols,4*frows))

  i=0

  for var in cols_numeric_left:

  dat = train_data_process[[var, 'target']].dropna()

  i+=1

  plt.subplot(frows,fcols,i)

  sns.distplot(dat[var] , fit=stats.norm);

  plt.title(var+' Original')

  plt.xlabel('')

  i+=1

  plt.subplot(frows,fcols,i)

  _=stats.probplot(dat[var], plot=plt)

  plt.title('skew='+'{:.4f}'.format(stats.skew(dat[var]))) #计算数据集的偏度

  plt.xlabel('')

  plt.ylabel('')

  i+=1

  plt.subplot(frows,fcols,i)

  plt.plot(dat[var],dat['target'],'.',alpha=0.5)

  plt.title('corr='+'{:.2f}'.format(np.corrcoef(dat[var],dat['target'])[0][1]))

  i+=1

  plt.subplot(frows,fcols,i)

  trans_var, lambda_var = stats.boxcox(dat[var].dropna()+1)

  trans_var = scale_data(trans_var)

  sns.distplot(trans_var , fit=stats.norm);

  plt.title(var+' Tramsformed')

  plt.xlabel('')

  i+=1

  plt.subplot(frows,fcols,i)

  _=stats.probplot(trans_var, plot=plt)

  plt.title('skew='+'{:.4f}'.format(stats.skew(trans_var))) #归一化后,偏度明显变小,相关性变化不大

  plt.xlabel('')

  plt.ylabel('')

  i+=1

  plt.subplot(frows,fcols,i)

  plt.plot(trans_var, dat['target'],'.',alpha=0.5)

  plt.title('corr='+'{:.2f}'.format(np.corrcoef(trans_var,dat['target'])[0][1]))

  以上就是python中Box-Cox变换的介绍,希望对大家有所帮助。更多Python学习指路:请关注多测师。https://www.e70w.com/xwzx/




返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线