我试图用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}$
目前没有回答
相关问题 更多 >
编程相关推荐