【问题标题】:How to feed one hot encoded vector dataframe in keras flow from dataframe如何从数据帧在 keras 流中提供一个热编码矢量数据帧
【发布时间】:2020-06-25 05:21:52
【问题描述】:

我有一个 multi_class 问题而不是 multi_label 问题,并且 我有一个如下的数据框。

我希望它在 flow_from_dataframe 中使用

train_generator=train_data_gen.flow_from_dataframe(train_df,directory='directory',
                                                      target_size=(img_shape,img_shape),
                                                      x_col="image_id",
                                                      y_col=['healthy','multiple_diseases','rust','scab'],
                                                      class_mode='categorical',
                                                      shuffle=False,
                                                       subset='training',
                                                      batch_size=batch_size)

我收到以下错误

TypeError: If class_mode="categorical", y_col="['healthy', 'multiple_diseases', 'rust', 'scab']" column values must be type string, list or tuple.

【问题讨论】:

标签: python tensorflow keras scikit-learn


【解决方案1】:

使用 class_mode='categorical',据我所知,您只能有 一列 具有一组给定的类(比如 0、1、2、... N)

现在,如果我正确理解了这个问题,您希望能够预测 y 标签的组合,比如说 y_col="['healthy', 'multiple_diseases', 'rust', 'scab']"。

有两种方法可以解决您的问题:

  1. 为每个 y 列构建一个预测模型。这意味着您将首先训练一个可以预测“健康”的模型。然后是第二个可以预测“多种疾病”的模型......等等。
  2. 您构建了一个预测模型,可以一次对所有这些进行分类。为此,您需要创建一个新的标签列(全局标签)。您可以使用 if/elif 条件循环或 lambda 函数。新列将对应于 y_col=['Global_Label']。为此,我建议您查看这篇文章:https://machinelearningmastery.com/how-to-prepare-categorical-data-for-deep-learning-in-python/

特别是这个

def prepare_targets(y_train, y_test):
le = LabelEncoder()
le.fit(y_train)
y_train_enc = le.transform(y_train)
y_test_enc = le.transform(y_test)
return y_train_enc, y_test_enc

【讨论】:

    【解决方案2】:

    使用class_mode = "raw" 以便所有 4 个类都加载有二进制标签。

    关于如何修改标签以及使用class_mode进行多类分类的各种方法,我推荐this文章。

    【讨论】:

    • 我相信链接中给出的例子是一个多标签问题而不是多类问题
    • 是的..我希望没关系。因为你的最后一层有 4 个输出,这将提供 4 个输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多