我试图理解 cross_val_score() 的用法。我了解它是如何运作的以及它的目的。但让我们看一个简单的例子
reg = LinearRegression()
cv_scores = cross_val_score(reg, X_train, y_train, cv=5)
cv_scores = cross_val_score(reg, X_train, y_train, cv=10)
假设 a 的平均分数分别为 0.91 和 0.84,cv=5 和 cv=10。如何使用该信息来拟合我的测试数据?
我能想到的一种方法是在 GridSearchCV 中使用 CV 的最佳值,即本例中的 5,并拟合训练数据并预测测试数据。是对的吗?如果是这样,可以在不使用 GridSearchCV 的情况下执行该任务吗?
最佳答案
这里您需要意识到的是,cv 参数并不涉及您的模型,而是涉及您将如何执行交叉验证。在本例中,您将比较 5 倍与 10 倍交叉验证。
请记住,您尝试进行交叉验证的目的是在将您的方法应用于一般人群时估计误差。在最小二乘线性回归的情况下,留一 CV 误差将渐近具有最小偏差 + 方差的 CV。但实际上差异不会太大,这主要与小样本量有关。
现在,为什么您需要估计“测试误差”?因为当你解决大多数模型时,你试图最小化的正是应用于训练数据时的误差函数,所以如果你不小心并且你的模型太复杂,你将在训练数据上得到很好的结果,但不是在人口中。完成简历是为了确保这种情况不会发生。在线性回归中,通常您通过改变特征数量来进行CV(前向选择,或者如果您不介意在偏差误差上付出一些代价,则可以使用套索之类的东西),并修复cv = 5(或 10,在大多数情况下并不重要)
关于machine-learning - 如何使用 cross_val_score 来拟合我的测试数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58595921/