在 Sklearn 中聚类时出现 ValueError
ValueError While Clustering in Sklearn
我有一个以下形状的 RGB 图像 ((3L, 5L, 5L)。这意味着具有 3 层(R、G 和 B)的 5 x 5 像素图像。我想使用 DBSCAN 算法将其聚类为如下。但我收到一条错误消息 ValueError: Found array with dim 3. Expected <= 2
。我不能用于我的 3d 图像吗?
import numpy as np
from sklearn.cluster import DBSCAN
from collections import Counter
data = np.random.rand(3,5,5)
print np.shape(data)
print data
db = DBSCAN(eps=0.12, min_samples=3).fit(data)
print db
DBSCAN(algorithm='auto', eps=0.12, leaf_size=30, metric='euclidean',
min_samples=1, p=None, random_state=None)
labels = db.labels_
print Counter(labels)
要聚类,您需要说明两点之间的距离。 DBSCAN 不是图聚类算法,它与特征一起使用。您需要将每个像素表示为特征,以便距离合适。
特征可能只是 RGB,在这种情况下,相似的颜色聚集在一起。或者这些特征还可以包括 x、y 坐标,这意味着空间距离也被考虑在内。
如果你想考虑空间距离,我建议你看一下 scikit-image 的分割模块,其中包含一些流行的图像分割方法。
我有一个以下形状的 RGB 图像 ((3L, 5L, 5L)。这意味着具有 3 层(R、G 和 B)的 5 x 5 像素图像。我想使用 DBSCAN 算法将其聚类为如下。但我收到一条错误消息 ValueError: Found array with dim 3. Expected <= 2
。我不能用于我的 3d 图像吗?
import numpy as np
from sklearn.cluster import DBSCAN
from collections import Counter
data = np.random.rand(3,5,5)
print np.shape(data)
print data
db = DBSCAN(eps=0.12, min_samples=3).fit(data)
print db
DBSCAN(algorithm='auto', eps=0.12, leaf_size=30, metric='euclidean',
min_samples=1, p=None, random_state=None)
labels = db.labels_
print Counter(labels)
要聚类,您需要说明两点之间的距离。 DBSCAN 不是图聚类算法,它与特征一起使用。您需要将每个像素表示为特征,以便距离合适。
特征可能只是 RGB,在这种情况下,相似的颜色聚集在一起。或者这些特征还可以包括 x、y 坐标,这意味着空间距离也被考虑在内。
如果你想考虑空间距离,我建议你看一下 scikit-image 的分割模块,其中包含一些流行的图像分割方法。