K表示scikit中的learn内核由于长时间的计算而死亡

2024-06-13 22:50:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用scikit使用k均值聚类学习。因此用肘形法求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行。当我试图将整个数据帧传递给函数时,内核死了。当我试图只传递一个列时,即使在这种情况下,内核也死了。当我尝试分类时,我能够计算出代码一直运行到上面函数中带有注释的行。请建议我如何克服这个问题。在


Tags: indffordistpltcentvaluessum
1条回答
网友
1楼 · 发布于 2024-06-13 22:50:15

与其重新计算所有的距离,不如使用k-means对象提供的inertia_?在

这样就不需要有问题的行(它使用效率低下的dats结构)。在

相关问题 更多 >