Python keras:多标签值的 to_categorical 给出 ValueError: invalid literal for int() with base 10

Posted

技术标签:

【中文标题】Python keras:多标签值的 to_categorical 给出 ValueError: invalid literal for int() with base 10【英文标题】:Python keras: to_categorical for multilabel values gives ValueError: invalid literal for int() with base 10 【发布时间】:2020-11-02 00:11:48 【问题描述】:

我在我的数据集上使用train_test_split 派生了一个训练集y_train(有8 个独特的类)。

y_train

    2019       AD
    777     QUERY
    282      INFO
    1879     REAL
    910     QUERY
        ...  
    997     QUERY
    510      FAKE
    252      REAL
    1334     FAKE
    1579     INFO
    Name: target, Length: 1653, dtype: object

现在当我在这个集合上运行 to_categorical 时,我得到了这个错误。

y_train = to_categorical(np.asarray(y_train),8, dtype='O')

     41     """
     42 
---> 43     y = np.array(y, dtype='int')
     44     input_shape = y.shape
     45     if input_shape and input_shape[-1] == 1 and len(input_shape) > 1:

ValueError: invalid literal for int() with base 10: 'AD'

我也试过 y_train = to_categorical(np.asarray(y_train)),但它给出了同样的错误,我不知道为什么? dtype 是我的训练集的“对象”,我将其设置为 dtype = 'O' 那么问题出在哪里?

【问题讨论】:

【参考方案1】:

这行得通。

y_train = to_categorical(np.asarray(y_train.factorize()[0]))

factorize() 方法将每个字符串编码为一个分类值,因为to_categorical 只能采用dtpyeintfloat

【讨论】:

你能解释一下它的作用吗?

以上是关于Python keras:多标签值的 to_categorical 给出 ValueError: invalid literal for int() with base 10的主要内容,如果未能解决你的问题,请参考以下文章

多标签分类 Keras 指标

Keras CNN:图像的多标签分类

如何使用keras进行多标签多类分类

如何使用 keras 实现多标签分类神经网络

基于Keras的多标签图像分类

Keras - 带权重的多标签分类