当前位置: 首页 > 图灵资讯 > 行业资讯> python中Box-Cox变换是什么

python中Box-Cox变换是什么

来源:图灵python
时间: 2024-07-16 09:38:12

概念

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

Box-Cox可用于变换。

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

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

实例

#在这里,我们将训练集和测试集集合在一起,或者我们可以单独进行归一化。(单独)这种方法需要建立训练数据和测试数据的分布。建议在数据量大的情况下使用。
#图表显示Box-Cox变换对数据分布的影响
cols_numeric_left=cols_numeric[0:13]
cols_numeric_right=cols_numeric[13:]#特征分为两部分,前13个是第一部分
##CheckeffectofBox-Coxtransformsondistributionsofcontinuousvariables

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
forvarincols_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学习指南:python基础教程

本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。