[問題] ML 不同CV方法導致結果差距
大家好,想請問一個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]
麻煩各位指點一下!感謝
//--- 3/16補:
在StratifiedKFold前補上shuffle之後,就可以train到跟方法1一樣了
謝謝各位的指點!!!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.157.116
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1521131008.A.ED7.html
→
03/16 01:59,
7年前
, 1F
03/16 01:59, 1F
推
03/16 02:10,
7年前
, 2F
03/16 02:10, 2F
推
03/16 02:22,
7年前
, 3F
03/16 02:22, 3F
→
03/16 02:22,
7年前
, 4F
03/16 02:22, 4F
X.shape = 57xx, 120, 12
y.shape = 57xx, 3
我有三個class, frequency 大約都33%
推
03/16 07:24,
7年前
, 5F
03/16 07:24, 5F
我試著用觀測用train_test_split看X_train/X_test
是會shuffle的,假設一開始X_train = [a0, a1, a2, ..., an-1, an]
X_train = [a11, a31, ..., a1, an-9]
但是我用StratifiedKFold
X_train/X_test還是會依照順序
(shuffle設=True/False都沒差..還是我data太小了?)
X_train = [a0, a8, a15 ..., an-6, an]
智商愚鈍還是不懂為何結果會差這麼多...
※ 編輯: kiloxx (59.124.166.19), 03/16/2018 13:21:23
※ 編輯: kiloxx (59.124.166.19), 03/16/2018 14:53:03
推
03/16 15:14,
7年前
, 6F
03/16 15:14, 6F
可是我有比較過兩個方法
y_train 跟 y_test class的frequency是跟原始y是一樣的
(每個class都是~33%)
等等晚點來試試看丟進去kfold前先shuffle一次看看
※ 編輯: kiloxx (59.124.166.19), 03/16/2018 18:01:59
※ 編輯: kiloxx (111.243.156.10), 03/16/2018 19:36:51
Python 近期熱門文章
PTT數位生活區 即時熱門文章