python - 谁能给我提供一些聚类示例?

标签 python scipy cluster-analysis

我很难理解 scipy.cluster.vq 的真正作用!

在维基百科上,它说聚类可用于将数字图像划分为不同的区域,以进行边界检测或对象识别。
在其他网站和书籍上,它说我们可以使用聚类方法对图像进行聚类,以查找相似图像组。
由于我对图像处理感兴趣,我真的需要完全理解什么是聚类。

所以
任何人都可以向我展示有关使用 scipy.cluster.vq 与图像结合使用的简单示例吗?

最佳答案

scipy.cluster.vq 执行的聚类类型绝对属于后者(相似图像组)。

scipy.cluster.vq中实现的唯一聚类算法是K-Means该算法通常将输入数据视为 n 维欧几里得空间中的点,并尝试划分该空间,以便可以通过“示例 x 最像质心 y”来总结新的传入数据。质心可以被认为是输入数据的原型(prototype)示例。矢量量化可以带来简洁或压缩的表示,因为我们可以记住一个指向新图像最相似的原型(prototype)示例的整数,而不是记住我们看到的每个新图像的所有 100 个像素。

如果您有许多小灰度图像:

>>> import numpy as np
>>> images = np.random.random_sample((100,10,10))

所以,我们有 100 张 10x10 像素图像。让我们假设它们都具有相似的亮度和对比度。 scipy kmeans 实现需要平面向量:

>>> images = images.reshape((100,100))
>>> images.shape
(100,100)

现在,让我们训练 K-Means 算法,以便任何新传入的图像都可以分配给 10 个集群之一:

>>> from scipy.cluster.vq import kmeans, vq
>>> codebook,distortion = kmeans(images,10)

最后,假设我们有五个新图像想要分配给十个集群之一:

>>> newimages = np.random.random_samples((5,10,10))
>>> clusters = vq(newimages.reshape((5,100)),codebook)

clusters 将包含五个示例中每个示例的最佳匹配质心的整数索引。

这是一个玩具示例,除非您正在处理的图像中感兴趣的对象全部居中,否则不会产生很好的结果。由于感兴趣的对象可能出现在较大图像中的任何位置,因此通常会学习较小图像“补丁”的质心,然后将它们与较大图像进行卷积(在许多不同位置比较它们)以促进平移不变性。

关于python - 谁能给我提供一些聚类示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12808050/

相关文章:

Python 类装饰器将元素访问转换为属性访问

python - 计算每列值的类型

python - 运行时警告 : overflow encountered in exp in computing the logistic function

python - 在 Python 中使用 PCA 进行图像聚类和降维

machine-learning - 自动学习集群

python - 字节到字符串到字节。 python 3

python - Pandas groupby : compute (relative) sizes and save in original dataframe

Python - 计算正态分布

python - NumPy 日志函数抛出 int 属性错误

java - ELKI:在 Java 中的自定义对象上运行 DBSCAN