【问题标题】:How to calculate cross-validation with multiple scores for multiclass?如何计算多类的多个分数的交叉验证?
【发布时间】:2020-06-26 11:01:31
【问题描述】:

我正在使用 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

【问题讨论】:

    标签: python machine-learning scikit-learn cross-validation precision-recall


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      您应该做的是将cross_validate 中的scoring=('precision', 'recall', 'f1') 参数替换为类似

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

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

      【讨论】:

        猜你喜欢
        • 2018-06-01
        • 2020-08-21
        • 2017-04-14
        • 2014-06-13
        • 2016-10-17
        • 2015-07-07
        • 2018-01-20
        • 2018-01-06
        • 2016-12-07
        相关资源
        最近更新 更多