使用 sci-kit 中的训练/测试数据而不是交叉验证的学习曲线
Posted
技术标签:
【中文标题】使用 sci-kit 中的训练/测试数据而不是交叉验证的学习曲线【英文标题】:Learning curves with train/test data in sci-kit instead of cross validation 【发布时间】:2015-12-16 18:44:40 【问题描述】:我有一个单独的训练和测试数据(从加载到不同 pandas 数据框中的不同 CSV),我想用这个训练和测试数据绘制学习曲线,而不是使用交叉验证从训练集本身生成的训练和测试数据(这似乎是 learning_curve 的常用方式)。
scikit 似乎希望您的测试和训练数据出现在同一个 Dataframe 中,但这样分类器也会学习测试数据,这不是我想要的。
我该如何解决这个问题?我是 sci-kit 的新手。
【问题讨论】:
不确定“从训练集本身生成”是什么意思。不要将测试集传递给函数,它不会这样做。 AFAIK 你不能用内置的 sklearn 函数做你要求的事情,所以你需要自己写。您对“自己编写”解决方案感兴趣吗? 【参考方案1】:您需要将训练数据和测试数据分开(至少在代码中的不同变量中)。然后可以将learning curve 应用于训练集。这样您就可以在不使用测试集的情况下优化您的实验(以避免过度拟合)。
为了验证您在测试集上的表现如何,scikit-learn 提供了validation curve,它根据测试集进行评估。
【讨论】:
【参考方案2】:Scikit-Learn 更棘手。它允许您定义训练集和测试集的 train_sizes,然后对它们进行交叉验证(参数 cv,默认为 3 折交叉验证)。
【讨论】:
以上是关于使用 sci-kit 中的训练/测试数据而不是交叉验证的学习曲线的主要内容,如果未能解决你的问题,请参考以下文章