将pandas数据框转换为keras分类

时间:2019-04-03 08:24:18

标签: python pandas machine-learning keras

我正在尝试对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模型更适合二进制分类?这些功能主要描述图形对象。

1 个答案:

答案 0 :(得分:1)

很遗憾,我没有设法重现您的错误。 正在运行:

<div class="rex">
  <div class="block">
    <img src="MainImg">
    <img src="ContentTypeImg">
    <ul class="breadcrumb">
      <li><a href="#">Home</a></li>
      <li><a href="#">Samples</a></li>
      <li><a href="#">WEBCASTS</a></li>
    </ul>

    <div>
      <h4> Description </h4>
    </div>
    <div>
      <h5> Author </h5>
    </div>

  </div>
  

  <div class="block">
    <img src="MainImg">
    <img src="ContentTypeImg">
    <ul class="breadcrumb">
      <li><a href="#">Home</a></li>
      <li><a href="#">Samples</a></li>
      <li><a href="#">WEBCASTS</a></li>
    </ul>

    <div>
      <h4> Description </h4>
    </div>
    <div>
      <h5> Author </h5>
    </div>

  </div>
  <br />

</div>

我得到一个输出:

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损失,并以y_train作为目标直接进行建模。

关于您最后一次请求哪种keras模型更适合二进制分类的问题,Keras预训练模型正在引用图像。您似乎拥有表格数据,尽管您将无法使用预先训练的模型,但必须自己运行自定义模型。