我在12个变量的400K观测值上运行K-means聚类。最初,当我使用Kmeans代码运行单元格时,它会在2分钟后弹出一条消息,说内核被中断并将重新启动。然后需要很长时间,好像内核已经死了,代码将不再运行。
所以我尝试了125k观察,同样没有。变量。但仍然是我得到的同样的信息。
这是什么意思?这是否意味着ipython笔记本无法在125k观察中运行kmeans并杀死内核?
如何解决这个问题?这对我来说非常重要。 :(
请指教。
我使用的代码:
来自sklearn.cluster导入KMeans 来自sklearn.metrics导入silhouette_score
index.php
答案 0 :(得分:2)
从某些调查来看,这可能与iPython Notebook / Jupyter无关。这似乎与sklearn
存在问题,后者追溯到numpy
的问题。请参阅相关的github问题sklearn
here和here以及基本的numpy问题here。
最终,计算“轮廓分数”需要计算一个非常大的距离矩阵,并且似乎距离矩阵在系统中占用了大量行的太多内存。例如,在类似计算的两次运行期间查看我的系统上的内存压力(OSX,8GB ram) - 第一个峰值是具有10k记录的Silhouette Score计算,第二个......高原...具有40k记录:< / p>
根据相关的SO回答here,您的内核进程可能会被操作系统杀死,因为它占用了太多内存。
最终,这需要在sklearn
和/或numpy
的基础代码库中进行一些修复。您可以在过渡期间尝试的一些选项:
或者,如果您比我聪明并且有空闲时间,请考虑尝试为sklearn
和/或numpy
提供修复:)