机器学习之聚类——谱聚类简介及其对特殊形状区域数据的聚类

简介: 机器学习之聚类——谱聚类简介及其对特殊形状区域数据的聚类

引子

       传说有个叫机器学习的星球,星球上除了海水,还分布着三个大陆,他们的名字分别是监督学习、无监督学习以及半监督学习。每个大陆都有很多王国,像回归啊,分类啊,这些王国都位于监督学习大陆。而在无监督学习的大陆上,聚类王国占据了相当大的领地,而在聚类王国里,又有很多分封的诸侯,最老牌的诸侯如K-means,可谓家喻户晓,在国际上也有举足轻重的地位,今天我们不采访他,而是关注他的邻居,谱聚类,介绍一下谱聚类的原理,以及他对社会所作的贡献。

       聚类王国里每一个国家都有一个共同的经济目标,对其国内的经济实体按内在相似性划分为多个类别,使类别内的实体相似度较大而类别间的实体相似度较小。当然,每一个国家或诸侯会采用不同的方法来实现这个目标。

聚类的衡量指标

1、同一性(Homogeneity):一个簇中只包含一个类别的样本,则满足均一性

2、完整性(Completeness):同类别样本被归类到相同簇中,则满足完整性

3、V-Measure:均一性和完整性的加权平均

这些指标可谓是聚类王国的GDP指标了,他反应了这个国家的综合经济实力,哈哈

谱聚类原理

      在谱聚类的诸侯国中,有一条很重要的宪法,这就是谱聚类的原理。它的大致内容是这样的:

每个实体,即每条数据,用空间中的一个点来代表,将这些点用边连接,距离较远的两个点之间的边权重较低,而距离较近的两个点之间的边权重较高,通过对所有数据点组成的图进行切图,让切图后的不同的子图间边权重之和尽可能小(即距离远),而子图内的边权重之和尽可能高(即距离近),这个过程也可以叫做求图的最小割。

具体做法如下:

       这里加入一些小编总结,对相似度图进行切割的过程,即求最小割的过程,和求特征向量的过程是等价的,亦即,使用特征向量来代表原数据就能使相似度图的子图间边权重之和最小,而子图内的边权重之和最大。

       详细讲述谱聚类原理的文章很多,这里只是做了简单的总结以及个人理解,不过瘾的读者可以深入研究。下面上案例

案例:对特殊形状区域数据的聚类

代码如下:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors
from sklearn.cluster import SpectralClustering
from sklearn.metrics import euclidean_distances
from sklearn import datasets
 
 
if __name__ == "__main__":
    matplotlib.rcParams['font.sans-serif'] = ['SimHei']
    matplotlib.rcParams['axes.unicode_minus'] = False
    # 在平面中制作一个包含较小圆圈的大圆圈
    x1, _ = datasets.make_circles(n_samples=500, noise=0.06, factor=0.2)
    # 将圆圈图像整体上移,便于与下面的半圆数据分开
    x1[:, 1] = x1[:, 1] + 3.5
    # 生成两个交错的半圆
    x2, _ = datasets.make_moons(n_samples=200, noise=0.06)
    # 将两种数据集叠加
    data = np.vstack((x1, x2))
    # 簇的个数
    n_clusters = 4
    # 计算每两个点之间的欧氏距离
    m = euclidean_distances(data, squared=True)
    # 绘图准备
    plt.figure(figsize=(12, 8), facecolor="w")
    plt.suptitle("谱聚类应用", fontsize=15)
    # 采用全连接法构造相似度图,两点的相似度采用高斯核函数,并且对比采用不同4种标准差时的聚类结果
    for i, s in enumerate(np.logspace(-2, 0, 4)):
        print(s)
        # 相似度图
        affinity = np.exp(-m ** 2 / (s ** 2)) + 1e-6
        # 谱聚类模型
        model = SpectralClustering(n_clusters=n_clusters, affinity="precomputed", assign_labels="kmeans", random_state=1)
        # 对相似度图进行预测
        y_hat = model.fit_predict(affinity)
        # 绘制聚类结果
        plt.subplot(2, 2, i+1)
        plt.scatter(data[:, 0], data[:, 1], s=40, c=y_hat, cmap=plt.cm.Spectral, edgecolors="k")
        plt.grid(visible=True, ls=":", color="#606060")
        plt.title(r"高斯核函数标准差$\sigma$ = %.2f" % s, fontsize=11)
    plt.tight_layout()
    # plt.show()
    plt.savefig('sc.png', dpi=800)

运行结果如下:

 

