当前位置: 首页 >  技术分享 >  【scikit-learn基础】--『监督学习』之 谱聚类

【scikit-learn基础】--『监督学习』之 谱聚类

导读:谱聚类 算法基于图论,它的起源可以追溯到早期的图分割文献。.不过,直至近年来,受益于计算机计算能力的提升,谱聚类算法才得到了广泛的研究和关注。.谱聚类 被广泛应用于图像分割、社交网络分析、推荐系统、文本聚类等领域。.例如,在图像分割中,谱聚类可以有效地将图像划分为背景和前景;.在

谱聚类 算法基于图论,它的起源可以追溯到早期的图分割文献。
不过,直至近年来,受益于计算机计算能力的提升,谱聚类算法才得到了广泛的研究和关注。

谱聚类 被广泛应用于图像分割、社交网络分析、推荐系统、文本聚类等领域。
例如,在图像分割中,谱聚类可以有效地将图像划分为背景和前景;
在社交网络分析中,它可以识别出不同的社区结构。

1. 算法概述

谱聚类 的基本原理是将数据点视为图中的顶点,根据数据点之间的相似性构建图的边。
它首先计算图的拉普拉斯矩阵 的特征向量,然后利用这些特征向量进行聚类。
这种方法能够捕捉到数据的非线性结构,因此在许多应用中表现优异。

所谓拉普拉斯矩阵 ,是一种用于表示一个图的矩阵形式。
对于给定的一个有\(n\)个顶点的图\(G\),它的拉普拉斯矩阵定义为\(L=D-A\)。
其中\(D\)为图的度矩阵 ,\(A\)为图的邻接矩阵

2. 创建样本数据

为验证谱聚类 的效果,用scikit-learn中的样本生成器创建2个非线性结构的数据集。

from sklearn.datasets import make_moons, make_circles

fig, axes = plt.subplots(nrows=1, ncols=2)
fig.set_size_inches((8, 4))

X_moon, y_moon = make_moons(noise=0.05, n_samples=1000)
axes[0].scatter(X_moon[:, 0], X_moon[:, 1], marker="o", c=y_moon, s=25, cmap=plt.cm.spring)

X_circle, y_circle = make_circles(noise=0.05, factor=0.5, n_samples=1000)
axes[1].scatter(X_circle[:, 0], X_circle[:, 1], marker="o", c=y_circle, s=25, cmap=plt.cm.winter)

plt.show()


一个交错的月牙形式 ,一个是同心圆形式 ,都是很难线性分割的数据集。

3. 模型训练

首先,用默认的参数训练看看效果:

from sklearn.cluster import SpectralClustering

# 定义
regs = [
    SpectralClustering(n_clusters=2),
    SpectralClustering(n_clusters=2),
]

# 训练模型
regs[0].fit(X_moon, y_moon)
regs[1].fit(X_circle, y_circle)

fig, axes = plt.subplots(nrows=1, ncols=2)
fig.set_size_inches((8, 4))

# 绘制聚类之后的结果
axes[0].scatter(
    X_moon[:, 0], X_moon[:, 1], marker="o", c=regs[0].labels_, s=25, cmap=plt.cm.spring
)

axes[1].scatter(
    X_circle[:, 0], X_circle[:, 1], marker="o", c=regs[1].labels_, s=25, cmap=plt.cm.winter
)

plt.show()


从图中可以看出,聚类的效果不是很好,从颜色上看,与原始数据的类别相比差距较大。

接下来,调整下SpectralClustering模型的affinity参数,
这个参数的作用是定义数据点之间的相似度矩阵的计算方法。
affinity参数的可选值常用的有两个:

  1. nearest_neighbors :通过计算最近邻图来构建亲和矩阵
  2. rbf :使用径向基函数 (RBF) 内核构建亲和矩阵。

默认的值是 rbf,下面我们试试nearest_neighbors方式的聚类效果。
将上面的代码中 regs 的定义部分换成如下代码:

