【发布时间】:2021-12-26 22:43:49
【问题描述】:
我有这样的数据
sno Sequence conversion
1 A-B-C-D-E-B-A 1
2 A-B-C-D 0
3 A-B-C-D 1
4 D-E-H-I-A 0
5 Z 0
6 A-Z 0
7 F-E-T-H-S-A-T-J-F-E-D-E-S-X-G-N-N-K-L-D 1
8 H-S-A-T-J-F-E 0
数据包含可以随机开始和结束的序列。在序列的末尾,有一个表示转换的标志。如果序列转换,则为 '1',如果序列不转换,则为 0。我想通过查找每个序列部分或这些单独子序列的组合的转换条件概率来了解序列中的各个部分如何影响转换。 例如,如果在序列中遇到A,则整个序列的转换概率上升2%。 如果在组合中遇到 A-B-C,那么转换的概率会上升 13% 如果遇到Z-A,转化的概率会上升8%。
如何制作这样的表格-
Sno Sub-sequence probabilty_of_conversion
1 A 2%
2 B 1%
3 C 4%
......
4 A-B-C 13%
5. Z-A 8%
【问题讨论】:
-
你如何计算这些概率?我的意思是你怎么来的 "A" -> 2 ?你计算每个单词的出现次数?并除以所有单词中的字符数? 2长序列呢?你数对数了吗?所以呢?=
-
在上面的示例中,每当遇到 A-B-C-D 时,转换的概率是 50%,因为在遇到此数据的两次中,只有一次转换。
-
你可能想看看itertools module,特别是关于“组合迭代器”的部分,因为如果“ABC”转换你想增加“A”、“AB”的概率、“BC”和“ABC”,如果我正确理解您的问题的话。
-
没有关于这个问题的
bayesian(删除标签)。问题请求代码来计算条件频率,即statistics。 -
说说
A,这个在数据sno[1, 2, 3, 4, 6, 7, 8]上找到,而且只在[1, 3, 7]上转换过所以A的转化概率为 3/7 或 42.86%。这是计算子概率的正确方法吗?
标签: python pandas dataframe numpy statistics