回答

2

这是一个太宽泛的问题。

一般而言,您可以使用任何clustering mechanism,例如,一个流行的k-means。为了准备数据进行集群,您需要将集合转换为数组X,其中每一行都是一个示例(图像),每列都是一个特征。

主要问题 - 你的功能应该是什么。不知道你想要完成什么,很难回答。如果您的图像很小并且尺寸相同,则可以将每个像素作为一个特征。如果您有任何元数据并希望使用它进行排序 - 您可以将元数据中的每个标签都作为一项功能。

现在,如果您确实需要在图像之间找到某些图案,则必须应用额外的处理层,如convolutional neural network,它基本上允许您从图像的不同部分提取特征。你可以把它想象成一个过滤器,它会将每个图像转换成8x8矩阵,然后相应地可以在数组X中使用64行不同的特征来进行聚类。

+0

我想让每个簇都由相同对象/场景的照片组成,即我拍摄了三张我的房间照片,但是来自一些不同的位置,或者某张照片上的光线较少。所以照片不完全相同,但非常相似。 – alex

+0

在这种情况下,我建议先深入研究深度学习(convnet),然后再尝试一种简单的方法。我只是从每个图像中提取像素的图,特别是因为它们都具有相同的大小。将照片转换为黑白色将帮助您降低复杂程度。然后尝试应用scikit-learn的k-means。不同数量的集群也可以查看影响。但最有可能的是,你将不得不应用某种方式来获得有意义的结果。我只是建议分阶段进行。 – omdv

+0

事实上,我建议看看mahotas图书馆,这可以很好地适用于你的情况。链接 - http://mahotas.readthedocs.io/en/latest/features.html – omdv