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

2024-07-03 06:11:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我将用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


Tags: datamodel错误createvalidateprecisionf1print
2条回答

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

问题在于,精度、召回率和F1分数的默认average设置仅适用于二进制分类

您应该做的是用以下内容替换cross_validate中的scoring=('precision', 'recall', 'f1')参数

scoring=('precision_macro', 'recall_macro', 'f1_macro')

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

相关问题 更多 >