【问题标题】:Evaluating my model in new unseen dataset在新的看不见的数据集中评估我的模型
【发布时间】:2020-12-24 14:10:49
【问题描述】:
我已经训练了我的模型 (.fit()),并且对测试拆分预测 (.predict()) 的性能感到满意。所以我将我的模型保存到磁盘 (.save('model.h5'))。
现在我得到了新的未见过的数据集,并要求我在这个数据集上评估我已经保存的模型的性能。我不仅需要报告准确性,还需要报告行精度/召回、混淆矩阵等...
然后我加载了我保存的模型 (.load_model('model.h5'))。
问题:
我应该使用什么合适的函数来准备这个新数据集的模型性能报告。我应该使用.predict() 函数还是.evaluate()。
【问题讨论】:
标签:
python
python-3.x
machine-learning
keras
deep-learning
【解决方案1】:
您可以使用 sklearn 的分类报告生成所有相关指标。
代码:
preds = model.predict(x1)
y_pred = np.argmax(preds, axis = 1)
print(classification_report(y1, y_pred))
输出:
precision recall f1-score support
0 0.71 0.08 0.15 59
1 0.42 0.95 0.58 41
accuracy 0.44 100
macro avg 0.57 0.52 0.37 100
weighted avg 0.59 0.44 0.33 100
您可以查看所有可用的指标here。
model.evaluate():
此方法将提供您在 compile 方法中定义的损失和指标的值,这通常是不够的。
【解决方案2】:
如果您想在训练期间获得损失/准确度或任何其他指标 - 您需要 .evaluate() 方法。如果您只需要实际概率或回归值 - 您需要 .predict() 方法。