假设我们使用GridSearch调整SVM,如下所示:
algorithm = SVM()
parameters = {'kernel': ['rbf', 'sigmoid'], 'C': [0.1, 1, 10]}
grid= GridSearchCV(algorithm, parameters)
grid.fit(X, y)
然后,您希望在中使用最佳拟合参数/估计量cross_val_score。我的问题是,grid此时是哪种模型?它是表现最好的一个吗?换句话说,我们可以做
cross_val_scores = cross_val_score(grid, X=X, y=y)
还是应该使用
cross_val_scores = cross_val_score(grid.best_estimator_, X=X, y=y)
当我同时运行这两个程序时,我发现它们返回的分数不同,所以我很好奇这里的正确方法。(我会假设使用best_estimator_。)但是,这又引发了一个问题,即:仅grid使用用作模型会产生什么?第一个?
根据GridSearchCV的资料,grid.predict与相同grid.best_estimator_.predict(即grid和grid.best_estimator_相同的模型)。
注意,cross_val_scores 再次执行拟合,因此将其与对象一起使用并不是惯用的GridSearchCV。
有两种选择:
如果只有分数很重要,请使用cross_val_scores, 如果需要拟合模型,请使用GridSearchCV并从中提取分数grid.cv_results_['mean_test_score'](请参阅GridSearchCV docs)。 而且,由于模型拟合和CV分裂的随机性,同一轮拟合过程可能会得出不同的结果。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。