小学生都能懂的局部和全局聚类说明

2024-06-12 21:44

本文主要是介绍小学生都能懂的局部和全局聚类说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

小学生都能懂的局部和全局聚类说明

  • 1. 什么是聚类?
  • 2. 什么是局部和全局聚类?
  • 3. 为什么要同时使用局部和全局聚类?
  • 4. 示例解释
    • 4-1. 故事:珠子分类
  • 5. 简单代码示例
  • 6. 解释

1. 什么是聚类?

聚类就是把一大堆东西(数据点)分成几组,每组里面的东西都很相似。比如,我们有很多不同颜色的珠子,想把它们按照颜色分成不同的组。

2. 什么是局部和全局聚类?

  • 全局聚类:把所有的珠子(数据点)整体来看,分成大致几组。就像先把珠子分成红色、蓝色和绿色三大组。
  • 局部聚类:在每个大组里面再进行细分。比如,在红色组里面再分成深红、浅红、粉红等小组。

3. 为什么要同时使用局部和全局聚类?

同时使用局部和全局聚类,可以让我们更好地理解数据:

  • 全局聚类:可以让我们看到数据的整体结构,比如主要有几大类。
  • 局部聚类:可以让我们看到每大类里面的细节,发现更细致的模式。

4. 示例解释

4-1. 故事:珠子分类

假设我们有很多不同颜色的珠子,现在我们想把这些珠子分类。我们会先进行全局聚类,然后在每个大组里进行局部聚类。

  1. 全局聚类:先把珠子分成几个大类

    • 我们把珠子分成三大类:红色、蓝色和绿色。
  2. 局部聚类:在每个大类里面再进行细分

    • 在红色组里面,我们再把珠子分成深红、浅红、粉红。
    • 在蓝色组里面,我们再把珠子分成深蓝、浅蓝、天蓝。
    • 在绿色组里面,我们再把珠子分成深绿、浅绿、黄绿。

这样,我们既可以看到珠子的整体颜色分类(全局),又可以看到每种颜色里面的细节分类(局部)。

5. 简单代码示例

假设我们有一些数据点,先进行全局聚类,再进行局部聚类:

import numpy as np
from sklearn.mixture import GaussianMixture
import umap
import matplotlib.pyplot as plt# 生成一些模拟数据
np.random.seed(42)
data = np.random.rand(100, 5)# 全局聚类
global_gmm = GaussianMixture(n_components=3, random_state=42)
global_labels = global_gmm.fit_predict(data)# 画出全局聚类的结果
reducer = umap.UMAP(n_components=2, random_state=42)
embedding = reducer.fit_transform(data)
plt.scatter(embedding[:, 0], embedding[:, 1], c=global_labels)
plt.title("全局聚类结果")
plt.show()# 局部聚类
local_embeddings = []
local_labels = []
for label in np.unique(global_labels):local_data = data[global_labels == label]local_gmm = GaussianMixture(n_components=2, random_state=42)local_label = local_gmm.fit_predict(local_data)local_embed = reducer.fit_transform(local_data)local_embeddings.append(local_embed)local_labels.append(local_label)# 画出每个全局聚类里面的局部聚类结果
for i, (local_embed, local_label) in enumerate(zip(local_embeddings, local_labels)):plt.scatter(local_embed[:, 0], local_embed[:, 1], c=local_label)plt.title(f"局部聚类结果 (全局组 {i+1})")plt.show()

6. 解释

  1. 数据点:生成一些模拟数据,每个数据点有5个特征。
  2. 全局聚类:使用高斯混合模型(GMM)把数据分成三大类。
  3. 降维:使用UMAP把数据从5维降到2维,以便可视化。
  4. 局部聚类:在每个全局大类里面,再使用GMM进行细分。
  5. 结果展示:画出全局聚类和局部聚类的结果。

通过这个故事和示例,希望你能更好地理解局部和全局聚类的基本概念和它是如何工作的!

这篇关于小学生都能懂的局部和全局聚类说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1055422

相关文章

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

java中新生代和老生代的关系说明

《java中新生代和老生代的关系说明》:本文主要介绍java中新生代和老生代的关系说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、内存区域划分新生代老年代二、对象生命周期与晋升流程三、新生代与老年代的协作机制1. 跨代引用处理2. 动态年龄判定3. 空间分

MySQL中的锁机制详解之全局锁,表级锁,行级锁

《MySQL中的锁机制详解之全局锁,表级锁,行级锁》MySQL锁机制通过全局、表级、行级锁控制并发,保障数据一致性与隔离性,全局锁适用于全库备份,表级锁适合读多写少场景,行级锁(InnoDB)实现高并... 目录一、锁机制基础:从并发问题到锁分类1.1 并发访问的三大问题1.2 锁的核心作用1.3 锁粒度分

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

Maven中的profiles使用及说明

《Maven中的profiles使用及说明》:本文主要介绍Maven中的profiles使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录主要用途定义 Profiles示例:多环境配置激活 Profiles示例:资源过滤示例:依赖管理总结Maven 中的

Before和BeforeClass的区别及说明

《Before和BeforeClass的区别及说明》:本文主要介绍Before和BeforeClass的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Before和BeforeClass的区别一个简单的例子当运行这个测试类时总结Before和Befor

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java