2016-06-30 16 views
0

Ich habe Probleme bei der Ausführung eines k-Means Clustering-Widget in Orange 3.3.6. Ich versuche, es auf einem Datensatz mit 46k Zeilen auszuführen, aber ich bekomme immer einen Speicherfehler und das Widget stürzt ab. Wenn ich es auf 12030 Zeilen trimme, wird es laufen. Offensichtlich möchte ich, dass es auf dem gesamten Datensatz läuft.Orange Canvas 3.3.6 - "MemoryError" beim Ausführen k-Means Clustering-Widget

Ich habe versucht, die neueste Version von Orange zu installieren und jede redundante Spalte in meiner Datendatei auszustreichen, mit Ausnahme der wenigen, die ich wirklich brauche. Meine Daten werden normalisiert und auf 5 Dezimalstellen gesetzt.

Ich bin Windows 8.1 Pro 64 Bit und habe 8 GB RAM. Ich habe wirklich das Gefühl, dass Orange in der Lage sein wird, mit mehr Daten fertig zu werden.

Ich lief die gleichen 46k Zeile Datensatz durch eine k-means Clusting-Algorithmus in der Software ioGas (durch Reflex) und es lief in wenigen Sekunden gut.

Gibt es irgendetwas, was ich versuchen kann, um Orange besser zu machen?

Dies ist die Fehlermeldung, die von der Orange Canvas-GUI ausgegeben wird.

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 

Antwort

1

Nicht k-Mittel ist das Problem, aber Silhouette.

Silhouette berechnet paarweise Abstände und benötigt daher O (n^2) Speicher. Sie haben also keine Speicher mehr.

+0

Großartig! Danke für die Information. – Rusty

0

Sie können versuchen, 64-Bit-Python auszuführen. Ich schlage vor, Anaconda, die mit 64-Bit-Python kommt und dann können Sie einfach:

conda install -c anaconda orange3=3.3.6