如何在没有交叉验证的情况下检验机器学习的准确性

2024-04-26 08:45:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有训练样本X_train,和Y_train来训练和X_estimated。 我的任务是使我的分类程序尽可能准确地学习,然后预测X_estimated上的结果向量,以得到接近Y_estimated的结果(我现在有了,我必须尽可能精确)。如果我把我的训练数据分成75/25来训练和测试它,我可以使用sklearn.metrics.accuracy_score和混淆矩阵来获得准确度。但我失去了25%的样本,这将使我的预测更加准确。你知道吗

有没有什么办法,我可以用100%的数据来学习,并且仍然能够看到准确率分数(或百分比),这样我就可以多次预测,并保存最好的(%)结果? 我使用随机森林500估计,通常得到90%左右的准确率。我想为我的任务保存尽可能好的预测向量,不分割任何数据(不浪费任何东西),但仍然能够从多次尝试中计算准确度(因此我可以保存最佳预测向量)(随机林总是显示不同的结果)

谢谢


Tags: 数据train矩阵sklearn向量metricsscore样本
3条回答

不必一直对数据进行75 | 25分割。75 |25岁现在算是老派了。这在很大程度上取决于您拥有的数据量。例如,如果你有10亿个句子用来训练一个语言模型,就不必为测试预留25%的时间。你知道吗

另外,我支持前面的答案,尝试K-折叠交叉验证。作为补充说明,您可以考虑查看其他指标,如精确度和召回率。你知道吗

分割数据对于评估至关重要。 如果不扩展数据集,就不可能在100%的数据上训练模型并获得正确的评估精度。我的意思是,你可以改变你的训练/测试划分,或者尝试用其他方式优化你的模型,但我猜你的问题的简单答案是否定的

根据您的要求,您可以试试K Fold Cross Validation。如果你把它分成90 | 10,也就是说用于火车测试。
要获得100%的数据进行培训是不可能的,因为你必须测试数据,然后只有你才能验证你的模型有多好。K Fold CV在每一次折叠中都会考虑整个列车数据,并从列车数据中随机抽取测试数据样本。
最后通过对所有折叠进行求和来计算精度。最后你可以用10%的数据来测试准确度。 更多你可以阅读herehere

K Fold Cross Validation

enter image description here

Skearn提供了执行K折叠交叉验证的简单方法。只需在方法中不传递任何折叠。但是记住,褶皱越多,训练模型就需要更多的时间。更多您可以查看here

相关问题 更多 >