如何使用 CNN 对非图像数据进行预测?

人工智能 卷积神经网络 张量流
2021-10-19 01:13:48

我有一个数据集,已在 Python 中作为数据框加载。它由 21392 行(数据实例,每一行是一个样本)和 1972 列(特征)组成。最后一列,即第 1972 列有字符串类型标签(14 个不同类别的目标标签)。在这种情况下,我想使用 CNN 对数据进行分类,并使用可用特征预测目标标签。尽管这似乎是可能的,但这是一种有点非传统的方法。但是,我对方法应该如何使用感到非常困惑,因为我找不到任何示例代码/伪代码指导使用 CNN 对非图像数据进行分类,无论是在 Tensorflow 还是 Keras 中。在这方面的任何帮助将不胜感激。干杯!

3个回答

您可以对任何数据使用 CNN,但建议仅对具有空间特征的数据使用 CNN(它可能仍适用于不具有空间特征的数据,请参阅下面 DuttaA 的评论)。

例如,在图像中,某个区域的像素之间的连接会为您提供另一个特征(例如边缘),而不是来自一个像素的特征(例如颜色)。所以,只要你能塑造你的数据,并且你的数据有空间特征,你就可以使用 CNN。

对于文本分类,字符(形成单词)之间存在连接,因此您可以使用 CNN 进行字符级别的文本分类

对于语音识别,一帧的频率与前一帧和下一帧的频率之间也存在联系,因此您也可以使用CNN 进行语音识别

如果您的数据具有空间特征,只需将其重塑为一维数组(例如在文本中)或二维数组(例如在音频中)。Tensorflow 的函数conv1dconv2d是通用函数,可用于任何数据。它将数据视为浮点数组,而不是图像/音频/文本。

但是如果你的数据没有空间特征,比如你的特征是price, salary,status_marriage等等。我认为你不需要 CNN,使用 CNN 也无济于事。

当您的问题是平移不变(或协变)时,卷积模型是一种选择方法。在图像分类中,如果图像的任何部分都存在牛,则应将图像分类为“牛”类。在文本分类中,短语和句子的不同顺序导致相关的含义。在语音识别中,在不同的地方使用相同的音节来构建不同的单词。

在您的问题中,您应该检查 1791 列的某些子序列是否产生相同的含义,尽管它们位于样本中的不同位置。如果答案是肯定的,那么卷积层可能会提高性能。

DeepInsight 方法已用于将表格数据转换为相应的图像,然后由 CNN 处理。这是链接https://alok-ai-lab.github.io/DeepInsight/