首页 > 解决方案 > 如何输入具有可变输入数据长度的 Scikit 学习 MLP 分类器。

问题描述

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

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

在此处输入图像描述

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

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

标签: pythonmachine-learningscikit-learnneural-network

解决方案


三种方法按有用性排序。强烈推荐方法 1。

第一种方法 - LSTM/GRU

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

第二种方法 - 嵌入

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

第三种方法 - 填充

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


推荐阅读