我在Orange 3.3.6中运行k-means群集小部件时遇到问题。我试图在46k行的数据集上运行它,但我不断收到内存错误,窗口小部件崩溃。如果我将其减少到12030行,它将运行。显然我希望它在整个数据集上运行。


我尝试安装最新版本的橙色,修剪掉我的数据文件中的每个冗余列,除了少数几个我真的需要,规范化我的数据并将其设置为5位小数。


我正在运行Windows 8.1 pro 64位,并且有8GB的内存。我真的觉得Orange应该能够处理比这更多的数据。


我通过软件ioGas中的k-means clusting算法(通过反射)运行相同的46k行数据集,并且在几秒钟内就完成了。


有什么我可以尝试让Orange表现更好吗?


这是错误信息, Orange Canvas GUI抛出。


 MemoryError Traceback(最近一次调用最后一次):
文件“C:\ Python34 \ lib \ site-packages \ Orange \ widgets \ gui.py”,第2228行,< lambda>
 b.button = btn = button(b,master,label,callback = lambda:do_commit())
文件“C:\ Python34 \ lib \ site-packages \ Orange \ widgets \ gui.py”,第2199行,在do_commit
提交()
文件“C:\ Python34 \ lib \ site-packages \ Orange \ widgets \ unsupervised \ owkmeans.py”,第250行,在run
 self.cluster()
文件“C:\ Python34 \ lib \ site-packages \ Orange \ widgets \ unsupervised \ owkmeans.py”,第239行,在cluster
 max_iter = self.max_iterations)(self.data)
文件“C:\ Python34 \ lib \ site-packages \ Orange \ projection \ base.py”,第28行,在__call __
 clf = self.fit(data.X,data.Y)
文件“C:\ Python34 \ lib \ site-packages \ Orange \ clustering \ kmeans.py”,第25行,在fit
 proj.silhouette = silhouette_score(X,proj.labels _)
文件“C:\ Python34 \ lib \ site-packages \ sklearn \ metrics \ cluster \ unsupervised.py”,第95行,在silhouette_score
 return np.mean(silhouette_samples(X,labels,metric = metric,** kwds))
在silhouette_samples
中的文件“C:\ Python34 \ lib \ site-packages \ sklearn \ metrics \ cluster \ unsupervised.py”,第158行。 distance = pairwise_distances(X,metric = metric,** kwds)
文件“C:\ Python34 \ lib \ site-packages \ sklearn \ metrics \ pairwise.py”,第1207行,在pairwise_distances
 return _parallel_pairwise(X,Y,func,n_jobs,** kwds)
文件“C:\ Python34 \ lib \ site-packages \ sklearn \ metrics \ pairwise.py”,第1054行,_parallel_pairwise
 return func(X,Y,** kwds)
文件“C:\ Python34 \ lib \ site-packages \ sklearn \ metrics \ pairwise.py”,第231行,在euclidean_distances
 distance = safe_sparse_dot(X,Y.T,dense_output = True)
文件“C:\ Python34 \ lib \ site-packages \ sklearn \ utils \ extmath.py”,第184行,在safe_sparse_dot
 return fast_dot(a,b)
 MemoryError



答案 0 :(得分:1)
不是k-means是问题,而是剪影。
Silhouette计算成对距离,因此需要O(n ^ 2)个记忆。所以你只是内存不足。
答案 1 :(得分:0)
您可能想尝试运行64位Python。我建议Anaconda,它带有64位Python,然后你可以简单地说:
conda install -c anaconda orange3=3.3.6