GridSearchCV 及预测误差分析(scikit-learn)
GridSearchCV and prediction errors analysis (scikit-learn)
我想手动分析我的 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")
我理解了我的概念错误,我会 post 在这里,因为它也许可以帮助像我一样的其他 ML 初学者!
应该可行的解决方案是使用 cross_val_predict
以与 GridSearchCV
中相同的方式拆分折叠。事实上,cross_val_predict
re-trains 每次折叠的模型并没有使用之前训练的模型!所以结果与在 GridSearchCV
.
期间对验证集的预测相同
我想手动分析我的 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")
我理解了我的概念错误,我会 post 在这里,因为它也许可以帮助像我一样的其他 ML 初学者!
应该可行的解决方案是使用 cross_val_predict
以与 GridSearchCV
中相同的方式拆分折叠。事实上,cross_val_predict
re-trains 每次折叠的模型并没有使用之前训练的模型!所以结果与在 GridSearchCV
.