我有一个由21个变量和75个数据点/行组成的数据集。我试图调查每一对变量之间的相互信息,我在统计方面还是新手。我在mutual_info_score中使用了sklearn.metrics函数,这将返回一个大于0的数字。如何知道mutual_info_score值的哪些值反映依赖关系。例如,您如何知道是只探索1及以上的值,还是2和更高的值等等。
发布于 2017-07-18 14:35:13
相互信息是一种衡量标准。
import numpy as np
from sklearn.metrics import mutual_info_score
np.random.seed(42)
label_true = np.random.randint(0, 5, 75)
label_predict = np.random.randint(0, 5, 75)
print(mutual_info_score(label_true, label_predict))即使有两个独立的随机标签,你也会看到非零的相互信息,
0.117333093974你想要探讨的是使用一个零假设检验--两个变量是否是相依的。(零假设==独立性)
你可以使用一个独立测试,例如chi2在科学学习中,
from sklearn.feature_selection import chi2
statsitic, p_val = chi2(label_true[:, None], label_predict[:, None])
if p_val < 0.05:
print('dependent')
else:
print('independent')对于所有的变量,
import itertools
data = np.random.randint(0, 5, (75, 21))
p_value_matrix = np.zeros((21, 21))
for i, j in itertools.combinations(range(21), 2):
_, p_val = chi2(data[:, i][:, None], data[:, j][:, None])
p_value_matrix[i, j] = p_value_matrix[j, i] = p_val
if p_val < 0.05:
print('possibly dependent: {} -- {}'.format(i, j))注意,0.05是一个任意(但广泛使用)的阈值,用于拒绝的空假设。如果得到的p值大于阈值,则不能拒绝的空假设.
https://stackoverflow.com/questions/45169345
复制相似问题