问题描述
我想手动分析ML模型(无论哪种)的错误,将其预测与标签进行比较。据我了解,这应该在验证集而不是训练集的实例上完成。 我通过gridsearchcv训练了模型,提取了best_estimator_,在交叉验证过程中表现最好的模型,然后在整个数据集上进行了训练。
因此,我的问题是:如果我的最佳模型在整个训练集上进行了训练,那么如何在验证集上进行预测以与标签进行比较(而不接触测试集)?
一种解决方案是在执行gridsearchcv之前进一步拆分训练集,但我想必须有一个更好的解决方案,例如在交叉验证过程中获得对验证集的预测。是否有办法获得最佳预测器的这些预测?
谢谢!
解决方法
您可以使用从GridSearchCV获得的模型计算验证曲线。阅读文档here。您只需要为要检查的超参数和评分函数定义数组。这是一个示例:
train_scores,valid_scores = validation_curve(model,X_train,y_train,"alpha",np.logspace(-7,3,3),cv=5,scoring="accuracy")
,
我了解我的概念性错误,我将在此处发布,因为它可能会像我一样帮助其他一些ML初学者!
应该起作用的解决方案是使用cross_val_predict
和GridSearchCV
一样进行折叠。实际上,cross_val_predict
在每次折叠时都会重新训练模型,并且不要使用先前训练过的模型!因此,结果与在GridSearchCV
期间获得验证集的预测相同。