故事先讲到这里,期待后面的精彩故事吧!

作者这水平有限,有不足之处欢迎留言指正

相关文章
|
3月前
|
机器学习/深度学习 数据采集 算法
量子机器学习入门:三种数据编码方法对比与应用
在量子机器学习中,数据编码方式决定了量子模型如何理解和处理信息。本文详解角度编码、振幅编码与基础编码三种方法,分析其原理、实现及适用场景,帮助读者选择最适合的编码策略,提升量子模型性能。
303 8
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
1211 6
|
8月前
|
机器学习/深度学习 算法 数据挖掘
PyTabKit:比sklearn更强大的表格数据机器学习框架
PyTabKit是一个专为表格数据设计的新兴机器学习框架,集成了RealMLP等先进深度学习技术与优化的GBDT超参数配置。相比传统Scikit-Learn,PyTabKit通过元级调优的默认参数设置,在无需复杂超参调整的情况下,显著提升中大型数据集的性能表现。其简化API设计、高效训练速度和多模型集成能力,使其成为企业决策与竞赛建模的理想工具。
286 12
PyTabKit:比sklearn更强大的表格数据机器学习框架
|
11月前
|
机器学习/深度学习 数据采集 JSON
Pandas数据应用:机器学习预处理
本文介绍如何使用Pandas进行机器学习数据预处理,涵盖数据加载、缺失值处理、类型转换、标准化与归一化及分类变量编码等内容。常见问题包括文件路径错误、编码不正确、数据类型不符、缺失值处理不当等。通过代码案例详细解释每一步骤,并提供解决方案,确保数据质量,提升模型性能。
449 88
|
9月前
|
人工智能 JSON 自然语言处理
如何用大模型评估大模型——PAI-Judge裁判员大语言模型的实现简介
阿里云人工智能平台 PAI 推出 PAI-Judge 裁判员大模型,为用户构建符合应用场景的多维度、细粒度的评测体系,支持单模型评测和双模型竞技两种模式,允许用户自定义参数,实现准确、灵活、高效的模型自动化评测,为模型迭代优化提供数据支撑。 相比通用大模型尤其在回答确定性/数学类问题、角色扮演、创意文体写作、翻译等场景下,PAI-Judge 系列模型表现优异,可以直接用于大模型的评估与质检。
|
11月前
|
机器学习/深度学习 数据采集 算法
机器学习在生物信息学中的创新应用:解锁生物数据的奥秘
机器学习在生物信息学中的创新应用:解锁生物数据的奥秘
870 36
|
11月前
|
机器学习/深度学习 人工智能
Diff-Instruct:指导任意生成模型训练的通用框架,无需额外训练数据即可提升生成质量
Diff-Instruct 是一种从预训练扩散模型中迁移知识的通用框架,通过最小化积分Kullback-Leibler散度,指导其他生成模型的训练,提升生成性能。
311 11
Diff-Instruct:指导任意生成模型训练的通用框架,无需额外训练数据即可提升生成质量
|
9月前
|
机器学习/深度学习 传感器 数据采集
基于机器学习的数据分析:PLC采集的生产数据预测设备故障模型
本文介绍如何利用Python和Scikit-learn构建基于PLC数据的设备故障预测模型。通过实时采集温度、振动、电流等参数,进行数据预处理和特征提取,选择合适的机器学习模型(如随机森林、XGBoost),并优化模型性能。文章还分享了边缘计算部署方案及常见问题排查,强调模型预测应结合定期维护,确保系统稳定运行。
910 0
|
11月前
|
人工智能 Kubernetes Cloud Native
跨越鸿沟:PAI-DSW 支持动态数据挂载新体验
本文讲述了如何在 PAI-DSW 中集成和利用 Fluid 框架,以及通过动态挂载技术实现 OSS 等存储介质上数据集的快速接入和管理。通过案例演示,进一步展示了动态挂载功能的实际应用效果和优势。
|
机器学习/深度学习 人工智能 自然语言处理
模型训练数据-MinerU一款Pdf转Markdown软件
MinerU是由上海人工智能实验室OpenDataLab团队开发的开源智能数据提取工具,专长于复杂PDF文档的高效解析与提取。它能够将含有图片、公式、表格等多模态内容的PDF文档转化为Markdown格式,同时支持从网页和电子书中提取内容,显著提升了AI语料准备的效率。MinerU具备高精度的PDF模型解析工具链,能自动识别乱码,保留文档结构,并将公式转换为LaTeX格式,广泛适用于学术、财务、法律等领域。
1782 4

热门文章

最新文章