如何修复”OneClassSVM和GridSearchCV的’For multi-metric scoring’错误”

我在尝试使用OneClassSVM进行异常检测,并使用GridSearchCV()调整其参数,代码如下:

我已经搜索了许多网站,包括https://stackoverflow.com/,但没有找到适合我情况的解决方案。代码如下:

nus = [0.001, 0.01, 0.1, 1]gammas = [0.001, 0.01, 0.1, 1]scorers = {  'precision_score': make_scorer(precision_score),  'recall_score': make_scorer(recall_score), 'accuracy_score': make_scorer(accuracy_score)}tuned_parameters = {'C': [1, 10, 100, 1000], 'kernel' : ['rbf','linear'], 'gamma' : gammas, 'nu': nus}tuned_ocsvm = svm.OneClassSVM()ocsvm = GridSearchCV(estimator=svm.OneClassSVM(), param_grid=tuned_parameters, scoring=scorers,refit='false')

但它给出了如下错误:

对于多指标评分,参数refit必须设置为一个评分器键或一个可调用对象,以使用最佳参数设置在整个数据集上重新拟合估算器,并使该指标的最佳_*属性可用。如果不需要这样做,refit应明确设置为False。传递了’false’


回答:

GridSearchCV的文档中,refit被定义为:

refit : 布尔值、字符串或可调用对象,默认值=True

使用在整个数据集上找到的最佳参数重新拟合估算器。对于多指标评估,这需要是一个字符串,表示用于找到重新拟合估算器最佳参数的评分器。在选择最佳估算器时,除了最大得分之外还有其他考虑时,refit可以设置为一个函数,该函数返回给定cv_results_的选定best_index_。重新拟合的估算器在best_estimator_属性中可用,并允许直接在这个GridSearchCV实例上使用predict。对于多指标评估,如果设置了refit,属性best_index_、best_score_和best_params_将仅在这种特定评分器下确定。如果refit是可调用的,则不返回best_score_。请参阅scoring参数以了解更多关于多指标评估的信息。

如果你不想重新拟合估算器,可以设置refit=False(作为布尔值)。另一方面,如果你想使用其中一个评分器重新拟合估算器,你可以例如设置refit='precision_score'

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中创建了一个多类分类项目。该项目可以对…

发表回复

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