我正在使用sklearn Kmeans Minibatch对大型数据进行集群,但是出现内存错误。
这是我在此配置下的笔记本电脑配置,可以正常工作:
我将TfidfVectorizer X 存储在.npz文件中(426 Mb)。然后,我在 X 上用不同数量的集群执行几次集群。
X = sparse.load_npz(“ D:\ clustering_final \ sp-k2.npz”)
n_samples:850900,n_features:1728098
使用MiniBatchKMeans聚类稀疏矩阵数据
Batch_size = 1000,n_clusters = 500,compute_labels = True,init ='k-means ++',n_init = 100
我的python脚本在此便携式计算机配置上可以正常工作,但是当我在另一台便携式计算机上使用相同的Python(因为它与复制的python36文件夹相同)时,会出现内存错误。即使另一台笔记本电脑的配置很高:
16 GB RAM
km.fit(X)
File "C:\python36\lib\site-packages\sklearn\cluster\k_means_.py", line 1418, in fit init_size=init_size)
File "C:\python36\lib\site-packages\sklearn\cluster\k_means_.py", line 684, in _init_centroids x_squared_norms=x_squared_norms)
File "C:\python36\lib\site-packages\sklearn\cluster\k_means_.py", line 79, in _k_init centers = np.empty((n_clusters, n_features), dtype=X.dtype)
MemoryError
我检查了所有必需的库和其他依赖项,但是它在低配置笔记本电脑上可以完美运行。为什么它不能在高配置笔记本电脑上运行?
我知道这听起来很奇怪,但确实如此。