在另一个数据集上测试模型?

Test a model on another dataset?

我需要在另一个数据集上评估 ML 模型,但我不知道它的全部含义。我有一个想法,但我不确定。 假设我们有:

model.fit 训练两个模型后,我如何在另一个数据库上测试它们?是吗:

from sklearn.svm import SVC


#training on the first model
svm.fit(X, Y)

#test on  the 2nd model
y_pred = svm.predict(X_test_2)

#evaluate accuracy
print(accuracy_score(y_test, y_pred))

看起来很简单,但我真的很困惑,希望得到一些解释。

在另一个数据集上进行测试,比如 X2, y2,并不意味着您需要将第二个数据集拆分为训练和测试子集,就像您对原始 X 和 [=13= 所做的那样].一旦你安装了你的模型,比如 svm,在 X 中,如你所示,你只需预测 X2 并与 y2:

中的标签进行比较
# predict on the 2nd dataset X2
y_pred = svm.predict(X2)

# evaluate accuracy
print(accuracy_score(y2, y_pred))

您的方向是正确的,但有几点需要牢记:

  • 一旦您的模型经过训练并且您使用了 model.fit,那么您可以使用该模型对第二个数据集使用 model.predict
  • 进行预测
  • 你要在第二个数据集中预测的特征和值应该与第一个数据集相同。否则,它就没有意义。
  • 您没有两个模型。您已经使用一个数据集训练了 一个 模型,然后使用相同的模型对第二个数据集进行了预测。
  • 不需要将第二个数据集分成X_train和X_test,因为模型已经训练好了。您将拥有的只是 X_test 或 X2,它们是第二个数据集的所有行的所有特征,而 y 是您要预测的值。

示例:

  • 数据集 1:X_train、X_test、y_train、y_test 从 X、Y 拆分用于训练模型

  • 数据集 2:X2,Y2

     from sklearn.svm import SVC
    
     #training on the first model
     svm.fit(X_train, y_train)
    
     # predict on the 2nd dataset X2
     y_pred = svm.predict(X2)
    
     #evaluate accuracy of predictions for second dataset
     print(accuracy_score(Y2, y_pred))
    

我不认为“你想在第二个数据集中预测的特征和值应该与第一个数据集相同。否则,它就没有意义”。 如果您的训练数据集与您的测试数据集不同(即在某些特征上),模型准确度将会降低。