只有 2 个类,但为什么我收到 ValueError: Target is multiclass butaverage = 'binary'。请选择其他平均设置

问题描述 投票:0回答:1

我正在尝试在

GridSearchCV
上使用
OneClassSVM
构建员工流失预测模型。我的代码如下:

from sklearn.svm import OneClassSVM
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import precision, recall, f1_score

grid = {'nu' : [0.02, 0.03],
'kernel' : ['poly', 'sigmoid', 'linear', 'rbf'],
'degree' : [1,3,5,7],
'gamma' : [.01, .1, 1, 10, 500]
'coeff0' : [1,2,3]
}

mod = GridSearchCV(OneClassSVM(),
grid,
cv = 3,
scoring = ['f1', 'precision', 'recall'],
refit = 'f1',
return_train_score = True)

mod.fit(x_train, y_train)

这里 y 只有 0 和 1(本质上是否辞职),但不确定为什么我得到:

ValueError: Target is multiclass but average='binary'. Please choose another average setting, one of [None, 'micro', 'macro', 'weighted']

有人可以帮我解决这个问题吗?

python pandas svm gridsearchcv
1个回答
0
投票

您的错误发生是由于

OneClassSVM
模型是无监督学习模型。您正在使用已标记的数据作为输入(受监督的标签,如
0
1
)。

您可以通过两种方式解决这个问题。您可以按预期使用

OneClassSVM

mod = GridSearchCV(
    OneClassSVM(),
    grid,
    cv=3,
    scoring=None,  # Scoring doesn't apply here because no ground truth is used
    refit=False
)

mod.fit(x_train_majority)
y_pred = mod.best_estimator_.predict(x_train)

然后将“y_pred”与“y_train”进行比较,以计算精度、召回率或 F1 分数等指标。 F1 在你的情况下,因为这就是你想要使用的。

© www.soinside.com 2019 - 2024. All rights reserved.