导语:
本文主要介绍了关于python中Box-Cox变换是什么的相关知识,包括python中pass和continue的区别,以及python中decode函数这些编程知识,希望对大家有参考作用。
概念
1、Box-Cox变换是统计建模中常用的建模方法,主要用于不符合正态分布的连续响应变量。
可采用Box-Cox变换。
2.线性回归模型在满足线性、正态性、独立性和方差的同时不丢失信息。
在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]))
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python如何抛出异常08/23
- ♥ 如何用python画一个六边形?08/18
- ♥ python如何表示结构12/07
- ♥ 如何在python中找到与列表元素对应的索引09/06
- ♥ 如何在python中检查字符串是否为小数09/15
- ♥ 如何从python中的数组中删除指定元素10/03
内容反馈