使用共同信息在特征图之间进行特征选择(python)

时间:2019-06-25 09:28:40

标签: python feature-selection information-theory

我想从神经网络的卷积层中进行512个特征图(每个3X3)之间的特征选择。我想计算每两个向量之间的512X512互信息矩阵,并选择具有最低互信息值(不包括全零的行/列)的256个特征图。

为简单起见,假设我有以下张量(不需要pytorch,可以只使用numpy):

t2 = torch.Tensor([0.25, 2.1.5. 3.2, 3.1, 2.5])
t3 = torch.Tensor([0.14, 0.9, 6.2 ,3.1  ,1.7])
v2 = t2.data.numpy()
v3 = t3.data.numpy()

我使用发现的代码来计算两个向量之间的互信息(我只是将xrange更改为range): Python's implementation of Mutual Information

mi_compmi = computeMI(v2,v3)
print('Result: ', mi_compmi)

事实是,对于我在v2和v3中分配的所有向量,我总是得到相同的px,py,pxy值和2.32的相同结果,这是为什么呢? 即使在计算向量和其自身之间的MI时,我也应该知道,而它应该为0。

1 个答案:

答案 0 :(得分:0)

您应该使用sklearn的{​​{1}},请参阅here。似乎工作正常,应该可以解决您的问题。

顺便说一句。您应该尝试使用库中编写的经过良好测试的功能,而不是依赖于随机实现,除非您被迫这样做。