gpt4 book ai didi

apache-spark - KMeans 的不平衡因子?

转载 作者:行者123 更新时间:2023-11-30 08:36:25 24 4
gpt4 key购买 nike

编辑:这个问题的答案在:Sum in Spark gone bad中有大量讨论。

<小时/>

Compute Cost of Kmeans ,我们看到了如何计算 KMeans 模型的成本。我想知道我们是否能够计算不平衡因子?

如果Spark没有提供这样的功能,有什么简单的方法可以实现吗?

<小时/>

我无法找到不平衡因子的引用,但它应该类似于 Yael 的 unbalanced_factor (我的评论):

// @hist: the number of points assigned to a cluster
// @n: the number of clusters
double ivec_unbalanced_factor(const int *hist, long n) {
int vw;
double tot = 0, uf = 0;

for (vw = 0 ; vw < n ; vw++) {
tot += hist[vw];
uf += hist[vw] * (double) hist[vw];
}

uf = uf * n / (tot * tot);

return uf;

}

我发现了here .

所以想法是tot (总计)将等于分配给簇的点数(即等于我们数据集的大小),而 uf (对于不平衡因子)保存分配给簇的点数的平方。

最后他使用了uf = uf * n / (tot * tot);来计算它。

最佳答案

python中它可能是这样的:

# I suppose you are passing an RDD of tuples, where the key is the cluster and the value is a vector with the features.
def unbalancedFactor(rdd):
pdd = rdd.map(lambda x: (x[0], 1)).reduceByKey(lambda a, b: a + b) # you can obtain the number of points per cluster
n = pdd.count()
total = pdd.map(lambda x: x[1]).sum()
uf = pdd.map(lambda x: x[1] * float(x[1])).sum()

return uf * n / (total * total)

关于apache-spark - KMeans 的不平衡因子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39235576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com