【发布时间】:2022-12-18 12:31:12
【问题描述】:
我想计算两个 numpy 向量之间的互信息:
>>>from sklearn.metrics.cluster import mutual_info_score
>>>import numpy as np
>>>a, b = np.random.rand(10), np.random.rand(10)
>>>mutual_info_score(a, b)
1.6094379124341005
>>>a, b = np.random.rand(10), np.random.rand(10)
>>>mutual_info_score(a, b)
1.6094379124341005
如您所见,虽然我更新了a 和b,但它返回了相同的值。然后我尝试了另一个例子:
>>>a = np.array([167.52523295, 73.2904335 , 98.61953303, 152.17297007,
211.01341451, 327.72296346, 356.60500081, 43.9371432 ,
119.09474284, 125.20180842])
>>>b = np.array([280.9287028 , 131.76304983, 176.0277832 , 188.56630096,
229.09811401, 228.47200012, 617.67000122, 52.7211511 ,
125.95361582, 148.55247447])
>>>mutual_info_score(a, b)
2.302585092994046
>>>a = np.array([ 6.71381009, 1.43607653, 3.78729242, -4.75706796, -3.81281173,
3.23440092, 10.84495625, -0.19646145, 4.09724507, -0.13858104])
>>>b = np.array([ 4.25330873, 3.02197642, -3.2833848 , 0.41855662, -3.74693531,
0.7674982 , 11.36459148, 0.64636462, 0.51817262, 1.65318943])
>>>mutual_info_score(a, b)
2.302585092994046
为什么?看看这些数字之间的差异。为什么它返回相同的值?更重要的是,如何计算两个向量之间的 MI?
【问题讨论】: