[问题] 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