首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从R2 GridSearchCV中获取MSE和GridSearchCV?

如何从R2 GridSearchCV中获取MSE和GridSearchCV?
EN

Stack Overflow用户
提问于 2014-08-04 18:27:55
回答 2查看 8.1K关注 0票数 6

我可以在管道上使用GridSearchCV,并将评分指定为'MSE''R2'。然后,我可以访问gridsearchcv.best_score_来恢复我指定的那个。如何获得GridSearchCV找到的解决方案的其他分数?

如果我再次使用其他评分参数运行GridSearchCV,它可能找不到相同的解决方案,因此它所报告的分数可能不对应于我们有第一个值的模型。

也许我可以提取参数并将它们提供给一个新的管道,然后使用新的管道运行cross_val_score?有更好的办法吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-04 19:50:58

不幸的是,现在对于GridSearchCV或任何内置的sklearn方法/对象来说,这并不简单。

尽管有关于拥有多个计分机输出的传言,但这个特性可能不会很快出现。

所以你必须自己做,有几种方法:

1)您可以查看cross_val_score的代码,并自己执行交叉验证循环,每次折叠完成后调用感兴趣的评分者。

2)不推荐你也可以从你感兴趣的得分手中建立自己的得分王,并让他们把分数作为一个数组输出。然后,您就会发现自己遇到了这里解释的问题:多个分数的交叉验证

3)既然你可以编码你自己的得分者,你就可以制作一个记分器,它输出你的一个分数(你希望GridSearchCV作出决定的那个分数),并且把你感兴趣的其他分数存储在一个单独的地方,这个位置可能是一个静态/全局变量,甚至是一个文件。

第三条似乎最不乏味,也是最有希望的:

代码语言:javascript
运行
复制
import numpy as np
from sklearn.metrics import r2_score, mean_squared_error
secret_mses = []

def r2_secret_mse(estimator, X_test, y_test):
    predictions = estimator.predict(X_test)
    secret_mses.append(mean_squared_error(y_test, predictions))
    return r2_score(y_test, predictions)

X = np.random.randn(20, 10)
y = np.random.randn(20)

from sklearn.cross_validation import cross_val_score
from sklearn.linear_model import Ridge

r2_scores = cross_val_score(Ridge(), X, y, scoring=r2_secret_mse, cv=5)

您将在r2_scores中找到相应的MSE分数,在secret_mses中找到相应的MSE。

请注意,如果并行的话,这可能会变得很混乱。在这种情况下,您需要将分数写到一个特定的地方,例如,在一个备忘录。

票数 4
EN

Stack Overflow用户

发布于 2019-09-27 13:48:03

在Scikit中添加-学习0.19

多指标评分GridSearchCV中被引入.一个广泛的例子可以找到这里

在执行多指标评分时,您应该提供两个额外的参数:

  1. 要用于评分的所有指标的列表。

为了评估多个指标,要么给出(唯一的)字符串列表,要么给出一个名为键,可调用为值的数据集。2.由于不能同时最大化所有度量,因此需要提供要优化的单个度量(或自定义的度量组合)。这是作为refit参数提供的。对于多个度量评估,这需要一个字符串来表示记分器,以便在最后找到用于修改估计器的最佳参数。 在选择最佳估计器时,除了最大值之外,还有其他考虑因素,可以将重构设置为返回给定best_index_的所选cv_results_的函数。

在您的例子中,您可能希望使用类似于

代码语言:javascript
运行
复制
cv=GridSearchCV(DecisionTreeClassifier(random_state=42),
                  param_grid={'min_samples_split': range(2, 403, 10)},
                  scoring=['neg_mean_squared_error', 'r2'], cv=5, refit='r2')
cv.fit(x,y)

然后,您可以使用以下方法分析详细的性能:

代码语言:javascript
运行
复制
cv.cv_results_
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25125194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档