繁体   English   中英

kmeans群集编号与k值不匹配

[英]kmeans cluster number does not match with k value

当我仅定义3个群集时,基于本文的代码将按预期工作。 但是,当我更改群集数时,我得到的群集数却不相等。

from matplotlib import image as img
from matplotlib import pyplot as plt
import pandas as pd

image = img.imread("my_logo1.jpg")
image.shape

r = []
g = []
b = []

for line in image:
    for pixel in line:
        temp_r, temp_g, temp_b = pixel
        r.append(temp_r / 255)
        g.append(temp_g / 255)
        b.append(temp_b / 255)

df = pd.DataFrame({"red": r, "green": g, "blue": b})

from scipy.cluster.vq import kmeans
cluster_centers, distortion = kmeans(df[["red", "green", "blue"]], 7)

print(cluster_centers)

返回的集群中心只有3个,预期为7个

我期望返回的颜色数与kmeans函数中定义的颜色相同。

阅读kmeans()函数的源代码后,您可以注意到_kmeans()支持函数的使用,您可以在其中找到:

code_book = code_book[has_members]

has_members是一个布尔数组,指示_vq.update_cluster_means()导致哪些集群具有成员。

简而言之,当您指定簇的数量k ,该算法将返回一组失真最小的质心( 最多 k )。 仅在K均值的更新步骤中删除空簇。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM