如何计算多类多分数的交叉验证?

How to calculate cross-validation with multiple scores for multiclass?

我正在用 python 开始我的第一个机器学习代码。但是,我在计算多类模型的召回率、精度和 f1 时遇到错误。

X = pd.read_excel(path, dtype=int)
allarray = X.values
X_data = allarray[:,0:-1]
Y = allarray[:,-1]
X_scaled = scaler.fit_transform(X_data)

create_model = create_custom_model(n_features, n_classes, 8, 3)

estimator = KerasClassifier(build_fn=create_model, epochs=100, batch_size=100, verbose=0)
scores = cross_validate(estimator, X_scaled, Y, cv=10, scoring=('precision', 'recall', 'f1'), return_train_score=False)
print(scores['precision'])
print(scores['recall'])
print(scores['f1'])

我收到此错误:

ValueError: Target is multiclass but average='binary'. Please choose another average setting.

但是cross_validate没有参数average

我认为问题不在于 cross_validate,这是因为评分(在精度方法中你有平均参数)。您可以在评分方法中设置参数

问题是精度、召回率和 F1 分数的默认 average 设置仅适用于二元分类。

你应该做的是用

之类的东西替换 cross_validate 中的 scoring=('precision', 'recall', 'f1') 参数
scoring=('precision_macro', 'recall_macro', 'f1_macro')

每个指标都有多个后缀选项 - macromicroweighted 等。请参阅 documentation、示例和其中的分数链接.