【问题标题】:sklearn, Keras, DeepStack - ValueError: multi_class must be in ('ovo', 'ovr')sklearn、Keras、DeepStack - ValueError: multi_class must be in ('ovo', 'ovr')
【发布时间】:2020-06-09 15:39:13
【问题描述】:

我训练了一组 DNN,我想在深度集成中使用它们。代码在 TF2 中实现,但 deepstack 包也适用于 Keras。代码看起来像这样

from deepstack.base import KerasMember
from deepstack.ensemble import DirichletEnsemble

dirichletEnsemble = DirichletEnsemble(N=2000 * ensemble_size)

for net_idx in range(0,ensemble_size):  

   member = KerasMember(name=model_name, keras_model=model,
                         train_batches=(train_images,train_labels), val_batches=(valid_images, valid_labels))

   dirichletEnsemble.add_member(member)

dirichletEnsemble.fit()

其中“模型”本质上是一个 Keras 模型,因此您需要在每个循环中加载一个模型(我正在使用自己的实现)。 'ensemble_size' 表示集成中使用的 DNN 数量。

结果出现以下错误

ValueError: multi_class must be in ('ovo', 'ovr')

由 sklearn 包生成。

更多细节:deepstack 创建一个指标

metric = metrics.roc_auc_score

然后返回为

return metric(y_t, y_p)

然后调用 sklearn

if multi_class == 'raise':
      raise ValueError("multi_class must be in ('ovo', 'ovr')")

在我的具体情况下,标签分别是 y_t

[7 10 18 52 10 13 10 4 7 7 24 26 7 26 13 13]

和y_p

[73 250 250 250 281 281 250 281 281 174 281 250 281 250 250 250]

如何将 multi_class 设置为 'ovo' 或 'ovr'?

【问题讨论】:

    标签: scikit-learn deep-learning tensorflow2.0 ensemble-learning


    【解决方案1】:

    roc_auc_score 的文档说明如下:

    roc_auc_score(
        y_true,
        y_score,
        *,
        average='macro',
        sample_weight=None,
        max_fpr=None,
        multi_class='raise',
        labels=None
    )
    

    倒数第二个参数是multi_class,解释如下:

    仅限多类。确定要使用的配置类型。默认值会引发错误,因此必须显式传递“ovr”或“ovo”。

    因此,roc auc 的计算方式似乎存在一些差异,它们迫使您明确选择您希望他们使用的变体。如果您不做出选择,默认值将导致引发异常。该例外是您在问题标题中报告的错误。

    【讨论】:

      【解决方案2】:

      如果您在使用 sklearn roc_auc_score 库时遇到此错误,请尝试 roc_auc_score(YTEST,YPRED, multi_class='ovr') ovr is one vs rest,这会将您的多类问题转换为二元问题

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-09-03
        • 2020-04-27
        • 2016-04-12
        • 1970-01-01
        • 2022-11-25
        • 2021-06-04
        • 2018-02-05
        相关资源
        最近更新 更多