Python “如何修复错误”;对于多指标评分”而言;对于OneClassSVM和GridSearchCV

Python “如何修复错误”;对于多指标评分”而言;对于OneClassSVM和GridSearchCV,python,machine-learning,scikit-learn,gridsearchcv,Python,Machine Learning,Scikit Learn,Gridsearchcv,我尝试使用OnClassSVM进行异常检测,并使用GridSearchCV()对其参数进行了如下调整: 我已经搜索了很多网站,包括,但没有找到任何合适的解决方案,我的情况。 代码如下: 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(recal

我尝试使用OnClassSVM进行异常检测,并使用GridSearchCV()对其参数进行了如下调整:

我已经搜索了很多网站,包括,但没有找到任何合适的解决方案,我的情况。 代码如下:

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”

在上,
refit
定义为:

重新安装:布尔值、字符串或可调用,默认值为True

使用整个数据集上的最佳参数重新调整估计器。 对于多指标评估,这需要是一个字符串,表示记分器,该记分器将用于找到最佳参数,以便在最后重新调整估计器。 如果在选择最佳估计器时存在除最大分数以外的其他考虑因素,可将refit设置为一个函数,该函数返回给定cv结果的选定最佳指数。 重新调整的估计器在最佳估计器属性下可用,并允许在此GridSearchCV实例上直接使用predict。 此外,对于多指标评估,只有在设置了refit时,属性best_index_uu、best_score_u和best_params_u才可用,并且所有这些属性都将由该特定计分员确定。如果refit可调用,则不会返回最佳分数。 有关多指标评估的更多信息,请参见评分参数


如果不想重新安装估计器,可以设置
refit=False
(布尔值)。另一方面,要使用其中一个记分器重新安装估计器,您可以执行
refit='precision\u score'
例如。

thankx phoenix为您重播我使用refit='precision\u score'。但现在它给出的错误是“缺少1个必需的位置参数:'y_true'”。OneClassSVM是无监督的,您没有y_true。因此,您不能以这种方式评估模型。你想解决的问题是什么?