【发布时间】:2019-10-01 10:33:30
【问题描述】:
我目前正在尝试比较多个模型。 我制作了一个脚本,使用 10 折交叉验证来评估性能,以获得最真实的性能。 我的问题是,它适合什么样的训练和测试数据重要吗?例如我应该找到提供最佳性能的训练和测试集并在之后再次拟合模型吗
CV = model_selection.KFold(n_splits=K, shuffle=True)
# Split data
for train_index, test_index in CV.split(X, y):
for model in models:
# splitting up data set
X_train = X.iloc[train_index]
y_train = y.iloc[train_index]
X_test = X.iloc[test_index]
y_test = y.iloc[test_index]
model.fit(X_train, y_train)
print(model.score(X_test, y_test) * 100)
【问题讨论】:
-
model变量将始终是最近拟合的变量。因此,在双循环内,您应该可以进行评估,但一旦在循环外,您必须再次选择并重新调整您的模型,以确保您拥有正确的模型并适合。 -
是的,我对正确的模型选择没有问题。这只是合适的。它适用于哪些训练和测试数据是否重要?例如我应该找到提供最佳性能的训练和测试集并在之后再次拟合模型吗?
-
是的,这很重要。但是您应该(也)更新您的问题,但目前在评论中询问您的实际问题。对我来说,这个问题本身提出了一些不同的问题。
-
在一个 CV 之后,我们通常适合 整个 训练集 - 我们不会选择具有最佳性能的 CV fold 数据...
-
谢谢你们! Desertnaut - 我知道这可能有点偏离原始问题,但如果我想稍后重新评估性能怎么办。这可能是在我调整模型之后。然后我已经将我的模型拟合到整个训练数据中
标签: python scikit-learn cross-validation