gpt4 book ai didi

python - 在交叉验证期间将参数传递给 scikit 中的 Score_func

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

我想在交叉验证期间计算 scikit 中的微平均精度。

这里的文档:

http://scikit-learn.org/0.10/modules/cross_validation.html

假设您可以从指标模块传入自定义评分函数,例如metrics. precision_score:

http://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_score.html#sklearn.metrics.precision_score

但默认情况下它会计算每个类(class)的分数。如果我尝试像这样传入 average="micro" :

cross_validation.cross_val_score(clf, x, label, cv=5,
score_func=metrics.precision_score(average="micro"))

我收到以下错误:

TypeError: precision_score() takes at least 2 arguments (1 given)

我无法传入它想要的所有其他参数(y_truey_pred),因为我不知道 y_pred是。

有没有办法从 scikit 中的交叉验证中获得微平均精度?

最佳答案

这里的问题是您调用(使用参数average)metrics. precision_score而不是传递函数本身。解决此问题的临时方法是创建一个函数

def micro_average_precision_score(y_true, y_pred):
metrics.precision_score(y_true, y_pred, average="micro")

然后将其用作您的score_func,即score_func=micro_average_ precision_score

重要的旁注:score_func已被弃用(如果我没记错的话,从0.13开始)。您指的是 0.10 版本的 scikit learn 文档。你用的是这个版本吗?

传递记分器的新方法是使用记分器对象。关联的关键字是 scoring= 而不是 score_func=。您可以使用 make_scorer

从任何评分函数(例如上面定义的函数)中创建评分器对象
from sklearn.metrics.score import make_scorer
scorer = make_scorer(micro_average_precision_score, greater_is_better=True)

或者,等价:

scorer = make_scorer(metrics.precision_score, 
greater_is_better=True, average="micro")

关于python - 在交叉验证期间将参数传递给 scikit 中的 Score_func,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23170874/

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