【问题标题】:Convert pandas data frame to categorical for keras将熊猫数据框转换为 keras 的分类
【发布时间】:2019-08-24 16:51:08
【问题描述】:

我正在尝试在 python 中预处理数据以用于深度学习 keras 函数。

我在模型拟合中使用categorical crossentropy 作为损失函数。它需要分类变量作为目标。

我的目标数据样本:

    y_train = y_train.astype('category')
    y_train.head()
            truth
        0   0
        1   0
        2   1
        3   0
        4   0

当我尝试将数据框列转换为分类时:

    num_classes=2
    y_train = keras.utils.to_categorical(y_train, num_classes)

它产生了一个错误:IndexError: index 1 is out of bounds for axis 1 with size 1

如何正确转换数据?

顺便说一句,如果我有 3800 个观察样本,每个样本有 2300 个数字 (float32) 特征,那么哪些 keras 模型更适合二元分类(是,否)?这些特征主要描述图形对象。

【问题讨论】:

    标签: python pandas machine-learning keras


    【解决方案1】:

    很遗憾,我没能重现您的错误。 运行:

    a=pd.DataFrame(np.concatenate([np.zeros(3),np.ones(3)]) ).astype('int').astype('category')
    from keras.utils import to_categorical
    to_categorical(a, 2)
    

    我得到一个输出:

    array([[1., 0.],
           [1., 0.],
           [1., 0.],
           [0., 1.],
           [0., 1.],
           [0., 1.]], dtype=float32)
    

    可能是版本问题!

    好消息是,对于二元分类问题,您不必使用categorical_crossentropy。您可以使用binary_crossentropy loss 并以您的 y_train 作为目标为您提供模型。

    关于您上次询问哪种 keras 模型更适合二进制分类,Keras 预训练模型指的是图像。您似乎有表格数据,虽然您无法使用预训练模型,但您必须自己运行自定义模型。

    【讨论】:

    • 我的错误是数据中有 3 个类别而不是两个。我适当地转换了这个列。
    猜你喜欢
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    相关资源
    最近更新 更多