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

如何从数据集中移除EXIF数据?

我在尝试从数据集中的图像中移除EXIF数据(这些数据将…

用于Python中的“智能点”游戏的遗传算法不工作

过去几天我一直在尝试实现所谓的“智能点”游戏。我第一次…

哪个R平方得分更有帮助?

data.drop(‘Movie Title’, ax…

使用线性回归预测GRE分数对录取率的影响

我正在学习线性回归,并尝试在Jupyter笔记本中用P…

使用mlrMBO贝叶斯优化进行SVM超参数调优时出现错误

我试图针对一个分类任务优化SVM,这个方法在许多其他模…

Keras模型的二元交叉熵准确率未发生变化

我在网上看到了很多关于这个问题的提问,但没有找到明确的…

发表回复

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