大家好,欢迎来到IT知识分享网。
什么是k-means分析?【头条@William数据分析,看原版】
想象一下,你有一堆五颜六色的糖果,你想把它们按照颜色分成几堆。k-means分析就是这么一个自动分类的过程。它会根据糖果的颜色特征,把它们分成若干个组,每个组里的糖果颜色都比较相似。
![[Python数据分析]最通俗入门Kmeans聚类分析,可视化展示附代码。插图1 [Python数据分析]最通俗入门Kmeans聚类分析,可视化展示附代码。](https://p3-sign.toutiaoimg.com/tos-cn-i-axegupay5k/0a8eb447b8c444f0ac25154bbaf65134~tplv-tt-origin-web:gif.jpeg?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1747262650&x-signature=%2FBL23%2FjCrQ1o3i4C1gHGQkMxmqs%3D)
更专业一点说,k-means分析是一种常用的聚类算法,它会将数据集中的数据点分成k个不同的簇。每个簇都有一个中心点,这个中心点就是簇中所有数据点的平均值。算法的目标是使得每个数据点都属于离它最近的中心点对应的簇,从而使得簇内的点尽可能相似,簇间的点尽可能不同。
k-means分析的应用场景
k-means分析在很多领域都有广泛的应用,比如:
- 市场细分: 将客户按照消费习惯、兴趣爱好等特征分成不同的群体,以便针对性地进行营销。
- 图像分割: 将图像分成不同的区域,以便进行目标识别或图像压缩。
- 文本聚类: 将文本文档分成不同的主题,以便进行信息检索或文本分类。
- 异常检测: 通过发现与其他数据点距离较远的点来识别异常数据。
![[Python数据分析]最通俗入门Kmeans聚类分析,可视化展示附代码。插图3 [Python数据分析]最通俗入门Kmeans聚类分析,可视化展示附代码。](https://p3-sign.toutiaoimg.com/tos-cn-i-6w9my0ksvp/eb84be2df6924be5bdf30ebe7056dbf9~tplv-tt-origin-web:gif.jpeg?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1747262650&x-signature=k4rTRs9TJRz0pHwe5r8tw8y7ebQ%3D)
![[Python数据分析]最通俗入门Kmeans聚类分析,可视化展示附代码。插图5 [Python数据分析]最通俗入门Kmeans聚类分析,可视化展示附代码。](https://p3-sign.toutiaoimg.com/tos-cn-i-6w9my0ksvp/037fa86c857649628e6044c599b56c49~tplv-tt-origin-web:gif.jpeg?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1747262650&x-signature=Qr6sTFwp1lamPEzQIlqXK%2FEL8ws%3D)
k-means分析的步骤
k-means算法的步骤如下:
- 选择k值: 首先确定要将数据分成多少个簇。这个值的选择会影响最终的聚类结果。
- 随机初始化中心点: 在数据集中随机选择k个点作为初始的簇中心。
- 分配数据点: 计算每个数据点到各个簇中心的距离,将每个数据点分配到距离它最近的簇中。
- 更新中心点: 计算每个簇中所有数据点的平均值,将平均值作为新的簇中心。
- 重复步骤3和4: 重复步骤3和4,直到簇中心不再发生明显变化或达到最大迭代次数。
![[Python数据分析]最通俗入门Kmeans聚类分析,可视化展示附代码。插图7 [Python数据分析]最通俗入门Kmeans聚类分析,可视化展示附代码。](https://p3-sign.toutiaoimg.com/tos-cn-i-6w9my0ksvp/34eda93291ed492ea1861eb8e0bc6517~tplv-tt-origin-web:gif.jpeg?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1747262650&x-signature=ojSwCTxj3YUAm5tyjJ8xR1y3J24%3D)
代码实现:
# k-means聚类分析可视化展示 # author :头条@William数据分析 # date : 2024/9/29 import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeans # 生成示例数据 np.random.seed(0) X = np.random.rand(200, 2)*10 # 进行K-means聚类 k = 5 kmeans = KMeans(n_clusters=k) kmeans.fit(X) y_kmeans = kmeans.predict(X) centers = kmeans.cluster_centers_ # 绘制聚类结果 plt.figure(figsize=(12, 6)) # 使用viridis颜色映射 colors = plt.cm.viridis(np.linspace(0, 1, k)) # 绘制原始数据点 plt.subplot(1, 2, 1) plt.scatter(X[:, 0], X[:, 1], c='gray', s=50) plt.title('Original Data Points') # 绘制聚类结果和连线 plt.subplot(1, 2, 2) for i in range(k): # 绘制簇的数据点 plt.scatter(X[y_kmeans == i, 0], X[y_kmeans == i, 1], c=colors[i], s=50, label=f'Cluster {i}') # 绘制簇中心 plt.scatter(centers[i, 0], centers[i, 1], c=colors[i], s=200, alpha=0.75, marker='X', label=f'Center {i}') # 绘制数据点与簇中心的连线 for point in X[y_kmeans == i]: plt.plot([point[0], centers[i, 0]], [point[1], centers[i, 1]], color=colors[i], linestyle='-', linewidth=0.5) plt.title(f'K-means Clustering(k={k})') plt.xlabel('Feature 1') plt.ylabel('Feature 2') plt.legend() plt.savefig(f'聚类对比(k={k}).jpg') plt.show()
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/178177.html