「AIGC算法」K-means聚类模型

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: **K-means聚类模型概览:**- 是无监督学习算法,用于数据集自动分组。- 算法步骤:初始化质心,分配数据点,更新质心,迭代直至收敛。- 关键点包括K的选择、初始化方法、收敛性和性能度量。- 优点是简单快速,适合大样本,但对初始点敏感,需预设K值,且仅适于球形簇。- 应用场景包括图像分割、市场分析、异常检测等。- 示例展示了使用scikit-learn对Iris数据集和自定义CSV数据进行聚类。

本文主要介绍K-means聚类模型原理及实践demo。

一、原理

K-means聚类是一种经典的、广泛使用的无监督学习算法,主要用于将数据集划分为多个类别或“簇”。其目标是将数据集中的每个点分配到K个聚类中心之一,使得簇内的点尽可能相似,而簇间的点尽可能不同。

K-means算法的基本步骤:

  1. 初始化:选择K个数据点作为初始聚类中心(质心)。
  2. 分配:将每个点分配到最近的聚类中心,形成K个簇。
  3. 更新:重新计算每个簇的聚类中心,通常是簇内所有点的均值。
  4. 迭代:重复步骤2和3,直到满足停止条件,如质心的变化小于某个阈值或达到预设的迭代次数。

K-means算法的关键点:

  • K的选择:K的选择通常是基于经验或使用如肘部法则(Elbow Method)等方法确定的。
  • 初始化方法:可以随机选择,也可以使用如K-means++等更高级的方法以提高性能。
  • 收敛性:K-means算法在局部最优上是收敛的,可能不会找到全局最优解,因此可能需要多次运行以获得最佳结果。
  • 性能度量:使用如轮廓系数(Silhouette Coefficient)等指标来评估聚类效果。

K-means算法的优缺点:

  • 优点

    • 简单、直观,易于实现和理解。
    • 训练速度快,适合处理大型数据集。
    • 对于球形簇表现良好。
  • 缺点

    • 对初始聚类中心敏感,可能导致局部最优解。
    • 需要预先指定K值,但K值的选择通常不是显而易见的。
    • 对噪声和异常值敏感。
    • 只能发现球形簇,对于非球形簇可能效果不佳。

K-means聚类模型的应用场景:

  • 图像分割
  • 市场细分
  • 异常检测
  • 数据压缩
  • 特征提取

K-means聚类是一种强大的工具,但需要根据具体问题和数据特性来适当使用。在实际应用中,可能需要与其他聚类算法或预处理步骤结合使用,以获得最佳效果。

二、举个栗子

使用scikit-learn中的内置数据集Iris来进行聚类。

预期效果

请添加图片描述

核心代码

# 导入必要的库
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

# 加载Iris数据集
iris = load_iris()
X = iris.data

# 选择要使用的聚类数目,这里我们选择3个聚类
k = 3

# 初始化KMeans对象
kmeans = KMeans(n_clusters=k, random_state=42)

# 执行KMeans聚类
kmeans.fit(X)

# 输出聚类中心
centroids = kmeans.cluster_centers_

# 输出每个数据点的聚类标签
labels = kmeans.labels_

# 可视化聚类结果(这里我们取前两个特征进行可视化,因为它们是二维的)
plt.scatter(X[:, 0], X[:, 1], c=labels, s=50, cmap='viridis')
plt.scatter(centroids[:, 0], centroids[:, 1], c='red', s=200, alpha=0.75, marker='X')
plt.title('K-means Clustering of Iris Dataset')
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.show()

Iris数据集是一个非常著名且被广泛使用的多变量数据集,用于测试统计算法和机器学习模型,如分类、聚类和回归。这个数据集包含了150个样本,每个样本有4个特征,这些特征描述了鸢尾花(Iris)的三个不同属(setosa, versicolor, virginica)的度量(测量)。
具体来说,Iris数据集的每个样本包括以下特征:

  1. 花萼长度(Sepal Length):花萼的最大长度,单位通常是厘米。
  2. 花萼宽度(Sepal Width):花萼的宽度,单位是厘米。
  3. 花瓣长度(Petal Length):花瓣的最大长度,单位是厘米。
  4. 花瓣宽度(Petal Width):花瓣的宽度,单位是厘米。

这些特征的测量值是浮点数,范围大致如下:

  • 花萼长度:4.3cm至7.9cm
  • 花萼宽度:2.0cm至4.4cm
  • 花瓣长度:1.0cm至6.9cm
  • 花瓣宽度:0.1cm至2.5cm

