gpt4 book ai didi

python - cross_val_score 返回每个类的准确度

转载 作者:太空宇宙 更新时间:2023-11-04 00:02:53 24 4
gpt4 key购买 nike

我希望 sklearn 函数的 cross_val_score 返回每个类的准确度,而不是所有类的平均准确度。

功能:

sklearn.model_selection.cross_val_score(estimator, X, y=None, groups=None,  
scoring=None, cv=’warn’, n_jobs=None, verbose=0, fit_params=None,
pre_dispatch=‘2*n_jobs’, error_score=’raise-deprecating’)

Reference

我该怎么做?

最佳答案

这对于 cross_val_score 是不可能的。您建议的方法意味着 cross_val_score 必须返回一个数组。但是,如果您查看源代码,您会发现 cross_val_score 的输出必须是:

Returns
-------
scores : array of float, shape=(len(list(cv)),)
Array of scores of the estimator for each run of the cross validation.

因此,cross_val_score 会检查您使用的评分方法是否为多指标。如果是,它会抛出如下错误:

ValueError: scoring must return a number, got ... instead

编辑:

就像上面的评论正确指出的那样,您的另一种选择是改用 cross_validate。以下是它在 Iris 数据集上的工作方式:

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import cross_validate
from sklearn.metrics import make_scorer
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import recall_score

from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target

scoring = {'recall0': make_scorer(recall_score, average = None, labels = [0]),
'recall1': make_scorer(recall_score, average = None, labels = [1]),
'recall2': make_scorer(recall_score, average = None, labels = [2])}

cross_validate(DecisionTreeClassifier(),X,y, scoring = scoring, cv = 5, return_train_score = False)

请注意,GridSearchCV 方法也支持这一点。

注意:您不能返回“每个类别的准确度”,我猜您的意思是召回率,这基本上是实际属于某个类别的数据点中正确预测的比例。

关于python - cross_val_score 返回每个类的准确度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55132382/

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