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

时间:2017-06-21 07:47:11

标签: python probability bayesian

我需要计算和存储一个条件概率表(用于贝叶斯网络),它是一个矩阵的提取,其输入为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]):

T_Id    Cell_Id Probability
T001        1       0.2
T001        2       0.2
T001        3       0.2
T001        4       0.2
T001        5       0.2

(对于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& S组合的可扩展性来实现这一目标。 N记在心​​里?

P.S。 :使用下面的代码可以实现类似的功能,但是它使用RANDOM值作为输入,可以修改下面的代码以实现如上所示的结果吗?

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]]

0 个答案:

没有答案