K 表示在 scikit 中学习内核死了 - 由于长时间的计算

K means in scikit learn Kernel died - due to long computations

我正在尝试使用 k 均值聚类,使用 scikit learn.Hence 使用肘部方法找到 k 的最优值。

def elbow(df, n):
   kMeansVar = [KMeans(n_clusters=k).fit(df.values) for k in range(10, n)]
   centroids = [X.cluster_centers_ for X in kMeansVar]
   k_euclid = [cdist(df.values, cent) for cent in centroids]
   dist = [np.min(ke, axis=1) for ke in k_euclid]
   wcss = [sum(d**2) for d in dist] #TILL HERE THE CODE RAN PROPERLY
   tss = sum(pdist(df.values)**2)/df.values.shape[0]
   bss = tss - wcss
   plt.plot(bss)
   plt.show()

我的数据框有 14 列和 188233 行。当我试图将整个数据帧传递给函数时,内核死了。当我试图只传递一个列时,即使在那种情况下内核也会死掉。当我尝试分类时,我能够找出代码 运行 直到上面函数中标有注释的行。请建议我如何解决这个问题。

为什么不使用 k-means 对象提供的 inertia_ 而不是重新计算所有距离?

那么您将不需要有问题的行(它使用低效的 dats 结构)。