Python kmeans群集编号与k值不匹配

Python kmeans群集编号与k值不匹配,python,python-3.x,machine-learning,scipy,k-means,Python,Python 3.x,Machine Learning,Scipy,K Means,当我只定义了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

当我只定义了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函数中定义的颜色数相同。

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

code_book = code_book[has_members]
是一个布尔数组,指示哪些簇具有成员,由


简言之,当您指定簇数
k
时,算法返回一组失真最低的质心(最多
k
)。在K-means的更新步骤中,只需删除空集群。

您的python版本是什么?#python 3.7.1#scipy 1.2.1当我选择彩色图像时,它会按预期工作。但是,当我选择一个只有1或2种颜色的简单图像(例如google徽标)时,kmeans无法创建超过3/4的集群。听起来合乎逻辑,但需要确认。