【发布时间】:2015-12-10 23:52:23
【问题描述】:
我正在使用 12 个变量对大约 400K 观察值运行 K-means 聚类。最初,当我使用 Kmeans 代码运行单元时,它会在 2 分钟后弹出一条消息,说明内核已中断并将重新启动。然后它需要很长时间,就像内核死了,代码将不再运行一样。
所以我尝试了 125k 的观察结果和相同的编号。的变量。但我收到的信息仍然相同。
这是什么意思?这是否意味着 ipython notebook 无法在 125k 观测值上运行 kmeans 并杀死内核?
如何解决这个问题?这对我今天做的很重要。 :(
请指教。
我使用的代码:
从 sklearn.cluster 导入 KMeans 从 sklearn.metrics 导入剪影分数
# Initialize the clusterer with n_clusters value and a random generator
# seed of 10 for reproducibility.
kmeans=KMeans(n_clusters=2,init='k-means++',n_init=10, max_iter=100)
kmeans.fit(Data_sampled.ix[:,1:])
cluster_labels = kmeans.labels_
# The silhouette_score gives the average value for all the samples.
# This gives a perspective into the density and separation of the formed
# clusters
silhouette_avg = silhouette_score(Data_sampled.ix[:,1:],cluster_labels)
【问题讨论】:
-
恐怕我对SKLearn不熟悉。我不知道发生了什么,但也许我可以帮助调试一下。您是否尝试过退化案例,例如 5 次观察?如果这也失败了,则表明问题不与观察数量有关,您可以查看其他地方。例如,将迭代次数从 100 次减少到 5 次;更改 n_init 以使算法做更少的工作。我猜今天得到一个合理的答案比得到最好的答案更重要。
-
我刚刚尝试了 62K obs,只有 12 个变量。我再次收到相同的消息“内核似乎已经死机。请重新启动”。重新启动后它永远不会完成。怎么了?。 ipython 也不能处理 100K obs 吗?.. 我在 Mac 最新的操作系统上运行 16GB 内存。
-
从文档中,这是否相关? “在实践中,k-means 算法非常快(可用的最快的聚类算法之一),但它属于局部最小值。这就是为什么重新启动它几次会很有用。”
-
嗯,如果n_jobs=1,那么它可能没有使用joblib,所以问题肯定不在它。
标签: python numpy pandas ipython scikit-learn