交叉验证分数总是低于手动验证分数

如何解决交叉验证分数总是低于手动验证分数

我正在尝试训练具有大约 50 个特征的 1.5k 大小的训练数据。数据预处理后,我尝试使用各种回归器进行训练,发现 GBR 的得分最高,例如使用 train_test_split 获得 90 到 92ish r2 得分,测试大小为 0.1。然后,为了确保这个泛化良好与否,我使用了 kfold(实际上在 sklearn 中使用了重复的kfold)和 10folds 来取平均分数,它总是低于 90,大约 85 到 88。我尝试使用具有不同 random_state 的 train_test_split 和shuffle,但我仍然得到了超过 90 的分数,在任何 kfold cv 分数中,我得到了 85 到 89。我检查了折叠分数,总是有 1 倍的重复 cv 很低,比如 50 到 75。我想知道 2 件事是 1 . . 每次重复训练中降低1倍的分数是什么意思? 2. 使用sklearn.kfold后,我可以查看他们如何拆分数据并查看它们吗?这是我第一次在这里写作,所以我上传图片,让我知道你们还需要了解更多。 kfold 是 10 fold 5 n_repeated。谢谢!

GBR.score(X_val,y_val)
#0.9173720010338533
GBR.score(X_train,y_train)
#0.9672844748409584
scores_GBR=cross_validate(GBR,X_train_full,y_train_full,cv=rkf,scoring=['r2'])
scores_GBR['test_r2'].mean()
#0.8874254994205961
scores_GBR['test_r2']
#array([0.91033801,0.88291441,0.94219084,0.91559037,0.6707497,0.8858435,0.88034527,0.89407013,0.89293282,0.93228982,0.92548558,0.92956017,0.86773676,0.92869035,0.92425941,0.88900231,0.92550372,0.86717088,0.90038198,0.71342846,0.91016579,0.81568825,0.90169315,0.90487335,0.88755337,0.88977299,0.93275722,0.87332214,0.90527543,0.90681816,0.86084416,0.93424099,0.75648615,0.8544226,0.92533321,0.87095393,0.9238857,0.91542079,0.91074226,0.89351622,0.8670998,0.90082796,0.92286733,0.76819162,0.9097709,0.91733978,0.90874867,0.88767042,0.91745169,0.91905643])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?