训练测试有效数据集...关于拟合模型的一般问题

Train Test Valid data sets... General question about fitting the models

所以我得到了 HW 作业的 Xtrain、ytrain、Xtest、ytest、Xvalid、yvalid 数据。这个作业是针对随机森林的,但我认为我的问题可以应用于 any/most 个模型。

所以我的理解是,您使用 Xtrain 和 ytrain 来拟合模型,例如 (clf.fit(Xtrain, ytrain)),这将创建可以为您的训练数据提供分数和预测的模型

因此,当我继续测试和验证数据集时,我只使用 ytest 和 yvalid 来查看它们如何预测和评分。我的教授为我们提供了三个 X 数据集(Xtrain、Xtest、Xvalid),但对我来说,我只需要 Xtrain 来初始训练模型,然后在不同的 y 数据集上测试模型。

如果我对每对 X,y 执行 .fit(),我会 create/fit 来自完全不同数据的三个不同模型,因此从我的角度来看,这些模型没有可比性。

我错了吗?

训练步骤

假设您正在使用 sklearn,clf.fit(Xtrain, ytrain) 方法使您能够训练模型 (clf) 以最适合训练数据 Xtrain 和标签 ytrain。在此阶段,您可以计算一个分数来评估训练数据上的模型,如您所说。

#train step
clf = your_classifier
clf.fit(Xtrain, ytrain)

测试步骤:

然后,您必须使用测试数据 Xtest 来提供先前训练的模型以生成新标签 ypred

#test step
ypred = clf.predict(Xtest)

最后,您必须将这些生成的标签 ypred 与真实标签 ytest 进行比较,以便使用以下工具对未知数据(训练期间未使用的数据)的模型性能进行稳健评估混淆矩阵、指标...

from sklearn.metrics import classification_report, confusion_matrix, accuracy_score

test_cm = confusion_matrix(ytest,ypred)
test_report = classification_report(ytest,ypred)
test_accuracy = accuracy_score(ytest, ypred)