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

C# 如何计算聚类熵?工作示例或软件代码,c#,math,cluster-analysis,hierarchical-clustering,entropy,C#,Math,Cluster Analysis,Hierarchical Clustering,Entropy,我想计算这个示例方案的熵 有人能用真实的价值观一步一步地解释吗?我知道有无数的公式,但我真的不善于理解公式:) 例如,在给定的图像中,如何计算纯度得到了清楚和充分的解释 问题很清楚。我需要一个例子来计算这个聚类方案的熵。它可以一步一步的解释。可以是C#代码或Phyton代码来计算此类方案 这里是熵公式 我将用C编写这个代码# 非常感谢你的帮助 我需要这里给出的答案:计算很简单 概率为NumberOfMatches/NumberOfCandidates。 您可以应用以2为基数的对数并求和。

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

有人能用真实的价值观一步一步地解释吗?我知道有无数的公式,但我真的不善于理解公式:)

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

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

这里是熵公式

我将用C编写这个代码#

非常感谢你的帮助


我需要这里给出的答案:

计算很简单

概率为
NumberOfMatches/NumberOfCandidates
。 您可以应用以2为基数的对数并求和。 通常,您将根据簇的相对大小对簇进行加权

唯一需要注意的是当p=0时。那么对数是未定义的。但是我们可以安全地使用
p log p=0
如果
p=0
,因为
p
在对数之外


因为
log1=0
最小熵为0。完美的结果必须得0分,否则你就有错误。

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

聚类的总熵为:

其中:

是群集的集合

H(w)是一个单团簇熵

N_w是群集中的点数w

N是总点数

簇w的熵

其中: c是所有分类的集合c中的一个分类

p(w_c)是一个数据点在w集群中被分类为c的概率

为了使其可用,我们可以将概率替换为该概率的MLE(),从而得出:

其中:

|w|u c是分类为c的聚类w

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


我希望这有帮助,请随时验证并提供反馈。

好的,那么对于第一个集群,p(wk)是=4/5,对吗?N群集计数正确吗?所以我计算第一个集群,比如这个-((4/5*log(4/5))/(4/3*log(4/3)))对吗?然后我对每个簇进行这样的计算,求和所有?你必须查看每个簇中的每个标签,而不仅仅是多数标签。第一个簇中有4/5和1/5。如果可能的话,你能写第一个簇计算吗。在每次聚类计算之后,我总结一下,好吗?你能像这里一样更新你的答案吗?我投票将这个问题作为离题题来结束,因为这似乎是一个统计问题,非常需要伟大和明确的答案。我希望其他业余爱好者向你学习如何回答:)