logo
Loading...

特徵縮放問題 - Cupoy

我有個小問題,在進行特徵縮放的時候,為何 test 的 fit 不是自己,而是用 train 的?#...

ml100-2,test data,ml100-2-d16

特徵縮放問題

2019/05/02 上午 01:26
機器學習共學討論版
zlintsai
觀看數:11
回答數:2
收藏數:2
ml100-2
test data
ml100-2-d16

我有個小問題,在進行特徵縮放的時候,為何 test 的 fit 不是自己,而是用 train 的?


#   縮放器載入 train 的上下限, 對 train, test 進行縮放轉換

scaler.fit(train)

train = scaler.transform(train)

test = scaler.transform(test)


我疑惑的點在於,對於同一組 Dataset 應該是以自身的最大最小值進行 rescaling,這樣才能有0~1。

也就是改成下面這樣:


train = scaler.fit_transform(train)

test = scaler.fit_transform(test)

回答列表

  • 2019/05/02 上午 10:10
    張維元 (WeiYuan)
    贊同數:1
    不贊同數:0
    留言數:0

    你講的是有道理的,另一種比較好的做法也可以先把 Train & Test 合併起來做處理,處理完了再分開。

  • 2019/05/02 上午 10:30
    Jimmy
    贊同數:4
    不贊同數:0
    留言數:7

    Hi zlintsai!


    這樣看似合理,但是正規的機器學習理論上是不允許你使用任何 test data 的資訊,test data 只能用來做最後的測試,因為實務上在應用時,測試資料通常數量都很小,這時任何統計量都有可能帶來偏誤。


    另外補充史丹佛 cs231n 課程中提到的內容給你參考

    這是機器學習中很容易犯的錯誤,有些公司也會問類似這樣的問題來評估面試者,請務必記得這個概念喔!