不幸的是
GridSearchCV,使用或任何内置的sklearn方法/对象现在还不是很简单。
尽管有人说有多个计分器输出,但是此功能可能不会很快出现。
因此,您必须自己做,有几种方法:
1)您可以看一下的代码
cross_val_score并自己执行交叉验证循环,每完成一次就调用感兴趣的得分手。
2)[不推荐]您也可以在自己感兴趣的计分器中构建自己的计分器,并让他们将分数输出为数组。然后,您将发现自己在这里解释的问题: sklearn-
带有多个分数的交叉验证
3)由于您可以编写自己的得分手,因此可以使一个得分手输出您的一个得分(您要
GridSearchCV做出决定的得分),并将您感兴趣的所有其他得分存储在单独的位置,可以是静态/全局变量,甚至是文件。
3号似乎是最乏味和最有前途的:
import numpy as npfrom sklearn.metrics import r2_score, mean_squared_errorsecret_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_scorefrom sklearn.linear_model import Ridger2_scores = cross_val_score(Ridge(), X, y, scoring=r2_secret_mse, cv=5)
您可以在中找到R2分数,在中找到
r2_scores相应的MSE
secret_mses。
请注意,如果并行执行,这可能会变得混乱。在这种情况下,您将需要将分数写入例如memmap中的特定位置。



