【问题标题】:How to find entropy of Continuous variable in Python?如何在 Python 中找到连续变量的熵?
【发布时间】:2017-08-09 13:22:58
【问题描述】:

我有一个变量,其值类似于 [23.13, 56.1, 12.6, 1.23, 5.56]。我想找到这个变量的熵。我在这里得到了一个代码How to compute the shannon entropy and mutual information of N variables,但是对于连续变量,应该首选哪个 bin 大小?

【问题讨论】:

    标签: python entropy


    【解决方案1】:

    没有“最佳”的 bin 大小(除非您的值属于明显不同的集群)。

    对于连续分布,最好使用 Kozachenko-Leonenko k-nearest neighbor estimator for entropy (K & L 1987) 和相应的 Kraskov, ..., Grassberger (2004) 估计互信息。

    Kozachenko-Leonenko 估计器的基本思想是查看相邻数据点之间的平均距离(某个函数)。直觉是,如果该距离很大,则数据的分散性很大,因此熵也很大。在实践中,人们倾向于采用 k-最近邻距离,而不是采用最近邻距离,这往往会使估计更加稳健。

    我的 github 上都有这两个实现:https://github.com/paulbrodersen/entropy_estimators

    【讨论】:

    • 非常感谢您分享您的 github 项目。我要使用你的实现。我在这里有一个问题,有什么方法可以理解我的矩阵中的哪些元素导致熵得分不好?如果您能就此与我分享您的想法,我将不胜感激。
    • @sariii 如果您在使用我的熵估计代码时遇到问题,您能否在我的 github 上提出一个问题,并提供一个能够重现您的问题的最小工作示例(可能包括一些示例数据)? SO 评论部分不是解决问题的最佳位置。
    【解决方案2】:

    我们可以创建变量的直方图并使用 bin 来创建有限的类别集。这将作为连续变量的离散版本。或者计算第 n 个百分位数并将它们用作类别。

    【讨论】:

      猜你喜欢
      • 2014-04-23
      • 1970-01-01
      • 2022-11-07
      • 2018-11-11
      • 2014-01-23
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 2021-01-08
      相关资源
      最近更新 更多