为什么我无法使用make_scorer计算平均精度?

我正在尝试为我的多类分类模型计算交叉验证的精度得分。为此,我使用了make_scorer,并将平均值设置为加权平均。

#cross-validated precisionfrom sklearn.metrics import make_scorerscorer = make_scorer(average_precision_score, average = 'weighted')scorer

然而,当我运行代码时,我得到了以下错误:

---------------------------------------------------------------------------ValueError                                Traceback (most recent call last)<ipython-input-170-b2ce1e8a452e> in <module>      2 from sklearn.metrics import make_scorer      3 scorer = make_scorer(average_precision_score, average = 'weighted')----> 4 cv_precision = cross_val_score(clf, X, y, cv=5, scoring=scorer)      5 cv_precision = np.mean(cv_prevision)      6 cv_precision~\anaconda3\lib\site-packages\sklearn\model_selection\_validation.py in cross_val_score(estimator, X, y, groups, scoring, cv, n_jobs, verbose, fit_params, pre_dispatch, error_score)    388                                 fit_params=fit_params,    389                                 pre_dispatch=pre_dispatch,--> 390                                 error_score=error_score)    391     return cv_results['test_score']    392 ~\anaconda3\lib\site-packages\sklearn\model_selection\_validation.py in cross_validate(estimator, X, y, groups, scoring, cv, n_jobs, verbose, fit_params, pre_dispatch, return_train_score, return_estimator, error_score)    234             return_times=True, return_estimator=return_estimator,    235             error_score=error_score)--> 236         for train, test in cv.split(X, y, groups))    237     238     zipped_scores = list(zip(*scores))~\anaconda3\lib\site-packages\joblib\parallel.py in __call__(self, iterable)   1002             # remaining jobs.   1003             self._iterating = False-> 1004             if self.dispatch_one_batch(iterator):   1005                 self._iterating = self._original_iterator is not None   1006 ~\anaconda3\lib\site-packages\joblib\parallel.py in dispatch_one_batch(self, iterator)    833                 return False    834             else:--> 835                 self._dispatch(tasks)    836                 return True    837 ~\anaconda3\lib\site-packages\joblib\parallel.py in _dispatch(self, batch)    752         with self._lock:    753             job_idx = len(self._jobs)--> 754             job = self._backend.apply_async(batch, callback=cb)    755             # A job can complete so quickly than its callback is    756             # called before we get here, causing self._jobs to~\anaconda3\lib\site-packages\joblib\_parallel_backends.py in apply_async(self, func, callback)    207     def apply_async(self, func, callback=None):    208         """Schedule a func to be run"""--> 209         result = ImmediateResult(func)    210         if callback:    211             callback(result)~\anaconda3\lib\site-packages\joblib\_parallel_backends.py in __init__(self, batch)    588         # Don't delay the application, to avoid keeping the input    589         # arguments in memory--> 590         self.results = batch()    591     592     def get(self):~\anaconda3\lib\site-packages\joblib\parallel.py in __call__(self)    254         with parallel_backend(self._backend, n_jobs=self._n_jobs):    255             return [func(*args, **kwargs)--> 256                     for func, args, kwargs in self.items]    257     258     def __len__(self):~\anaconda3\lib\site-packages\joblib\parallel.py in <listcomp>(.0)    254         with parallel_backend(self._backend, n_jobs=self._n_jobs):    255             return [func(*args, **kwargs)--> 256                     for func, args, kwargs in self.items]    257     258     def __len__(self):~\anaconda3\lib\site-packages\sklearn\model_selection\_validation.py in _fit_and_score(estimator, X, y, scorer, train, test, verbose, parameters, fit_params, return_train_score, return_parameters, return_n_test_samples, return_times, return_estimator, error_score)    542     else:    543         fit_time = time.time() - start_time--> 544         test_scores = _score(estimator, X_test, y_test, scorer)    545         score_time = time.time() - start_time - fit_time    546         if return_train_score:~\anaconda3\lib\site-packages\sklearn\model_selection\_validation.py in _score(estimator, X_test, y_test, scorer)    589         scores = scorer(estimator, X_test)    590     else:--> 591         scores = scorer(estimator, X_test, y_test)    592     593     error_msg = ("scoring must return a number, got %s (%s) "~\anaconda3\lib\site-packages\sklearn\metrics\_scorer.py in __call__(self, estimator, *args, **kwargs)     85             if isinstance(scorer, _BaseScorer):     86                 score = scorer._score(cached_call, estimator,---> 87                                       *args, **kwargs)     88             else:     89                 score = scorer(estimator, *args, **kwargs)~\anaconda3\lib\site-packages\sklearn\metrics\_scorer.py in _score(self, method_caller, estimator, X, y_true, sample_weight)    210         else:    211             return self._sign * self._score_func(y_true, y_pred,--> 212                                                  **self._kwargs)    213     214 ~\anaconda3\lib\site-packages\sklearn\metrics\_ranking.py in average_precision_score(y_true, y_score, average, pos_label, sample_weight)    213                                 pos_label=pos_label)    214     return _average_binary_score(average_precision, y_true, y_score,--> 215                                  average, sample_weight=sample_weight)    216     217 ~\anaconda3\lib\site-packages\sklearn\metrics\_base.py in _average_binary_score(binary_metric, y_true, y_score, average, sample_weight)     72     y_type = type_of_target(y_true)     73     if y_type not in ("binary", "multilabel-indicator"):---> 74         raise ValueError("{0} format is not supported".format(y_type))     75      76     if y_type == "binary":ValueError: multiclass format is not supported

此外,当我尝试引入交叉验证时,它也不起作用…

from sklearn.metrics import make_scorerscorer = make_scorer(average_precision_score, average = 'weighted')cv_precision = cross_val_score(clf, X, y, cv=5, scoring=scorer)cv_precision = np.mean(cv_prevision)cv_precision

我得到了相同的错误。


回答:

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注