如何输入Scikit学习具有可变长度输入数据的MLP分类器。

时间:2018-05-07 14:32:19

标签: python machine-learning scikit-learn neural-network

我想用以下数据集运行简单的MLP分类器(Scikit learn)。

数据集由100个文件组成,包含声音信号。每个文件有两列(两个信号)和行(信号长度)。行(信号)的长度因文件的不同而在70到80之间变化。所以文件的尺寸是70 x 2到80 x 2.每个文件代表一个完整的记录。

enter image description here

我面临的问题是如何训练具有可变长度数据的简单MLP,训练和测试集分别包含75和25个文件。

一种解决方案是连接所有文件并制作一个文件,即7500 x 2并训练MLP。但在这种情况下,信号的重要信息不再有用。

1 个答案:

答案 0 :(得分:1)

有效性的三种方法。强烈建议使用方法1。

第一种方法 - LSTM / GRU

您不使用简单 MLP。您正在处理的数据类型是顺序数据。为此目的创建了循环网络(LSTM / GRU)。它们能够处理可变长度序列。

第二种方法 - 嵌入

找到一个可以将数据转换为固定长度序列的函数,称为嵌入。网络生成时间序列嵌入的示例是TimeNet。然而,这基本上使我们回到第一种方法。

第三种方法 - 填充

如果您可以找到序列长度的合理上限,则可以将较短的序列填充到最长序列的长度(在序列的开头/结尾处填充0,插入/预测其余值),或者将较长的系列切成最短的系列。显然,你会分别引入噪音或丢失信息。