用BIC的正确计算来确定K的平均值

2024-04-20 04:45:18 发布

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

我试图用python计算BIC。在python中,没有用于计算BIC的内置库。我引用了以下链接来计算方差和BIC进一步:https://stats.stackexchange.com/questions/90769/using-bic-to-estimate-the-number-of-k-in-kmeans?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa 最高投票结果中给出的方差公式对我的代码设计不起作用,因为中心是二维数组,在我的例子中是一维数组。所以我转换了链接中给出的方差公式来计算,但我发现这不是正确的方法。 这是我的Python代码:-在

def compute_variance_grayscale(self, clusters, centroids, gImage, k):
    # compute variance
    variance = 0

    for i in range(len(clusters)): #iterate over the available clusters
        cluster = clusters[i]
        sum = 0;
        centroid = centroids[i]
        for j in cluster: #for each data point in cluster j compute the sum
            sum += (gImage.getImageValueAt(j[0], j[1]) - centroid) ** 2

        variance += sum / (len(cluster) - k); #add the sum to the given variance

    return variance

        def compute_variance_rgb(self, clusters, centroids, cImage, k):
    # compute variance
    variance = 0
    for i in range(len(clusters)):
        cluster = clusters[i]
        sum = 0;
        centroid = centroids[i]
        for j in cluster:
            b,g,r = cImage.getImageValueAt(j[0], j[1])
            b_e = (b - centroid[0]) ** 2
            g_e = (g - centroid[1]) ** 2
            r_e = (r - centroid[2]) ** 2

            sum += (b_e + g_e + r_e)

        variance += sum / (len(cluster) - k);

    return variance

谁能指出计算方差的正确方法吗? 另外,如果有人能向我解释BIC的计算和上面投票最高的答案中提到的常数项的使用,那就太好了链接:-在

^{pr2}$

Tags: theinforlen链接clusterssumcluster