溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中Box-Cox變換指的是什么

發(fā)布時間:2021-06-09 13:59:40 來源:億速云 閱讀:552 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關python中Box-Cox變換指的是什么的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

1、概念

Box-Cox變換是統(tǒng)計建模中常用的建模方法,主要用于連續(xù)響應變量不滿足正態(tài)分布時,可采用Box-Cox變換,使線性回歸模型在滿足線性、正態(tài)性、獨立性和方差的同時不丟失信息。在Box-Cox轉換之前,有必要將數(shù)據(jù)歸一化。

2、實例

#我們這里是對訓練集和測試集一起歸一化,也可以分開進行歸一化,(分開)這種方式需要建立訓練數(shù)據(jù)和測試數(shù)據(jù)分布一直的情況下,建議在數(shù)據(jù)量大的情況下使用。
# 繪圖顯示Box-Cox變換對數(shù)據(jù)分布影響
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]))) #計算數(shù)據(jù)集的偏度
    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問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI