新聞中心
這里有您想知道的互聯(lián)網營銷解決方案
創(chuàng)新互聯(lián)Python教程:python中Box-Cox變換是什么
概念

1、Box-Cox變換是統(tǒng)計建模中常用的建模方法,主要用于連續(xù)響應變量不滿足正態(tài)分布。
可采用Box-Cox變換。
2、使線性回歸模型在滿足線性、正態(tài)性、獨立性和方差的同時不丟失信息。
在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學習指路:創(chuàng)新互聯(lián)python教程
本文教程操作環(huán)境:windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。
新聞標題:創(chuàng)新互聯(lián)Python教程:python中Box-Cox變換是什么
本文鏈接:http://m.5511xx.com/article/dhpjpis.html


咨詢
建站咨詢
