有没有办法减少小批量 kmeans 的内存使用量?

use*_*679 5 python bigdata k-means scikit-learn

我正在处理一个包含 640 万个样本和 500 个维度的数据集,我正在尝试将其分组为 200 个集群。我的内存限制为 90GB,当我尝试从 sklearn.cluster 运行 MiniBatchKmeans 时,操作系统会因为使用过多内存而终止进程。

这是代码:

data = np.loadtxt('temp/data.csv', delimiter=',')
labels = np.genfromtxt('temp/labels', delimiter=',')

kmeans = cluster.MiniBatchKMeans(n_clusters=numClusters, random_state=0).fit(data)
predict = kmeans.predict(data)
Tdata = kmeans.transform(data)
Run Code Online (Sandbox Code Playgroud)

它不会通过聚类。

Or *_*uan 3

解决方案是使用sklearn的partial_fit方法——不是所有算法都有这个选项,但是MiniBatchKMeans有。

所以你可以“部分”训练,但是你必须分割你的数据,而不是一次性读取所有数据,这可以用生成器来完成,有很多方法可以做到这一点,例如,如果你使用 pandas,你可以用这个

然后,fit您应该使用partial_fit来训练,而不是使用 。