同事,帮我修复代码中的错误。
我无法为进一步的 K 均值聚类设置随机质心。
# Number of clusters
k = 3
# X coordinates of random centroids
C_x = np.random.randint(0, np.max(X)-20, size=k)
# Y coordinates of random centroids
C_y = np.random.randint(0, np.max(X)-20, size=k)
C = np.array(list(zip(C_x, C_y)), dtype=np.float32)
print(C)
发生错误
ValueError:高超出 int32 的范围
如果您帮助 ML 新手,我将不胜感激
显然,在向量
X中,最大值超出了界限np.int32:因此,它可能
np.random.randint(..., np.max(X)-20, ...)会返回一个超出范围的数字,例如:要修复此错误,您可以显式设置数据类型:
但是主要的困难在前面等待着你——
k-means它可以收敛到局部最小值,这在很大程度上取决于初始质心的选择。因此,该算法的所有工业实现都会使用不同的初始质心进行多次计算,从而返回最佳结果。使用一种SciKit-Learn算法k-means++来选择初始质心,其本质是选择尽可能远离彼此的质心。PS链接到文档的理论部分
用法示例(来自文档):