如何分配属于不同人群的不确定性?

2024-05-13 20:24:09 发布

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

我有三个Numpy数组

第一个是所有值的总和:

 population_total = np.array([[0, 3, 5, 7], 
                              [6, 2, 4, 2],
                              [9, 7, 2, 0], 
                              [0, 2, 1, 0]]

第二个和第三个是已知的总体参数。它们不等于总人口数,因为并非所有人口都是已知的

 population_one = np.array([[0, 2, 3, 5], 
                            [1, 2, 3, 2],
                            [0, 1, 2, 0], 
                            [0, 0, 0, 0]]

 population_two = np.array([[0, 1, 0, 0], 
                            [4, 0, 1, 0],
                            [7, 4, 0, 0], 
                            [0, 1, 1, 0]]

我想给每个点分配一个属于第一类或第二类的概率,这样我就可以对不确定点进行分类

我想对每一个点这样说:这一点属于人口1的概率是70%,属于人口2的概率是20%


Tags: numpy参数np分类数组概率arrayone
1条回答
网友
1楼 · 发布于 2024-05-13 20:24:09

属于第一个总体的机会只是population_one矩阵在population_total上的元素除法。也许有必要首先明确地将总和为0的总人口转换为NaN,因为在这种情况下,概率的概念并不存在:

pop_tot = population_total.astype(float)
pop_tot[pop_tot == 0] = np.nan

则1、2和3的概率分别为:

>>> population_one/pop_tot
array([[       nan, 0.66666667, 0.6       , 0.71428571],
       [0.16666667, 1.        , 0.75      , 1.        ],
       [0.        , 0.14285714, 1.        ,        nan],
       [       nan, 0.        , 0.        ,        nan]])
>>> population_two/pop_tot
array([[       nan, 0.33333333, 0.        , 0.        ],
       [0.66666667, 0.        , 0.25      , 0.        ],
       [0.77777778, 0.57142857, 0.        ,        nan],
       [       nan, 0.5       , 1.        ,        nan]])
>>> (population_total-population_one-population_two)/pop_tot
array([[       nan, 0.        , 0.4       , 0.28571429],
       [0.16666667, 0.        , 0.        , 0.        ],
       [0.22222222, 0.28571429, 0.        ,        nan],
       [       nan, 0.5       , 0.        ,        nan]])

nan的情况下,概率没有多大意义。如果一个总人口有0个项目,那么你怎么能说“它是…%可能来自i组”

相关问题 更多 >