logo
Loading...

test data 的歸一化是否要沿用 train data 歸一化時用到的參數? - Cupoy

想請問: 舉例來說,我有 train data 和 test datatrain_data = [2...

歸一化,標準化,最大最小

test data 的歸一化是否要沿用 train data 歸一化時用到的參數?

2021/07/17 下午 05:11
機器學習共學討論版
蔣淳斌
觀看數:71
回答數:2
收藏數:0
歸一化
標準化
最大最小

想請問: 舉例來說,我有 train data 和 test data train_data = [2, 7, 10, 4] test_data = [5, 3, 11] 好比說我們對 train data 做 Min-max 處理: min = 2 max = 10 mm_train_data = [0, 0.625, 1, 0.25] 那這個時候 test data 的 Min-max 應該要是 min = 2 max = 10 mm_test_data = [0.375, 0.125, 1.125] 還是 min = 3 max = 11 mm_test_data = [0.25, 0, 1] 會比較好呢? 考慮到 test data 的資料分佈不一定跟 train data 類似,應該要套用 train data 的最大最小值來處理比較好,可是這樣就有可能會出現小於0或大於1的值,失去了 min-max 將數值收束在 0 到 1 之間的目的。 請問哪個作法比較好呢?還是可以視情況選擇作法呢?還請各位解惑、指教,謝謝。

回答列表

  • 2021/07/20 上午 03:19
    William
    贊同數:1
    不贊同數:0
    留言數:2

    測試集的正規化要依照訓練集為基準哦! 比如在訓練集使用minmax正規化,特徵A min=2 max=10。 在測試集某一筆資料特徵A若為12,則要正規化成(12-2)/(10-8)=1.25哦(在測試集有機會出現超出minmax區間的值)。 另外,要避免正規化後才切分資料,否則會產生偏差。

  • 2021/07/21 下午 07:53
    Yilin
    贊同數:0
    不贊同數:0
    留言數:0

    可以直接使用 sklearn 套件完成以上內容哦,假設X是我的訓練資料。建立一個 MinMaxScaler 先進行 fit() 找出訓練集的 min max 參數。接著透過 transform() 可以按照 X 的分佈直接進行資料的縮放。詳細內容可以[參考](https://ithelp.ithome.com.tw/articles/10240494)。 ``` from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler(feature_range=(0, 1)).fit(X) X_test_scaled = scaler.transform(X_test) ```