gpt4 book ai didi

python - 如何从 sklearn GridSearchCV 中获取 MSE 和 R2?

转载 作者:太空宇宙 更新时间:2023-11-03 15:12:10 24 4
gpt4 key购买 nike

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

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

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

最佳答案

不幸的是,现在使用 GridSearchCV 或任何内置的 sklearn 方法/对象并不简单。

虽然有人谈论有多个得分手输出,但这个功能可能不会很快出现。

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

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

2) [不推荐] 你也可以从你感兴趣的记分器中构建你自己的记分器,并让它们将分数输出为一个数组。然后你会发现自己遇到了这里解释的问题: sklearn - Cross validation with multiple scores

3) 因为你可以 code your own scorers ,您可以制作一个记分器,输出您的一个分数(您希望 GridSearchCV 做出决定的分数),并将您感兴趣的所有其他分数存储在一个单独的地方,这可能是一个静态/全局变量,甚至是一个文件。

数字 3 似乎最不乏味且最有前途:

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 中找到 R2 分数,在 secret_mses 中找到相应的 MSE。

请注意,如果并行处理,这可能会变得困惑。在这种情况下,您需要将分数写入内存映射中的特定位置。

关于python - 如何从 sklearn GridSearchCV 中获取 MSE 和 R2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25125194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com