使用 scipy.cluster.hierarchy 中的链接函数
usage of linkage function from scipy.cluster.hierarchy
我正在尝试将层次聚类应用于图像的像素值。这是分配图像的不同区域并提取具有相似颜色的片段。问题区域是仅按接近颜色分割图像, 而不是 按形状。
我正在尝试(假设图像被加载为 numpy 形状数组(256,256,3),由于版权问题无法共享图片:
from scipy.cluster.hierarchy import dendrogram, linkage
ppp=img.reshape(img.shape[0]*img.shape[1],img.shape[2])
Z = linkage(ppp, method = 'ward')
dendrogram(Z,leaf_rotation=90., leaf_font_size=8.,)
这是错误:
MemoryError Traceback (most recent call last)
<ipython-input-87-39453b2f2da1> in <module>()
14 ppp=img.reshape(img.shape[0]*img.shape[1],img.shape[2])
---> 15 Z = linkage(ppp, method = 'ward')
16 dendrogram(Z,leaf_rotation=90., leaf_font_size=8.,)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\scipy\cluster\hierarchy.py in linkage(y, method, metric, optimal_ordering)
706 'matrix looks suspiciously like an uncondensed '
707 'distance matrix')
--> 708 y = distance.pdist(y, metric)
709 else:
710 raise ValueError("`y` must be 1 or 2 dimensional.")
~\AppData\Local\Continuum\anaconda3\lib\site-packages\scipy\spatial\distance.py in pdist(X, metric, *args, **kwargs)
1650 out = kwargs.pop("out", None)
1651 if out is None:
-> 1652 dm = np.empty((m * (m - 1)) // 2, dtype=np.double)
1653 else:
1654 if out.shape != (m * (m - 1) // 2,):
你能帮忙吗?
ppp
具有形状 (65536, 3),因此该错误消息中的 m
是 65536。在内部,linkage
创建一个大小为 [=13 的浮点值数组=] 来保存所有的成对距离。在您的情况下,这是 2147450880 个元素。每个浮点元素需要八个字节,因此数组的总大小为 17179607040 字节。超过 17 GB。想必你没有足够的内存来分配这样的数组。
我正在尝试将层次聚类应用于图像的像素值。这是分配图像的不同区域并提取具有相似颜色的片段。问题区域是仅按接近颜色分割图像, 而不是 按形状。 我正在尝试(假设图像被加载为 numpy 形状数组(256,256,3),由于版权问题无法共享图片:
from scipy.cluster.hierarchy import dendrogram, linkage
ppp=img.reshape(img.shape[0]*img.shape[1],img.shape[2])
Z = linkage(ppp, method = 'ward')
dendrogram(Z,leaf_rotation=90., leaf_font_size=8.,)
这是错误:
MemoryError Traceback (most recent call last)
<ipython-input-87-39453b2f2da1> in <module>()
14 ppp=img.reshape(img.shape[0]*img.shape[1],img.shape[2])
---> 15 Z = linkage(ppp, method = 'ward')
16 dendrogram(Z,leaf_rotation=90., leaf_font_size=8.,)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\scipy\cluster\hierarchy.py in linkage(y, method, metric, optimal_ordering)
706 'matrix looks suspiciously like an uncondensed '
707 'distance matrix')
--> 708 y = distance.pdist(y, metric)
709 else:
710 raise ValueError("`y` must be 1 or 2 dimensional.")
~\AppData\Local\Continuum\anaconda3\lib\site-packages\scipy\spatial\distance.py in pdist(X, metric, *args, **kwargs)
1650 out = kwargs.pop("out", None)
1651 if out is None:
-> 1652 dm = np.empty((m * (m - 1)) // 2, dtype=np.double)
1653 else:
1654 if out.shape != (m * (m - 1) // 2,):
你能帮忙吗?
ppp
具有形状 (65536, 3),因此该错误消息中的 m
是 65536。在内部,linkage
创建一个大小为 [=13 的浮点值数组=] 来保存所有的成对距离。在您的情况下,这是 2147450880 个元素。每个浮点元素需要八个字节,因此数组的总大小为 17179607040 字节。超过 17 GB。想必你没有足够的内存来分配这样的数组。