如何修复”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

多维度Top-k评分

例如,在机器学习中的自然语言处理中,通常使用波束搜索来…

R – Caret train() “错误:停止” 与 “在newdata中未找到对象中使用的所有变量名”

我正在尝试为蘑菇数据构建一个简单的朴素贝叶斯分类器。我…

创建训练和测试数据集分割,数据嵌套在多个文件夹中

我正在准备数据以训练一个图像识别模型。目前我有一个文件…

我的神经网络预测出现错误:IndexError: list index out of range

我正在进行一个简单的垃圾邮件/非垃圾邮件文本分类。我的…

python 给出数组是一维的,但索引了两个维度错误

我已经为 miniBatchGradientDesce…

TensorFlow自定义训练步骤使用不同的损失函数

背景 根据TensorFlow文档,可以使用以下方式执…

发表回复

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