我正在处理一个分类问题:
2500行。
25000列
88个不同的班级分布不均
然后发生了一件非常奇怪的事情:
当我运行一打不同的分离测试列车时,我的分数总是在60%左右
当我运行交叉验证时,我总是得到50%左右的分数。
屏幕如下:
此外,它与阶级的不平等分布无关,因为当我在TTS上放置stratifiy=y时,我保持在60%左右,当我放置stratifiedfold时,我保持在50%左右
要记住哪个分数?为什么不同?对我来说,简历只是一系列的测试列车的拆分,彼此之间有不同的拆分,所以没有什么可以证明这样的分数差异是合理的
Tags:
简短回答:将shuffle=True添加到您的KFold: 交叉分数(森林、X、y、cv=KFold(随机数=True))
详细回答:连续的TrainTestSplit与经典KFold交叉验证之间的区别在于,在列车和测试集之间的拆分之前,TTS中存在混合。 分数的差异可能是由于数据集的排序方式有偏差。 因此,只需将shuffle=True添加到您的KFold(或分层折叠,这就是您所需要做的)
第一个代码示例返回5个值,然后学习4/5的数据,并在1/5有效。 第二个样本在5/6学习,在1/6有效,结果更好
也许你可以试着做
for k in range(5)
,看看你在分数上是否还有很大的差异相关问题 更多 >
编程相关推荐