猿问

有没有办法找到矩阵中不同值的概率

我以为会有一个库可以帮助我完成这项任务,而不是编写多行代码。我尝试从与我的问题相关的书籍中找到一些解决方案,但找不到任何解决方案。


我最近读过的一本关于概率的书:


José Unpingco 用于概率、统计和机器学习的 Python


任务是我有一个像下面这样的矩阵


0    1

213 vha

342 gha

523 xha

121 gha

812 gha

612 vha

123 gha

我希望程序来计算,比如移动,步骤vha到gha第二排。从gha到xha第三排。如果重复任何步骤,它将添加到上一步。例如vha,gha在第一行和第二行中的to在矩阵的末尾重复。


所需的输出将是similar steps added together/ total number of rows-1。在第一种情况下vha,gha概率 = 2/7-1


期望输出


vha to gha prob = 0.3

gha to xha prob = 0.16

xha to gha prob = 0.16

gha to gha prob = 0.16

gha to vha prob = 0.16


Total probs = 1


九州编程
浏览 149回答 1
1回答

饮歌长啸

您可以使用 aCounter来计算转换发生的次数,然后计算每个转换的概率。您可以使用zip组合列表的两个切片m- 一个删除了最后一个元素,另一个删除了第一个元素 - 以获得相邻元素的元组。zip(m[:-1], m[1:])这样做。然后你可以计算类似的元组 - 代表转换 - 与Counter:from collections import Counterm = [[213, 'vha'],     [342, 'gha'],     [523, 'xha'],     [121, 'gha'],     [812, 'gha'],     [612, 'vha'],     [123, 'gha']]c = Counter([(x[1], y[1]) for x, y in zip(m[:-1], m[1:])])probs = [(e, v / (len(m) - 1)) for e, v in c.items()]for p in probs:    print(p)输出(('vha', 'gha'), 0.3333333333333333)                                                                                                                (('gha', 'xha'), 0.16666666666666666)                                                                                                               (('xha', 'gha'), 0.16666666666666666)                                                                                                               (('gha', 'gha'), 0.16666666666666666)                                                                                                               (('gha', 'vha'), 0.16666666666666666)
随时随地看视频慕课网APP

相关分类

Python
我要回答