Python中动态值的条件概率矩阵

2024-09-27 00:17:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要计算并存储一个条件概率表(对于贝叶斯网络),它是从一个矩阵中提取出来的,它的输入是N(每个节点的唯一阈值数)和T(一个节点可以拥有的父节点数)。T的值通常在1到10之间,N的范围通常是3到7。在

例如

If N = 5, and T = 1 the values will be 5^1=5
if N = 5, and T = 2 the values will be 5^2 = 25
if N = 5, and T = 3 the values will be 5^3 = 125
(and so on).

N的值也可以改变,但我保持示例简单。在

所需输出为: (对于T=1&N=5,输出应为5^1=5,即1*5矩阵 [0.2,0.2,0.2,0.2,0.2]):

^{pr2}$

(对于T=2&N=5,输出应为5^2=25,即5*5矩阵):

T_Id    Cell_Id Probability
T002        1   0.732292842
T002        2   0.232364214
T002        3   0.033319518
T002        4   0.001977041
T002        5   4.63852E-05
T002        6   0.188558672
T002        7   0.59424024
T002        8   0.188558672
T002        9   0.027038088
T002        10  0.001604327
T002        11  0.026367464
T002        12  0.183881865
T002        13  0.579501342
T002        14  0.183881865
T002        15  0.026367464
T002        16  0.001604327
T002        17  0.027038088
T002        18  0.188558672
T002        19  0.59424024
T002        20  0.188558672
T002        21  4.63852E-05
T002        22  0.001977041
T002        23  0.033319518
T002        24  0.232364214
T002        25  0.732292842

同样,对于T=3&N=5,输出应该是5^3=125,依此类推。。。。在

如何在Python中实现这一点,同时考虑T&N组合的可伸缩性?在

注:使用下面的代码可以实现类似的功能,但它使用随机值作为输入,是否可以修改下面的代码以获得如上所示的结果?在

import random

precision = 1000

def f(n) :
    matrix = []
    for l in range(n) :
        lineLst = []
        sum = 0
        crtPrec = precision
        for i in range(n-1) :
            val = random.randrange(crtPrec)
            sum += val
            lineLst.append(float(val)/precision)
            crtPrec -= val
        lineLst.append(float(precision - sum)/precision)
        matrix.append(lineLst)
    return matrix

matrix = f(5)
print matrix

以上输出示例:

[[0.64, 0.229, 0.043, 0.034, 0.054], 
[0.847, 0.04, 0.068, 0.04, 0.005], 
[0.758, 0.148, 0.006, 0.027, 0.061], 
[0.159, 0.477, 0.329, 0.023, 0.012], 
[0.817, 0.146, 0.026, 0.01, 0.001]]

预期输出(如果N=5,即f(5)):

[[0.7322, 0.2323, 0.0333, 0.0019, 4.63852E-05], 
    [0.1885, 0.5942, 0.1885, 0.0270, 0.0016], 
    [0.0263, 0.1838, 0.5795, 0.1838, 0.0263], 
    [0.0016, 0.0270, 0.1885, 0.5942, 0.1885], 
    [4.63852E-05, 0.0019, 0.0333, 0.2323, 0.7322]]

Tags: andthe节点矩阵valbewillmatrix

热门问题