Hier ist mein Code:hierarchische Clustern in scipy - Speicherfehler
import numpy as np
from scipy.cluster.hierarchy import fclusterdata
def mydist(p1,p2):
return 1
Y = np.random.randn(100000,2)
fclust1 = fclusterdata(Y, 1.0, metric=mydist)
Es erzeugt die folgenden Fehler:
MemoryError Traceback (most recent call last)
<ipython-input-52-818db8791e96> in <module>()
----> 1 fclust1 = fclusterdata(Y, 1.0, metric=mydist)
C:\Anaconda3\lib\site-packages\scipy\cluster\hierarchy.py in fclusterdata(X, t, criterion, metric, depth, method, R)
1682 'array.')
1683
-> 1684 Y = distance.pdist(X, metric=metric)
1685 Z = linkage(Y, method=method)
1686 if R is None:
C:\Anaconda3\lib\site-packages\scipy\spatial\distance.py in pdist(X, metric, p, w, V, VI)
1218
1219 m, n = s
-> 1220 dm = np.zeros((m * (m - 1)) // 2, dtype=np.double)
1221
1222 wmink_names = ['wminkowski', 'wmi', 'wm', 'wpnorm']
MemoryError:
Also ich meinen Vektor bin zu raten, ist zu groß. Ich bin etwas überrascht, da meine Distanzfunktion trivial ist. Was ist der maximale Größenvektor, den fclusterdata
akzeptieren kann?
So zerbricht es, wenn es versucht, Speicher vorab zu reservieren, da es nicht viel zu speichern gibt. – user1700890
Ja. Sie haben keinen Speicher mehr. Berechnen Sie selbst 'm * (m - 1) // 2 * 8'. –