在SKLearn

时间:2017-11-28 16:15:07

标签: python scikit-learn cluster-analysis k-means dimensions

我想用SKLearn对我的图像进行分类。 使用python,我从磁盘读取图像并通过自适应阈值“移除”背景。此外,我计算物体的平均颜色(没有背景)和所有像素与平均颜色之间的标准差。 阈值图像,平均颜色和stdv是我的特征提取的结果,我现在想要在我的所有图像上运行聚类算法及其功能来对类似图像进行分类。

然而,the KMeans function似乎只接受一维数组,每个特征对于要聚类的每个对象具有单个值,而不是我的数据,其中单个对象具有

  • 矩阵,显示图像: (((R,G,B)(R,G,B)(R,G,B,)), ((R,G,B)(R,G,B)(R,G,B,)))

  • 具有平均颜色的矢量: (R,G,B)

  • 带有每个颜色方面的stdv的向量: (R,G,B)

如果我只有两个向量,我会将它们分成6个特征,例如 (r,g,b,r2,g2,b2)。但是,矩阵是100x100,这将获得10.000附加功能,这不是答案。

我很高兴听到我的问题的解决方案或指导其他方法使用我提取的功能对图像进行分类。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

是的,您需要重塑数据。是的,100x100x3图像可以产生30000个功能。

由于维度的诅咒,KMeans往往不能很好地处理这些数据。

您需要提取适合低维表示的要素。几年前,答案就是"视觉词汇"。现在它是深度学习",使用最后一层作为你的特征,而不是分类输出层。