【发布时间】:2018-12-06 05:20:06
【问题描述】:
我正在寻找一种有助于构建和分析不同长度的序列数据的解决方案。我需要为机器学习分类器 (LSTM) 准备数据。我的输入示例如下所示:
输入
ID 1 2 3 4
0 A B C D
1 A C D
2 A D B
其中列是序列步骤数和A,B,C,D,E 某些操作。
作为可能的序列,我们期望:
A,B
B,C
C,D
A,B,C
B,C,D
A,C
A,C,D
C,D
A,D
A,D,B
D,B
首先,脚本应该打印某些序列出现的频率,以及总共存在多少个序列
(C,D) 2
(A,B,C,D) 1
(A,B) 1
...
但更重要的是,为了以后的使用,我需要one-hot encode所有可能的序列,这样最终的结果看起来像:
期望的输出:
ID (A,B) (B,C) (C,D) (A,B,C) (B,C,D) (A,C) (A,C,D) (C,D) (A,D) (A,D,B) (D,B)
0 1 1 1 1 1 0 0 1 0 0 0
1 0 0 1 0 0 1 1 1 0 0 0
2 0 0 0 0 0 0 0 0 1 1 1
(A,B)(B,C) 等也可以表示为编码变量。这样,我认为,数据将以考虑序列和子序列进行分类的形式表示。
对于第一部分,我阅读了 PrefixSpan,但找不到可复制的代码示例。由于我正在使用 scikit-learn 和 keras,欢迎使用相关解决方案!
试过了:
import itertools
import pandas as pd
d = {'1': ['A', 'A', 'A'], '2': ['B', 'C', 'D'], '3': ['C', 'D', 'B'], '4': ['D', '', '']}
df = pd.DataFrame(data=d)
df
list(itertools.combinations(df))
【问题讨论】:
-
显示你迄今为止尝试过的内容。
-
@Christopher,这是一个概率问题,您需要找出包含 2,3 和 4 个字母的 ABCDE 的可能结果数
-
由于没有附加代码,我只提供一个建议 - 使用
itertoolspackage 进行排列或组合,只需使用字典作为出现计数器。 -
@Austin 我在示例中插入了一些内容,但是:1)我担心我自己的任何方法都可能成为可能不是最佳解决方案的起点 2)我不知道从哪里开始以及是否有合适的软件包?
-
能否请您添加您对术语
sequence的确切定义?我看到它在这里被用作combination的同义词,但我有印象,只允许直接邻居,对吧?否则例如(A,C) 也将是第一行中的一个序列(索引 0)
标签: python keras sequence categorical-data