K意味着在scikit上聚集时间

时间:2014-05-31 03:42:11

标签: python-2.7 machine-learning scikit-learn k-means

使用具有200个簇的k均值聚集一组100'2000 L2归一化2048-dim特征向量需要多长时间?我将所有数据放在一个巨大的数据块中,也许有更合适的数据结构?

一小时内似乎没有任何进展。我也倾向于使用阈值停止标准,但似乎只需要5分钟就可以进行2次迭代。是否有某种冗长的命令我可以用来检查scikit-learn上的kmeans聚类的进度?有没有人建议任何其他方法?也许就像维数减少,或PCA,然后kmeans? (我只是在那里抛出随机的想法)

1 个答案:

答案 0 :(得分:5)

如果您还没有尝试过,请使用sklearn.cluster.MiniBatchKMeans代替sklearn.cluster.KMeans

,例如X.shape = (100000, 2048),然后写

from sklearn.cluster import MiniBatchKMeans
mbkm = MiniBatchKMeans(n_clusters=200)  # Take a good look at the docstring and set options here
mbkm.fit(X)

MiniBatchKMeans发现与正常KMeans略有不同的群集,但具有巨大的优势,即它是一种在线算法,在每次迭代时都不需要所有数据,并且仍能提供有用的结果。