python - 如何输入具有可变长度输入数据的 Scikit learn MLP 分类器。

标签 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。

第一种方法 - LSTM/GRU

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

第二种方法 - 嵌入

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

第三种方法 - 填充

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

关于python - 如何输入具有可变长度输入数据的 Scikit learn MLP 分类器。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50216691/

相关文章:

python - 如何在 tensorflow 中交替训练操作?

python - SK学习: TypeError: __init__() got an unexpected keyword argument n_splits

python - 使用 GridSearchCV scikit-learn 进行管道中的 KMeans

python - 访问包含列表的 Pandas DataFrame 列的每个第一个元素

python - 使用 Python 获得所需的功能

python - 根据唯一/重复索引值将 Pandas DataFrame 重新组织为更多列

scikit-learn - 指定质心的 kmeans 聚类变换方法

python - C++曲线拟合以找到立方体的系数?

python - Scikit-learn,获取每个类的准确率分数

machine-learning - 卷积网络的准确率突然下降