在Sklearn中进行聚类时的ValueError

时间:2015-08-17 04:25:08

标签: python numpy scikit-learn

我有一个以下形状的RGB图像((3L,5L,5L)。这意味着5×5像素的图像有3层(R,G和B)。我想使用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)

1 个答案:

答案 0 :(得分:2)

要聚类,您需要说出两点之间的距离。 DBSCAN不是图形聚类算法,它与特征一起使用。您需要将每个像素表示为要素,以便距离合适。

这些功能可能只是RGB,在这种情况下,相似的颜色会聚集在一起。或者这些特征还可以包括x,y坐标,这也意味着要考虑空间距离。

如果你想考虑空间距离,我建议你看看scikit-image的分割模块,它包含几种流行的图像分割方法。