温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python中Box-Cox变换指的是什么

发布时间:2021-06-09 13:59:40 来源:亿速云 阅读:534 作者:小新 栏目:编程语言

这篇文章给大家分享的是有关python中Box-Cox变换指的是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

1、概念

Box-Cox变换是统计建模中常用的建模方法,主要用于连续响应变量不满足正态分布时,可采用Box-Cox变换,使线性回归模型在满足线性、正态性、独立性和方差的同时不丢失信息。在Box-Cox转换之前,有必要将数据归一化。

2、实例

#我们这里是对训练集和测试集一起归一化,也可以分开进行归一化,(分开)这种方式需要建立训练数据和测试数据分布一直的情况下,建议在数据量大的情况下使用。
# 绘图显示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变换指的是什么”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI