我想手动分析我的ML模型(无论哪个)所做的错误,将其预测与标签进行比较。根据我的理解,这应该在验证集的实例上完成,而不是在训练集上。我通过GridSearchCV训练我的模型,提取best_estimator_,在交叉验证期间表现最好的那个,然后在整个数据集上重新训练。
因此,我的问题是:如果我的最佳模型在整个训练集上重新训练,我如何在验证集上获得预测以与标签进行比较(而不接触测试集)?
一种解决方案是在执行GridSearchCV之前进一步拆分训练集,但我猜肯定有更好的解决方案,例如在交叉验证期间获得对验证集的预测。有没有办法让这些预测成为最好的估计器?
谢谢!
发布于 2020-09-30 21:56:31
我理解了我的概念错误,我会在这里发帖,因为它可能会对我这样的ML初学者有所帮助!
应该可行的解决方案是以与GridSearchCV中相同的方式使用cross_val_predict拆分折叠。事实上,cross_val_predict在每个折叠上重新训练模型,并且不使用以前训练的模型!因此,结果与在GridSearchCV期间获得对验证集的预测是相同的。
发布于 2020-09-29 19:58:35
您可以使用从GridSearchCV获得的模型计算验证曲线。请阅读文档here。您只需要为要检查的超参数和一个评分函数定义数组。下面是一个示例:
train_scores, valid_scores = validation_curve(model, X_train, y_train, "alpha", np.logspace(-7, 3, 3), cv=5, scoring="accuracy")https://stackoverflow.com/questions/64052850
复制相似问题