regs = [
    SpectralClustering(n_clusters=2, affinity="nearest_neighbors"),
    SpectralClustering(n_clusters=2, affinity="nearest_neighbors"),
]


修改参数之后的聚类效果与原始数据就非常接近了。

4. 总结

简而言之,谱聚类 是一个在图上进行聚类的方法,它试图找到图的最佳切割,使得同一簇内的边的权重尽可能大,而不同簇之间的边的权重尽可能小。

这种聚类算法的优势有:

  1. 可以捕获数据的非线性结构
  2. 对噪声和异常值相对鲁棒
  3. 不需要明确的形状假设,适用于各种形状的簇

它的局限性有:

  1. 计算复杂度相对较高 ,尤其是对于大规模数据
  2. 需要提前确定簇的数量 ,这在很多实际应用中是一个挑战
  3. 对于高维数据,可能存在“维度诅咒 ”问题,尽管可以通过降维缓解,但增加了计算复杂度
内容
  • 编写图像抖动修正色带问题
    编写图像抖动修正色带问题
    2023-12-09
    图像色带(Band)问题一般出现在带有渐变的图像上,在影视上可以换成16bit的色深以解决,.而游戏开发中通常对图像做色
  • CocosCreator v3.7.x 脚本、库打包研究
    CocosCreator v3.
    2023-12-08
    vivo小游戏打包.“debug keystore” 和 “分割引擎” 不能同时勾选。.如果要 分割引擎,那么必须使用自
  • 云服务器托管服务
    云服务器托管服务
    2023-10-02
    云服务器托管服务.什么是云服务器托管服务.云服务器托管服务是指将企业或个人的***设备放置在专业的数据中心中,由专业的运
  • 智能化电子元件研发与生产
    智能化电子元件研发与生产
    2023-10-02
    智能化电子元件研发与生产.随着科技的不断发展,智能化电子元件的研发与生产成为了当前的热点话题。作为现代电子产品的重要组成
  • 全球电子元件市场趋势分析
    全球电子元件市场趋势分析
    2023-10-02
    全球电子元件市场趋势分析.近年来,全球电子元件市场呈现出不断增长的趋势。随着科技的不断发展和智能设备的普及,电子元件市场
  • ***监控与报警服务
    ***监控与报警服务
    2023-10-02
    ***监控与报警服务.在当今互联网时代,***监控与报警服务变得至关重要。随着互联网技术的不断发展,***已成为企业运营
  • 高温高压电子元件生产
    高温高压电子元件生产
    2023-10-02
    高温高压电子元件生产.随着科技的不断发展,高温高压电子元件在现代电子设备中扮演着*益重要的角色。在工业、航空航天、汽车等
  • 电子元件**链**解决方案
    电子元件**链**解决方案
    2023-10-02
    电子元件**链**解决方案.在当今全球化的市场中,**链**是企业成功的关键因素之一。特别是在电子元件行业,**链**尤
  • 云存储解决方案
    云存储解决方案
    2023-10-02
    云存储解决方案.随着互联网技术的不断发展,越来越多的企业开始意识到数据存储和管理的重要性。传统的本地存储方式已经不能满足
  • 互联网金融服务平台
    互联网金融服务平台
    2023-10-02
    互联网金融服务平台.互联网金融服务平台是指利用互联网技术提供金融服务的平台,它的出现极大地改变了传统金融行业的运营模式,
  • 科技创新孵化器服务
    科技创新孵化器服务
    2023-10-02
    科技创新孵化器服务.科技创新孵化器是指为初创科技企业提供办公、技术、**和资金服务的机构,而科技创新孵化器服务则是指这些
  • ***安全加固与防护方案
    ***安全加固与防护方案
    2023-10-02
    ***安全加固与防护方案.随着互联网的快速发展,***安全问题日益凸显。一旦***遭受攻击,可能导致数据泄露、服务中断甚