为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

九州编程 2021-08-14 12:52:07
我以为会有一个库可以帮助我完成这项任务,而不是编写多行代码。我尝试从与我的问题相关的书籍中找到一些解决方案,但找不到任何解决方案。我最近读过的一本关于概率的书:José Unpingco 用于概率、统计和机器学习的 Python任务是我有一个像下面这样的矩阵0    1213 vha342 gha523 xha121 gha812 gha612 vha123 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.3gha to xha prob = 0.16xha to gha prob = 0.16gha to gha prob = 0.16gha to vha prob = 0.16Total probs = 1
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

您可以使用 aCounter来计算转换发生的次数,然后计算每个转换的概率。


您可以使用zip组合列表的两个切片m- 一个删除了最后一个元素,另一个删除了第一个元素 - 以获得相邻元素的元组。zip(m[:-1], m[1:])这样做。然后你可以计算类似的元组 - 代表转换 - 与Counter:


from collections import Counter


m = [[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)


查看完整回答
反对 回复 2021-08-14
  • 1 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号