【问题标题】:Test a model on another dataset?在另一个数据集上测试模型?
【发布时间】:2021-01-31 07:28:02
【问题描述】:

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

  • X_train, X_test, y_train, y_test 从第一个模型的 X,Y 中分离出来
  • X_train_2, X_test_2, y_train_2, y_test_2 从 X2 中分离出来,2 用于第二个模型

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))

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

【问题讨论】:

    标签: machine-learning classification


    【解决方案1】:

    在另一个数据集上进行测试,比如 X2, y2,并不意味着您需要将第二个数据集拆分为训练和测试子集,就像您对原始 Xy 所做的那样。一旦你拟合了你的模型,比如svm,在你展示的X中,你只需预测X2并与y2中的标签进行比较:

    # predict on the 2nd dataset X2
    y_pred = svm.predict(X2)
    
    # evaluate accuracy
    print(accuracy_score(y2, y_pred))
    

    【讨论】:

    • 哦,我明白了,我对拆分第二个数据集也有疑问!非常感谢,现在清楚了
    【解决方案2】:

    您走在正确的道路上,但有几点需要牢记:

    • 一旦您的模型经过训练并使用了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))
      

    【讨论】:

    • 是的,功能是一样的,我正在尝试查看是否可以识别来自亲子交互(第一个数据集)的(“是”、“否”、“警告”)成人机器人交互(第二个数据集)!谢谢你的解释!
    猜你喜欢
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 2014-07-12
    相关资源
    最近更新 更多