use*_*898 4 python scikit-learn
我希望cross_val_scoresklearn 函数返回每个类的准确度,而不是所有类的平均准确度。
功能:
\n\nsklearn.model_selection.cross_val_score(estimator, X, y=None, groups=None, \n scoring=None, cv=\xe2\x80\x99warn\xe2\x80\x99, n_jobs=None, verbose=0, fit_params=None, \n pre_dispatch=\xe2\x80\x982*n_jobs\xe2\x80\x99, error_score=\xe2\x80\x99raise-deprecating\xe2\x80\x99)\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n我该怎么做?
\n这是不可能的cross_val_score。您建议的方法意味着cross_val_score必须返回一个数组数组。但是,如果您查看源代码,您会发现 的输出cross_val_score必须是:
Run Code Online (Sandbox Code Playgroud)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:评分必须返回一个数字,而得到...
就像上面的评论正确指出的那样,您的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)
Run Code Online (Sandbox Code Playgroud)
请注意,这也得到了GridSearchCV方法论的支持。
注意:您不能返回“每个类别的准确性”,我猜您的意思是召回率,这基本上是实际属于某个类别的数据点之间正确预测的比例。
| 归档时间: |
|
| 查看次数: |
2316 次 |
| 最近记录: |