代码将按预期工作。但是,当我更改群集数时,我得到的群集数却不相等。
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函数中定义的颜色相同。
答案 0 :(得分:2)
在阅读kmeans()
函数的源代码时,您会注意到支持功能_kmeans()
的使用,您可以在其中找到:
code_book = code_book[has_members]
has_members
是一个布尔数组,指示哪些集群具有成员,是由_vq.update_cluster_means()
产生的。
简而言之,当您指定簇的数量k
时,该算法将返回一组形心(最多 k
),其形变最低。仅在K均值的更新步骤中删除空簇。