乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      高斯變換簡介及Python示例

       taotao_2016 2019-06-07

      高斯變換簡介及Python示例

      線性回歸和邏輯回歸等機器學習模型假設變量是正態(tài)分布的。如果一個變量不是正態(tài)分布,有時可以找到一個數(shù)學變換來把一個變量按照高斯分布進行變換。

      遵循高斯分布的變量變換:

      這些是一些數(shù)學方法來轉(zhuǎn)換變量,使它們遵循高斯分布。沒有一個比另一個好。它們主要取決于變量的原始分布。

      1. 對數(shù)變換
      2. 倒數(shù)變換
      3. 平方根變換
      4. 指數(shù)變換

      在本文中,我們將使用比較著名的泰坦尼克號機器學習數(shù)據(jù)集(https://www./c/titanic/data)的“Age”變量進行這些變換。

      讓我們從導入Python包并加載機器學習數(shù)據(jù)集開始

      #Importing Packagesimport numpy as np import pandas as pdimport matplotlib.pyplot as pltimport pylabimport scipy.stats as stats#Importing datasetdata = pd.read_csv('train.csv', usecols = ['Age'])

      高斯變換簡介及Python示例

      然后讓我們檢查是否有任何缺失值并使用dropna方法刪除它們

      data.apply(lambda x: sum(x.isnull()),axis=0)

      高斯變換簡介及Python示例

      'Age'中的Null值數(shù)

      data = data.dropna()

      原始分布:

      讓我們從Titanic機器學習數(shù)據(jù)集中可視化變量的分布開始,我們繪制直方圖來可視化鐘形圖和Q-Q圖(兩者都用于可視化變量是否服從高斯分布)。記住,如果變量是正態(tài)分布的,我們應該看到在理論分位數(shù)上有一條45度的直線。也就是說,實際分位數(shù)應該與理論值完全一致。

      def diagnostic_plots(df, variable):   plt.figure(figsize=(15,6)) plt.subplot(1,2,1) df[variable].hist() #plt.xlim((0, 100))  plt.subplot(1,2,2) stats.probplot(df[variable], dist='norm', plot = pylab)  plt.show() diagnostic_plots(data, 'Age')

      高斯變換簡介及Python示例

      在這里,我們創(chuàng)建一個函數(shù)diagnostic_plots來可視化變量是否遵循高斯分布。它將data frame和目標變量作為輸入?yún)?shù)。函數(shù)的第一部分是直方圖,第二部分是Q-Q圖。我們在變量'Age'上調(diào)用函數(shù)。

      高斯變換簡介及Python示例

      原始分布

      該變量遵循近似高斯分布。它略微偏斜,這解釋了與下端的45度線(紅線)的偏差。

      現(xiàn)在讓我們應用Age變量的所有上述變換并評估結果。

      對數(shù)變換:

      讓我們應用Numpy中的log函數(shù)并繪制診斷圖。

      data['Age_log'] = np.log(data.Age)diagnostic_plots(data, 'Age_log')

      高斯變換簡介及Python示例

      對數(shù)變換

      我們可以看到這個變換并沒有使Age服從高斯分布。記住log0沒有定義。因此,如果您的數(shù)據(jù)包含0 -給它一個偏移量或使用另一種變換方法。

      倒數(shù)變換:

      data['Age_reciprocal'] = 1 / data.Agediagnostic_plots(data, 'Age_reciprocal')

      高斯變換簡介及Python示例

      倒數(shù)變換

      我們可以看到這種變換也沒有幫助。

      平方根變換:

      接下來,我們將嘗試平方根變換。

      data['Age_sqrt'] = data.Age**(1/2)diagnostic_plots(data, 'Age_sqrt')

      高斯變換簡介及Python示例

      平方根變換

      結果比其他好一點,但仍然不是高斯。開始和結束都有一些偏差。最后,讓我們嘗試指數(shù)變換。

      指數(shù)變換:

      在這里,我們可以嘗試任何我們想要的指數(shù)。我選擇了1.2作為指數(shù)。但是你可以嘗試不同的指數(shù),看看分布如何變化。

      data['Age_exp'] = data.Age**(1/1.2)diagnostic_plots(data, 'Age_exp')

      高斯變換簡介及Python示例

      指數(shù)變換

      正如你在直方圖中看到的那樣,這種變換使得“Age”變量遵循幾乎高斯分布。直方圖中的峰值更加居中,并且Q-Q圖中的下端值附近僅有一些偏差。因此,在這種特殊情況下,我們可以看到指數(shù)變換效果最好。

      應該對變量進行變換嗎?

      這取決于你的最終目標。在業(yè)務環(huán)境中,最好使用變量的原始分布來訓練機器學習模型,因為在使用機器學習模型進行預測時,模型更容易解釋,將來可能出現(xiàn)的問題也更少。另一方面,在競賽的情況下,最好選擇一個表現(xiàn)最好的變量。

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多