除了这些特征外,Iris数据集还包含了每个样本对应的真实类别标签,这使得它成为监督学习算法的绝佳数据集。然而,由于K-means是一种无监督学习算法,它不使用这些标签信息,而是试图根据数据的特征发现数据的内在结构。

Iris数据集由于其简单性、易于理解性以及包含有限数量的类别和特征,常被用作教学和算法测试的基准。它允许研究人员和学生在没有大量数据预处理的情况下,快速地测试和比较不同算法的性能。

三、自定义实例

使用自定义的Excel文档作为数据集进行K-means聚类

预期效果

在这里插入图片描述

核心代码

# 导入必要的库
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 加载CSV数据集
# 假设CSV文件有两列,分别是Sepal Length和Sepal Width
# 请根据你的CSV文件的实际列名进行调整
df = pd.read_csv('demoDB.csv')
X = df.values

# 选择要使用的聚类数目,这里我们选择3个聚类
k = 3

# 初始化KMeans对象
kmeans = KMeans(n_clusters=k, random_state=42)

# 执行KMeans聚类
kmeans.fit(X)

# 输出聚类中心
centroids = kmeans.cluster_centers_

# 输出每个数据点的聚类标签
labels = kmeans.labels_

# 可视化聚类结果(这里我们取前两个特征进行可视化)
plt.scatter(X[:, 0], X[:, 1], c=labels, s=50, cmap='viridis')
plt.scatter(centroids[:, 0], centroids[:, 1], c='red', s=200, alpha=0.75, marker='X')
plt.title('K-means Clustering of Custom Dataset')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

数据源

demoDB.csv
在这里插入图片描述

解决方案

K-means聚类算法可以应用于生活中的许多实际问题,尤其是在需要将数据分组或分类,但又没有明确分组标签的情况下。以下是一些例子,展示了如何使用K-means聚类算法解决实际问题:

1. 市场细分

企业经常使用K-means聚类来对客户进行细分,以便更好地了解他们的行为和偏好。通过分析客户的购买历史、年龄、性别和收入等特征,K-means可以帮助企业识别不同的客户群体,并为每个群体定制营销策略。

2. 社交网络分析

在社交网络分析中,K-means可以用来识别社区结构,即在社交网络中分组紧密连接的用户。通过分析用户的互动、兴趣和行为,K-means可以揭示社交网络中的不同社区。

3. 基因表达分析

在生物信息学中,K-means聚类可以用于基因表达数据的分析,以识别具有相似表达模式的基因。这有助于理解不同基因的功能和它们在疾病中的作用。

4. 图像压缩

K-means聚类可以用于图像压缩技术,如颜色量化。通过将图像的颜色聚类为几个代表颜色,K-means可以减少图像文件的大小,同时尽量保持其视觉质量。

5. 异常检测

在许多领域,如金融交易、网络安全或工业系统监控中,K-means可以用来检测异常或欺诈行为。通过分析正常行为的模式,K-means可以识别那些不符合常规模式的异常点。

应用实例:市场细分

假设我们想要使用K-means聚类算法对客户进行细分。以下是基于前面提供的代码模板,针对市场细分问题的示例:

# 导入必要的库
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 加载CSV数据集
# 假设CSV文件包含了客户的年龄、收入和购买频率等特征
df = pd.read_csv('customer_data.csv')
X = df.values  # 假设所有列都是数值型特征

# 选择要使用的聚类数目,这里我们选择3个聚类,根据业务需求调整
k = 3

# 初始化KMeans对象
kmeans = KMeans(n_clusters=k, random_state=42)

# 执行KMeans聚类
kmeans.fit(X)

# 输出聚类中心
centroids = kmeans.cluster_centers_

# 输出每个数据点的聚类标签
labels = kmeans.labels_

