特徵縮放問題
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:30Jimmy贊同數:4不贊同數:0留言數:7
Hi zlintsai!
這樣看似合理,但是正規的機器學習理論上是不允許你使用任何 test data 的資訊,test data 只能用來做最後的測試,因為實務上在應用時,測試資料通常數量都很小,這時任何統計量都有可能帶來偏誤。
另外補充史丹佛 cs231n 課程中提到的內容給你參考
這是機器學習中很容易犯的錯誤,有些公司也會問類似這樣的問題來評估面試者,請務必記得這個概念喔!