本文主要是介绍小学生都能懂的局部和全局聚类说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
小学生都能懂的局部和全局聚类说明
- 1. 什么是聚类?
- 2. 什么是局部和全局聚类?
- 3. 为什么要同时使用局部和全局聚类?
- 4. 示例解释
- 4-1. 故事:珠子分类
- 5. 简单代码示例
- 6. 解释
1. 什么是聚类?
聚类就是把一大堆东西(数据点)分成几组,每组里面的东西都很相似。比如,我们有很多不同颜色的珠子,想把它们按照颜色分成不同的组。
2. 什么是局部和全局聚类?
- 全局聚类:把所有的珠子(数据点)整体来看,分成大致几组。就像先把珠子分成红色、蓝色和绿色三大组。
- 局部聚类:在每个大组里面再进行细分。比如,在红色组里面再分成深红、浅红、粉红等小组。
3. 为什么要同时使用局部和全局聚类?
同时使用局部和全局聚类,可以让我们更好地理解数据:
- 全局聚类:可以让我们看到数据的整体结构,比如主要有几大类。
- 局部聚类:可以让我们看到每大类里面的细节,发现更细致的模式。
4. 示例解释
4-1. 故事:珠子分类
假设我们有很多不同颜色的珠子,现在我们想把这些珠子分类。我们会先进行全局聚类,然后在每个大组里进行局部聚类。
-
全局聚类:先把珠子分成几个大类
- 我们把珠子分成三大类:红色、蓝色和绿色。
-
局部聚类:在每个大类里面再进行细分
- 在红色组里面,我们再把珠子分成深红、浅红、粉红。
- 在蓝色组里面,我们再把珠子分成深蓝、浅蓝、天蓝。
- 在绿色组里面,我们再把珠子分成深绿、浅绿、黄绿。
这样,我们既可以看到珠子的整体颜色分类(全局),又可以看到每种颜色里面的细节分类(局部)。
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. 解释
- 数据点:生成一些模拟数据,每个数据点有5个特征。
- 全局聚类:使用高斯混合模型(GMM)把数据分成三大类。
- 降维:使用UMAP把数据从5维降到2维,以便可视化。
- 局部聚类:在每个全局大类里面,再使用GMM进行细分。
- 结果展示:画出全局聚类和局部聚类的结果。
通过这个故事和示例,希望你能更好地理解局部和全局聚类的基本概念和它是如何工作的!
这篇关于小学生都能懂的局部和全局聚类说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!