gpt4 book ai didi

python - 如何定义自己的评分策略 sklearn.model_selection.GridSearchCV?

转载 作者:行者123 更新时间:2023-11-30 08:59:08 24 4
gpt4 key购买 nike

我想在 GridSearchCV 中定义一个新的评分,正如这里所述 http://scikit-learn.org/stable/modules/model_evaluation.html#implementing-your-own-scoring-object 。这是我的代码:

from sklearn.model_selection import GridSearchCV
def pe_score(estimator,x,y):
clf=estimator
clf.fit(x,y)
z=clf.predict(x)
pe=prob_error(z, y)
return pe

pe_error=pe_score(SVC(),xTrain,yTrain)
grid = GridSearchCV(SVC(), param_grid={'kernel':('linear', 'rbf'), 'C':[1, 10, 100,1000,10000]}, scoring=pe_error)

其中prob_error(z,y)是计算我想要最小化的误差的函数,z是训练集的预测, y 训练集的真实值。但是,我收到以下错误:

---> 18 clf.fit(xTrain, yTrain)
TypeError: 'numpy.float64' object is not callable

我不知道pe_error的格式是否定义良好。我该如何解决?谢谢。

最佳答案

评分函数应采用以下格式:score_func(y, y_pred, **kwargs)

然后,您可以使用 make_scorer 函数获取评分函数并使其与 GridSearchCV 一起使用。

所以,在这种情况下,它将是:

from sklearn.model_selection import GridSearchCV
from sklearn.metrics import make_scorer

clf = estimator
clf.fit(x,y)
z = clf.predict(x)

def pe_score(y, y_pred):
pe = prob_error(y_pred, y)
return pe

pe_error = make_scorer(pe_score)
grid = GridSearchCV(SVC(), param_grid={'kernel':('linear', 'rbf'), 'C':[1, 10, 100,1000,10000]}, scoring= pe_error)

(我假设您已在代码中的其他位置实现或导入了 prob_error)

文档:http://scikit-learn.org/stable/modules/generated/sklearn.metrics.make_scorer.html

关于python - 如何定义自己的评分策略 sklearn.model_selection.GridSearchCV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47393060/

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