天天看點

【機器學習】為什麼訓練集用fit_transform而測試集隻用transform?一、解釋二、歸一化(Normalization)三、為什麼隻對訓練集做fit_transform,對測試集隻做transform?

文章目錄

  • 一、解釋
  • 二、歸一化(Normalization)
  • 三、為什麼隻對訓練集做fit_transform,對測試集隻做transform?

一、解釋

解釋:簡單來說,就是求得訓練集X的均值,方差,最大值,最小值,這些訓練集X固有的屬性。

解釋:在fit的基礎上,進行标準化,降維,歸一化等操作(看具體用的是哪個工具,如PCA,StandardScaler等)。作用是通過找中心和縮放等實作标準化

解釋:

fit_transform

fit

transform

的組合,既包括了訓練又包含了轉換。對部分資料先拟合fit,找到該part的整體名額,如均值、方差、最大值、最小值等等(根據具體轉換的目的),然後對該trainData進行轉換transform,進而實作資料的标準化、歸一化等等。

transform()

fit_transform()

二者的功能都是對資料進行某種統一處理(比如标準化~N(0,1),将資料縮放(映射)到某個固定區間,歸一化等)

二、歸一化(Normalization)

歸一化的目的:

對數值類型的特征做歸一化可以将所有的特征都統一到一個大緻相同的數值區間内,使其具有可比性。

歸一化之後等高線變得不再崎岖, x 1 x_1 x1​和 x 2 x_2 x2​的更新速度變得更為一緻,容易更快地通過梯度下降找到最優解。疊代次數變少,減小梯度下降算法的過程,進而加速模型的生成。

【機器學習】為什麼訓練集用fit_transform而測試集隻用transform?一、解釋二、歸一化(Normalization)三、為什麼隻對訓練集做fit_transform,對測試集隻做transform?

從上圖中不難看出,歸一化後的資料疊代次數更少!

三、為什麼隻對訓練集做fit_transform,對測試集隻做transform?

機器學習假設:

訓練集和測試集的每個樣本都是從同一分布中抽樣得到的,是以在訓練集中fit之後在測試集就不能再fit了,要不然二者可能不是同一分布模型,預測效果會很糟糕。

【機器學習】為什麼訓練集用fit_transform而測試集隻用transform?一、解釋二、歸一化(Normalization)三、為什麼隻對訓練集做fit_transform,對測試集隻做transform?

繼續閱讀