如何计算聚类的基尼系数

2024-04-27 07:38:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有5000个观察结果被分为10组。每个星团有1000个真实观测值。真实生活中的观测值是1000个。但是,在我运行了我的聚类算法之后,它看起来像这样:

Cluster #, true members, clustered members
0,                 1000,               435
1,                 1000,               234
2,                 1000,               167
3,                 1000,               654
4,                 1000,                 0

换句话说,集群0应该有1000个成员,但是其中只有435个被我的算法正确地添加到该集群中。5000和群中的差被放在错误的簇中。在

我想计算基尼系数,发现了以下代码:

^{pr2}$

在我试过的测试中似乎效果不错。然而,我发现的数据集都不像我的。在

所以我的问题是如何计算基尼系数?在

如果我执行以下操作,我会得到每个簇的基尼系数:

gini_ind(435,1000) -> 0.49155
gini_ind(234,1000) -> 0.3584
gini_ind(167,1000) -> 0.2782
gini_ind(654,1000) -> 0.4525
gini_ind(0,1000) -> 0

这是每个星系团的正确基尼系数吗?在

得到平均基尼系数,这就是平均值: (0.49155+0.3584+0.2782+0.4525+0)/5?在


Tags: 代码算法true错误集群成员聚类cluster
1条回答
网友
1楼 · 发布于 2024-04-27 07:38:05

假设我们有3个类和80个对象。19个对象属于类别1,21个对象属于类别2,40个对象属于类别3(表示为(19,21,40))。在

基尼指数为:1-[(19/80)^2+(21/80)^2+(40/80)^2]=0.6247,即costbefore=基尼(19,21,40)=0.6247

为了决定在哪里拆分,我们测试所有可能的拆分。例如,在2.0623处拆分,这将导致拆分(16,9,0)和(3,12,40):

测试x1<;2.0623后:

costL =Gini(16,9,0) = 0.4608
costR =Gini(3,12,40) = 0.4205

然后,我们根据经验分支概率对分支杂质进行加权:

^{pr2}$

对于每个可能的拆分,我们都会这样做,例如x1<;1:

costx1<1 = FractionL Gini(8,4,0) + FractionR Gini(11,17,40) = 12/80 * 0.4444 + 68/80 * 0.5653 = 0.5417

之后,我们选择了成本最低的拆分方案。这是分割x1<;2.0623,成本为0.4331。在

你可以点击下面的链接。。。。 http://dni-institute.in/blogs/gini-index-work-out-example/http://stats.stackexchange.com/questions/95839/gini-decrease-and-gini-impurity-of-children-nodes

相关问题 更多 >