在另一个数据集上测试模型?
Posted
技术标签:
【中文标题】在另一个数据集上测试模型?【英文标题】: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))
看起来很简单,但我真的很困惑,我希望能得到一些解释。
【问题讨论】:
【参考方案1】:在另一个数据集上进行测试,比如 X2, y2
,并不意味着您需要将第二个数据集拆分为训练和测试子集,就像您对原始 X
和 y
所做的那样。一旦你拟合了你的模型,比如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))
【讨论】:
是的,功能是一样的,我正在尝试查看是否可以识别来自亲子交互(第一个数据集)的(“是”、“否”、“警告”)成人机器人交互(第二个数据集)!谢谢你的解释!以上是关于在另一个数据集上测试模型?的主要内容,如果未能解决你的问题,请参考以下文章
多个模型在测试集上的Accuracy以及AUC指标可视化对比实战
当没有为它们提供注释时,如何在 PascalVOC 2012 或 COCO 测试集上测试模型?
R语言使用caret包的predict函数对模型在测试集上的表现进行推理和预测predict函数对测试数据集进行数据预处理(和训练集的初始方式保持一致):缺失值填充数值变量最小最大缩放独热编码