python - 使用互信息进行特征图之间的特征选择(python)

标签 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。

最佳答案

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

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

关于python - 使用互信息进行特征图之间的特征选择(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56750855/

相关文章:

computer-science - 一串英文文本的熵如何表示低质量?

python - 情感分析管道,使用特征选择时获取正确特征名称的问题

Scikit-Learn 线性回归如何获得系数各自的特征?

python - SQLAlchemy 自定义属性

python - 连续数据流 Arduino 到 Python

python - SciKit-Learn 标签编码器导致错误 'argument must be a string or number'

python zlib - 压缩字符串的大小与香农熵

algorithm - 可压缩性示例

Python - 结合多处理和异步

python - &nbsp 文本未被 lxml 处理