[問題] ML 不同CV方法導致結果差距

作者: kiloxx (名器)   2018-03-16 00:23:25
大家好,想請問一個CV(cross validation)的問題
我用sklearn model_selection 兩個不同CV的方法
1. train_test_split
2. StratifiedKFold
結果同一個model train出來
1. train acc ~90%, test acc ~75%(overfitting)
2. train acc ~90%, test acc ~30%(average acc)
為什麼在testing上差距會這麼大啊?
代表我用方法1 train出來是超級無敵overfitting嗎?
或是我的DataSet是根本無法分析的?
還是我腦殘code寫錯了?
keras log上
方法1 val_acc會跟著train acc上升,但是方法2每個round都是死魚在30%
python code:
1.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,
random_state=87)
2.
skf = StratifiedKFold(n_splits=4)
for train_index, test_index in skf.split(X, y):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
麻煩各位指點一下!感謝
//
作者: Kazimir (Kazimir)   2018-03-16 01:59:00
如果你的validation accuracy 沒上升那很明顯是寫錯了
作者: p00o99o (YA!)   2018-03-16 02:10:00
你先搞清楚這兩種方法的差異
作者: Kazimir (Kazimir)   2018-03-16 02:22:00
仔細想想好像也不一定 你的資料量有多大? class之間有沒有明顯的不平衡問題?
作者: tsoahans (ㄎㄎ)   2018-03-16 07:24:00
一個有shuffle一個沒有你的data可能有照label順序排 所以沒shuffle就會有問題

Links booklink

Contact Us: admin [ a t ] ucptt.com