【Sklearn-驯化】一文分析教你如何使用k-means进行数据聚类

【Sklearn-驯化】一文分析教你如何使用k-means进行数据聚类

 
本次修炼方法请往下查看
在这里插入图片描述

🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地!
🎇 免费获取相关内容文档关注:微信公众号,发送 pandas 即可获取
🎇 相关内容视频讲解 B站

🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机器、深度学习等各类应用算法原理和项目实战经验

🔧 技术专长: 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务,助力多位小伙伴在学习、求职、工作上少走弯路、提高效率,近一年好评率100%

📝 博客风采: 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


下滑查看解决方法

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  

🎯 1. 基本介绍

  K-Means是一种流行的聚类算法,用于将数据点划分为K个簇。它通过最小化簇内数据点与簇中心的距离来进行聚类,目的是使得簇内的点尽可能相似,簇间的点尽可能不同。

💡 2. 公式推导

  K-Means算法的目标函数是最小化每个数据点到其簇中心的距离的平方和,称为簇内平方和(Within-Cluster Sum of Squares, WCSS):
J = ∑ i = 1 k ∑ x 属于 s i ∣ ∣ x − u i ∣ ∣ 2 J=\sum_{i=1}^{k}\sum_{x属于s_i}||x-u_i||^2 J=i=1kx属于si∣∣xui2

  其中:

k 是簇的数量。
S_i 是第 i 个簇中的所有点的集合。
μ_i 是簇 i 的中心点(即该簇所有点的均值)。
||x - μ_i|| 是点 x 到簇中心 μ_i 的欧氏距离。

🔍 3. 代码实践

  为了更加清晰的了解kmeans算法的运行过程,我们通过sklearn中的database包来创建相关的数据,具体的流程如下所示:

3.1 数据准备

  具体的数据准备如下所示:

from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

# 生成模拟数据
X, y = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

3.2 模型训练过程

  我们对上述的数据进行模型的训练和预测,具体的代码如下所示:

# 创建KMeans对象
kmeans = KMeans(n_clusters=4)

# 训练模型
kmeans.fit(X)
# 聚类标签
predicted_labels = kmeans.labels_
# 计算轮廓系数
silhouette_avg = silhouette_score(X, predicted_labels)

print(f"轮廓系数: {silhouette_avg:.2f}")

3.2 可视化聚类结果

  为了更加清晰的看出聚类的效果,我们将聚类的结果进行可视化,具体的代码如下所示:

import matplotlib.pyplot as plt

# 绘制聚类结果
plt.scatter(X[:, 0], X[:, 1], c=predicted_labels, cmap='viridis', marker='o')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75)
plt.show()

🔍 4. 注意事项

  • K-Means算法对初始簇中心的选择敏感,可能会导致局部最优解。可以使用n_init参数多次初始化来提高找到全局最优解的概率。
  • K-Means假设簇是凸形的、相似大小的,并且簇内是球形的。如果数据不满足这些假设,聚类效果可能不佳。
  • 选择合适的簇数量k是关键。可以使用肘部法则(Elbow Method)或轮廓系数来辅助决定。

🔍 5. 总结

  K-Means是一种简单而有效的聚类算法,广泛应用于数据探索和分析。scikit-learn提供了易于使用的K-Means实现。通过本博客的代码示例,我们学习了如何创建K-Means模型,进行训练、聚类标签分配和评估。希望这篇博客能够帮助你更好地理解K-Means模型,并将其应用于实际的聚类任务中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法驯化师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值