Orange Canvas 3.3.6 - "MemoryError" при запуске виджета кластеризации k-средних

У меня проблемы с запуском виджета кластеризации k-средних в Orange 3.3.6. Я пытаюсь запустить его на наборе данных с 46k строк, но я получаю ошибку памяти, и виджет падает. Если я урежу его до 12030 строк, он будет работать. Очевидно, я хочу, чтобы он работал на всем наборе данных.

Я попытался установить новейшую версию оранжевого, обрезав все лишние столбцы в моем файле данных, за исключением тех немногих, которые мне действительно нужны, нормализуя мои данные и установив в нем 5 десятичных знаков.

Я использую Windows 8.1 Pro 64 бит, и 8 ГБ оперативной памяти. Я действительно чувствую, что Orange должен справиться с большим количеством данных, чем это.

Я запустил тот же набор данных из 46 тыс. Строк по алгоритму сцепления k-средних в программном обеспечении ioGas(по рефлексам), и он прошел через несколько секунд.

Могу ли я попытаться заставить Orange работать лучше?

Это сообщение об ошибке, которое выдает графический интерфейс Orange Canvas.

MemoryError                                   Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\Orange\widgets\gui.py", line 2228, in <lambda>
    b.button = btn = button(b, master, label, callback=lambda: do_commit())
  File "C:\Python34\lib\site-packages\Orange\widgets\gui.py", line 2199, in do_commit
    commit()
  File "C:\Python34\lib\site-packages\Orange\widgets\unsupervised\owkmeans.py", line 250, in run
    self.cluster()
  File "C:\Python34\lib\site-packages\Orange\widgets\unsupervised\owkmeans.py", line 239, in cluster
    max_iter=self.max_iterations)(self.data)
  File "C:\Python34\lib\site-packages\Orange\projection\base.py", line 28, in __call__
    clf = self.fit(data.X, data.Y)
  File "C:\Python34\lib\site-packages\Orange\clustering\kmeans.py", line 25, in fit
    proj.silhouette = silhouette_score(X, proj.labels_)
  File "C:\Python34\lib\site-packages\sklearn\metrics\cluster\unsupervised.py", line 95, in silhouette_score
    return np.mean(silhouette_samples(X, labels, metric=metric, **kwds))
  File "C:\Python34\lib\site-packages\sklearn\metrics\cluster\unsupervised.py", line 158, in silhouette_samples
    distances = pairwise_distances(X, metric=metric, **kwds)
  File "C:\Python34\lib\site-packages\sklearn\metrics\pairwise.py", line 1207, in pairwise_distances
    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)
  File "C:\Python34\lib\site-packages\sklearn\metrics\pairwise.py", line 1054, in _parallel_pairwise
    return func(X, Y, **kwds)
  File "C:\Python34\lib\site-packages\sklearn\metrics\pairwise.py", line 231, in euclidean_distances
    distances = safe_sparse_dot(X, Y.T, dense_output=True)
  File "C:\Python34\lib\site-packages\sklearn\utils\extmath.py", line 184, in safe_sparse_dot
    return fast_dot(a, b)
MemoryError

2 ответа

Проблема не в k-средних, а в Силуэт.

Силуэт вычисляет попарные расстояния и, следовательно, требует O(n^2) памяти. Так что вам просто не хватает памяти.

Возможно, вы захотите попробовать запустить 64-битный Python. Я предлагаю Anaconda, которая поставляется с 64-битным Python, и тогда вы можете просто:

conda install -c anaconda orange3=3.3.6
Другие вопросы по тегам