使用 LSTM 构建二元分类模型

Posted

技术标签:

【中文标题】使用 LSTM 构建二元分类模型【英文标题】:build a binary classification model with LSTM 【发布时间】:2020-02-05 16:36:05 【问题描述】:

我有一个 csv 格式的数据集,有 49 列,其中一些是字符串,其中一些是整数。

我添加了一个新列用作名为“输入”的标签,其中适当的标签为 0 和 1。

以下是数据集的示例:

要求在模型训练时考虑所有这些特征列。

我有哪些选择来训练这个模型? 我应该遵循哪些步骤? 任何资源(文章、视频等)将不胜感激。

谢谢,

【问题讨论】:

你能提供更多关于你尝试过什么的信息吗? 为什么LSTM 的所有型号? @Andrei @shahaf LSTM 是客户的要求,令人困惑的部分是所有特征列的利用,其中包括字符串列,主要是 1 或 2 个单词,我是否应该实现 tokenization ? 【参考方案1】:

这里有两个教程可能会对您有所帮助:

https://towardsdatascience.com/machine-learning-recurrent-neural-networks-and-long-short-term-memory-lstm-python-keras-example-86001ceaaebc

https://stackabuse.com/time-series-analysis-with-lstm-using-pythons-keras-library/

本教程是关于混合数据的: https://www.pyimagesearch.com/2019/02/04/keras-multiple-inputs-and-mixed-data/

如果您不使用未提及的其他东西,我建议您尝试使用 Keras 来熟悉如何训练它。

只要在 google 上写下你的问题,就能帮你找到很多具体的教程!

编辑: 来自 keras 文档:

keras.utils.to_categorical(y, num_classes=None, dtype='float32')

将类向量(整数)转换为二进制类矩阵。例如。与 categorical_crossentropy 一起使用。 参数

y:要转换为矩阵的类向量(从 0 到 num_classes 的整数)。 num_classes:类的总数。 dtype:输入期望的数据类型,作为字符串(float32、float64、int32...)

返回:

输入的二进制矩阵表示。类轴放在最后。

# Consider an array of 5 labels out of a set of 3 classes 0, 1, 2:
> labels
array([0, 2, 1, 2, 0])
# `to_categorical` converts this into a matrix with as many
# columns as there are classes. The number of rows
# stays the same.
> to_categorical(labels)
array([[ 1.,  0.,  0.],
       [ 0.,  0.,  1.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  1.],
       [ 1.,  0.,  0.]], dtype=float32)

【讨论】:

我在考虑 Keras,但令人困惑的部分是我必须利用所有功能以及 LSTM,但是如何将带有字符串的列转换为标记化?也在想one-hot encoding 你现在用了什么?张量流?还有什么? 我在预处理阶段,可以使用任何一种TF或Keras。 字符串只是分类数据,因此您可以对其进行一次性编码。 混合数据教程将帮助您将所有列作为输入

以上是关于使用 LSTM 构建二元分类模型的主要内容,如果未能解决你的问题,请参考以下文章

在 TensorFlow 中使用多对多 LSTM 进行视频分类

文本分类《短文本分类的ResLCNN模型》

文本分类《短文本分类的ResLCNN模型》

文本分类《短文本分类的ResLCNN模型》

keras 分类和二元交叉熵

RNN经典案例实战使用RNNLSTMGRU模型构建姓名分类器