美赛python学习d13——K_means聚类算法
2022/2/4 11:43:01
本文主要是介绍美赛python学习d13——K_means聚类算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
K-Means算法的作用
基于数据间距离的远近,将若干离散的数据分成多个类
聚类遇到的问题
- 分成多少个类?
手肘法则:
畸变程度之和:通俗地说就是每个类内的数据与类耳朵中心点的距离平方和,再将所有的组内平方和相加
聚合系数折线图:随着类的个数增加,聚合系数(畸变程度之和)减少,总折线图像人的手肘一样,找到最像肘部的点,确定为最终的分类个数 - 每一类包括哪些元素
算法的步骤
- 选择类的个数K
- 选择K个随机点作为中心点(不一定要在原数据集中)
- 对于数据集中的每一个点,找到与其最近的中心点,作为这个中心点的类
- 找到每个类的新中心点
- 重新聚类,如聚类结果不变,则算法停止
实例
将商场客户分类,为商场确定销售策略和目标客户
import numpy as np import matplotlib.pyplot as plt import pandas as pd dataset = pd.read_csv("Mall_Customers.csv") x = dataset.iloc[:, 3:5].values # 运用手肘法确定需要的分类数 from sklearn.cluster import KMeans wcss=[] #循环可能的分类数 for i in range(1,11): kmeans=KMeans(n_clusters=i,max_iter=300,n_init=10,init='k-means++',random_state=0) kmeans.fit(x) wcss.append(kmeans.inertia_) plt.plot(range(1,11),wcss) plt.title('The Elbow Method') plt.xlabel('Number of Clusters') plt.ylabel('wcss') plt.show() # 确定分类数后进行聚类分析 kmeans=KMeans(n_clusters=5,max_iter=300,n_init=10,init='k-means++',random_state=0) y_kmeans=kmeans.fit_predict(x) #将分类结果可视化 plt.scatter(x[y_kmeans==0,0],x[y_kmeans==0,1],s=100,c='red',label='Cluster 0') plt.scatter(x[y_kmeans==1,0],x[y_kmeans==1,1],s=100,c='blue',label='Cluster 1') plt.scatter(x[y_kmeans==2,0],x[y_kmeans==2,1],s=100,c='green',label='Cluster 2') plt.scatter(x[y_kmeans==3,0],x[y_kmeans==3,1],s=100,c='cyan',label='Cluster 3') plt.scatter(x[y_kmeans==4,0],x[y_kmeans==4,1],s=100,c='magenta',label='Cluster 4') plt.scatter(kmeans.cluster_centers_[:,0],kmeans.cluster_centers_[:,1],s=300,c='yellow') plt.legend() plt.show()
K–Means算法的初值陷阱及K–Means++算法
K–Means算法选取的初值不同,分类结果也可能不同,需要决出最优的分类结果
K–Means++算法选择初始聚类中心的基本原则是:初始的聚类中心的距离要尽可能地远
K–Means++算法的步骤如下
这篇关于美赛python学习d13——K_means聚类算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-28Python编程基础教程
- 2024-12-27Python编程入门指南
- 2024-12-27Python编程基础
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南