# 可视化聚类结果,这里我们取年龄和收入进行可视化
plt.figure(figsize=(10, 6))
plt.scatter(X[:, 0], X[:, 1], c=labels, s=50, cmap='viridis')  # 假设第0列是年龄,第1列是收入
plt.scatter(centroids[:, 0], centroids[:, 1], c='red', s=200, alpha=0.75, marker='X')
plt.title('K-means Clustering for Customer Segmentation')
plt.xlabel('Age')
plt.ylabel('Income')
plt.show()
相关文章
|
2月前
|
数据采集 机器学习/深度学习 算法
|
16天前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
60 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
1月前
|
存储 自然语言处理 算法
【算法精讲系列】MGTE系列模型,RAG实施中的重要模型
检索增强生成(RAG)结合检索与生成技术,利用外部知识库提升大模型的回答准确性与丰富性。RAG的关键组件包括文本表示模型和排序模型,前者计算文本向量表示,后者进行精细排序。阿里巴巴通义实验室推出的GTE-Multilingual系列模型,具备高性能、长文档支持、多语言处理及弹性向量表示等特性,显著提升了RAG系统的检索与排序效果。该系列模型已在多个数据集上展示出优越性能,并支持多语言和长文本处理,适用于各种复杂应用场景。
|
1月前
|
自然语言处理 监控 算法
【算法精讲系列】通义模型Prompt调优的实用技巧与经验分享
本文详细阐述了Prompt的设计要素,包括引导语、上下文信息等,还介绍了多种Prompt编写策略,如复杂规则拆分、关键信息冗余、使用分隔符等,旨在提高模型输出的质量和准确性。通过不断尝试、调整和优化,可逐步实现更优的Prompt设计。
|
1月前
|
算法
基于SIR模型的疫情发展趋势预测算法matlab仿真
该程序基于SIR模型预测疫情发展趋势,通过MATLAB 2022a版实现病例增长拟合分析,比较疫情防控力度。使用SIR微分方程模型拟合疫情发展过程,优化参数并求解微分方程组以预测易感者(S)、感染者(I)和移除者(R)的数量变化。![]该模型将总人群分为S、I、R三部分,通过解析或数值求解微分方程组预测疫情趋势。
|
1月前
|
机器学习/深度学习 数据采集 存储
一文读懂蒙特卡洛算法:从概率模拟到机器学习模型优化的全方位解析
蒙特卡洛方法起源于1945年科学家斯坦尼斯劳·乌拉姆对纸牌游戏中概率问题的思考,与约翰·冯·诺依曼共同奠定了该方法的理论基础。该方法通过模拟大量随机场景来近似复杂问题的解,因命名灵感源自蒙特卡洛赌场。如今,蒙特卡洛方法广泛应用于机器学习领域,尤其在超参数调优、贝叶斯滤波等方面表现出色。通过随机采样超参数空间,蒙特卡洛方法能够高效地找到优质组合,适用于处理高维度、非线性问题。本文通过实例展示了蒙特卡洛方法在估算圆周率π和优化机器学习模型中的应用,并对比了其与网格搜索方法的性能。
167 1
|
2月前
|
机器学习/深度学习 自然语言处理 负载均衡
揭秘混合专家(MoE)模型的神秘面纱:算法、系统和应用三大视角全面解析,带你领略深度学习领域的前沿技术!
【8月更文挑战第19天】在深度学习领域,混合专家(Mixture of Experts, MoE)模型通过整合多个小型专家网络的输出以实现高性能。从算法视角,MoE利用门控网络分配输入至专家网络,并通过组合机制集成输出。系统视角下,MoE需考虑并行化、通信开销及负载均衡等优化策略。在应用层面,MoE已成功应用于Google的BERT模型、Facebook的推荐系统及Microsoft的语音识别系统等多个场景。这是一种强有力的工具,能够解决复杂问题并提升效率。
57 2
|
2月前
|
人工智能 算法 数据可视化
DBSCAN密度聚类算法(理论+图解+python代码)
DBSCAN密度聚类算法(理论+图解+python代码)
|
4天前
|
传感器 算法 C语言
基于无线传感器网络的节点分簇算法matlab仿真
该程序对传感器网络进行分簇,考虑节点能量状态、拓扑位置及孤立节点等因素。相较于LEACH算法,本程序评估网络持续时间、节点死亡趋势及能量消耗。使用MATLAB 2022a版本运行,展示了节点能量管理优化及网络生命周期延长的效果。通过簇头管理和数据融合,实现了能量高效和网络可扩展性。
|
1月前
|
算法 BI Serverless
基于鱼群算法的散热片形状优化matlab仿真
本研究利用浴盆曲线模拟空隙外形,并通过鱼群算法(FSA)优化浴盆曲线参数,以获得最佳孔隙度值及对应的R值。FSA通过模拟鱼群的聚群、避障和觅食行为,实现高效全局搜索。具体步骤包括初始化鱼群、计算适应度值、更新位置及判断终止条件。最终确定散热片的最佳形状参数。仿真结果显示该方法能显著提高优化效率。相关代码使用MATLAB 2022a实现。
下一篇
无影云桌面