采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师好,请问下 交叉验证分成K份,是有什么规则吗? 以下图为例,训练数据分成了3份 (A、B、C),请问是根据什么规则分成3份的?
比如我有99条数据,分成3份,是否 A = 第1-33条数据 B = 第34-66条数据 C = 第67-99条数据
对于大部分数据,随机划分即可。
但是对于一些特殊数据,尤其是某一个 label 比较小的数据(有偏的数据),应该考虑保证在每一份中,每一个 label 的比例大致一样。这样可以避免某一份中某一个 label 一个都没有的情况。
在机器学习领域,有一个专门的名词来描述这种“划分”,被称为是 Stratified Split (听起来非常高大上,但就是我上面说的那个意思,非常好理解。)sklearn 中有专门的方法实现了这种 split,可以参考这里:https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.StratifiedShuffleSplit.html
继续加油!:)
非常感谢,谢谢老师
我查看了一下sklearn相关文档,编写了一个分层抽样函数。 这个函数,可使抽样后的比例,与原数据比例一致。 from sklearn.model_selection import StratifiedShuffleSplit def Stratified_Shuffle_Split(X,y,test_size=0.3,random_state=666): ss = StratifiedShuffleSplit(n_splits=1,test_size=test_size,random_state=random_state) for train_index, test_index in ss.split(X, y): X_train, X_test = X[train_index], X[test_index]#训练集对应的值 y_train, y_test = y[train_index], y[test_index]#类别集对应的值 return X_train, X_test, y_train, y_test
大赞!感谢分享:)
登录后可查看更多问答,登录/注册
Python3+sklearn,兼顾原理、算法底层实现和框架使用。
2.6k 19
3.6k 17
3.1k 15
1.7k 15
1.5k 14