我使用的数据集是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)
它没有超越群集。
答案 0 :(得分:1)
解决方案是使用sklearn的partial_fit
方法 - 并非所有算法都有此选项,但MiniBatchKMeans
拥有此选项。
所以你可以“部分”训练,但你必须分开你的数据而不是一次性阅读,这可以用生成器完成,有很多方法可以做到,如果你使用pandas例如,您可以使用this。
然后,您应该使用fit
进行培训,而不是使用partial_fit
。
答案 1 :(得分:0)
我认为您也可以尝试降低数据的精度,以减少分配的内存量。尝试使用float32而不是默认值。