c# - 如何计算聚类熵?工作示例或软件代码

标签 c# math cluster-analysis hierarchical-clustering entropy

<分区>

我想计算这个示例方案的熵

http://nlp.stanford.edu/IR-book/html/htmledition/evaluation-of-clustering-1.html

enter image description here

任何人都可以用实际值逐步解释吗?我知道有无数的公式,但我真的不擅长理解公式:)

例如在给定的图像中,如何计算纯度得到了清楚而充分的解释

问题很明确。我需要一个例子来计算这个聚类方案的熵。可以一步步解释。计算此类方案可以是C#代码或Phyton代码

这里是熵公式

我会用 C# 编写代码

非常感谢您的帮助

enter image description here

我需要这里给出的答案:https://stats.stackexchange.com/questions/95731/how-to-calculate-purity

最佳答案

我承认 NLP 书的这一部分有点困惑,因为他们没有完整地计算集群熵的外部度量,而是专注于单个集群熵计算的计算。相反,我将尝试使用一组更直观的变量,并包括用于计算总熵的外部度量的完整方法。

聚类的总熵为:

formula

哪里:

formula是簇的集合

H(w)是单簇熵

N_w是簇w

中的点数

N 是总点数。

簇w的熵

formula

哪里: c是所有分类的集合C中的一个分类

P(w_c) 是数据点在簇 w 中被分类为 c 的概率。

为了使其可用,我们可以用该概率的 MLE (maximum likelihood estimate) 代替概率以得出:

formula

哪里:

|w_c| 是簇 w

中分类为 c 的点数

n_w 是集群 w

中的点数

因此,在给定的示例中,您有 3 个聚类 (w_1、w_2、w_3),我们将针对 3 个分类(x、圆、菱形)中的每一个分别计算每个聚类的熵。

H(w_1) = (5/6)log_2(5/6) + (1/6)log_2(1/6) + (0/6)log_2(0/6) = -.650

H(w_2) = (1/6)log_2(1/6) + (4/6)log_2(4/6) + (1/6)log_2(1/6) = -1.252

H(w_3) = (2/5)log_2(2/5) + (0/5)log_2(0/5) + (3/5)log_2(3/5) = -.971

因此,要找到一组簇的总熵,您需要将熵的总和乘以每个簇的相对权重。

H(欧米茄) = (-.650 * 6/17) + (-1.252 * 6/17) + (-.971 * 5/17)

H(欧米茄) = -.956

希望对您有所帮助,请随时验证并提供反馈。

关于c# - 如何计算聚类熵?工作示例或软件代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35709562/

相关文章:

c# - 从加密或不可读或二进制格式保存和加载字典?

c# - 一圈还是两圈? (如何阅读 IL)

python - 使用 Python 进行轨迹聚类/聚合

python - Scipy、tf-idf 和余弦相似度

c# - Action<T> 与标准返回

c# - 在asp.net中显示数据库中的Null

javascript - 在 Javascript 中使用带有计时器的随机数生成器每次都会给出相同的数字

php - PHP 中是否可以不使用 eval 来计算变量表达式?

c# - 如何通过具有容差因子的数值对对象进行 GroupBy?

Python - 带阈值的多维聚类