農林漁牧網

您現在的位置是:首頁 > 林業

規範化與標準化,哪個更好

2022-07-24由 聞數起舞 發表于 林業

標準值是什麼意思

在本教程中,讓我們看看哪一個是所有功能中最好的特徵工程技術。

規範化與標準化,哪個更好

> Image credits to Author (Tanu Nanda Prabhu)

眾所周知,特徵工程是將原始資料轉換為資料集的問題。 有各種可用的功能工程技術。 兩種最廣泛使用且最容易混淆的特徵工程技術是:

· 正常化

· 標準化

今天在這個美麗的白天或黑夜,我們將探索這兩種技術,並瞭解資料分析師在解決資料科學問題時所做出的一些常見假設。 另外,本教程的全部程式碼都可以在下面的GitHub儲存庫中找到

規範化

理論

是將數字特徵轉換為標準值範圍的過程。 值的範圍可以是[-1,1]或[0,1]。 例如,假設我們有一個數據集,其中包含兩個名為“年齡”和“體重”的特徵,如下所示:

規範化與標準化,哪個更好

> Image Credits to Author (Tanu Nanda Prabhu)

假設一個名為“年齡”的要素的實際範圍是5到100。我們可以透過從“年齡”列的每個值中減去5,然後將結果除以95( 100-5)。 為了使您的大腦清晰可見,我們可以將以上內容寫為公式。

規範化與標準化,哪個更好

> Image credits to The Hundred-Page Machine Learning Book by Andriy Burkov

其中min ^(j)和max ^(j)是資料集中特徵j的最小值和最大值。

實作

現在您已經瞭解了背後的理論,現在讓我們看看如何將其投入生產。 通常,有兩種方法可以實現此目的:傳統的Old school手動方法,另一種使用sklearn預處理庫。 今天,讓我們藉助sklearn庫進行歸一化。

使用sklearn預處理-歸一化

在將“ Age”和“ Weight”值直接輸入該方法之前,我們需要將這些資料幀轉換為numpy陣列。 為此,我們可以使用to_numpy()方法,如下所示:

# Storing the columns Age values into X and Weight as Y

X = df[‘Age’]

y = df[‘Weight’]

X = X。to_numpy()

y = y。to_numpy()

上面的步驟非常重要,因為fit()和transform()方法僅適用於陣列。

from sklearn。preprocessing import Normalizer

normalizer = Normalizer()。fit([X])

normalizer。transform([X])

規範化與標準化,哪個更好

> Image credits to Author (Tanu Nanda Prabhu)

normalizer = Normalizer()。fit([y])normalizer。transform([y])

規範化與標準化,哪個更好

> Image credits to Author (Tanu Nanda Prabhu)

如上所示,兩個陣列的值都在[0,1]範圍內。 有關該庫的更多詳細資訊,可以在下面找到:

我們何時應實際對資料進行規範化?

儘管規範化不是強制性的,也不是強制性的(必須做的事)。 它可以透過兩種方式為您提供幫助

· 規範化資料將提高學習速度。 在構建(訓練)和測試資料期間,它將提高速度。 試試看!!

· 它將避免數值溢位。 真正的意思是規範化將確保我們的輸入大致在相對較小的範圍內。 這樣可以避免問題,因為計算機通常在處理非常小或非常大的數字時會遇到問題。

標準化

理論

標準化或z分數歸一化或最小-最大縮放是一種重新縮放資料集的值的技術,以使其具有標準正態分佈的屬性,其中μ= 0(均值-特徵的平均值)且σ= 1( 均值的標準偏差)。 可以這樣寫:

規範化與標準化,哪個更好

> Image credits to The Hundred-Page Machine Learning Book by Andriy Burkov

實作

現在有很多方法可以實現標準化,就像標準化一樣,我們可以使用sklearn庫並使用StandardScalar方法,如下所示:

from sklearn。preprocessing import StandardScaler

sc = StandardScaler()

sc。fit_transform([X])

sc。transform([X])

sc。fit_transform([y])

sc。transform([y])

您可以從下面閱讀有關該庫的更多資訊:

Z分數歸一化

同樣,我們可以使用pandas mean和std來做有需要的

# Calculating the mean and standard deviationdf = (df - df。mean())/df。std()print(df)

規範化與標準化,哪個更好

> Image credits to Author (Tanu Nanda Prabhu)

最小-最大縮放

在這裡我們可以使用熊貓的最小和最大來做有需要的

# Calculating the minimum and the maximum

df = (df-df。min())/(df。max()-df。min())

print(df)

規範化與標準化,哪個更好

> Image credits to Author (Tanu Nanda Prabhu)

通常,最好使用Z分數歸一化,因為最小-最大縮放容易過度擬合。

什麼時候實際使用規範化和標準化?

上述問題沒有答案。 如果您的資料集很小並且有足夠的時間,則可以嘗試上述兩種技術並選擇最佳的一種。 您可以遵循以下經驗法則:

· 您可以對無監督學習演算法使用標準化。 在這種情況下,標準化比標準化更有利。

· 如果您在資料中看到一個曲線,那麼標準化是更可取的。 為此,您將必須繪製資料。

· 如果您的資料集具有極高或極低的值(離群值),則標準化是更可取的,因為通常,標準化會將這些值壓縮到較小的範圍內。

除上述情況外,在任何其他情況下,歸一化都適用。 同樣,如果您有足夠的時間嘗試兩種功能工程技術。

好了,你們已經到了教程的結尾。 我希望你們今天學到了一兩件事。 我使用名為“ Andriy Burkov的百頁機器學習書”的教科書作為參考(第5章)來編寫本教程。 您可以看一下。 如果您對本教程有任何疑問,可以使用下面的註釋部分。 我會盡快回答。 在此之前,請安全,再見。 下次見。 有關Datafied的更多更新,以讀寫更多python筆記本。

(本文翻譯自Tanu N Prabhu的文章《Normalization vs Standardization, which one is better》,參考:https://towardsdatascience。com/normalization-vs-standardization-which-one-is-better-f29e043a57eb)