K均值聚类算法(K-Means)算法及其Python代码实现

目录

一、K均值聚类算法(K-Means)算法简介

(一)聚类算法

(二)K-Means聚类算法

二、K均值聚类算法流程

三、代码实现

(一)所用库

(二)绘制散点图

(三)K-Means算法拟合

(四)聚类结果

四、结果


一、K均值聚类算法(K-Means)算法简介

(一)聚类算法

        聚类算法作为一种无监督学习方法其主要目的是将未标注的数据集中的样本划分为若干个不相干的子集,这些子集被称为(cluster)。聚类算法通过计算各个样本之间的相似性来将具有类似特征的的数据点划分到同一个簇中。其主要被应用于用户画像、广告推荐、图像分割以及降维等方向。

(二)K-Means聚类算法

        K-means聚类算法是一种最简单的无监督学习算法,属于基于划分的聚类算法,是数据挖掘的十大经典算法之一。算法的主要思想是利用距离作为两个数据点相似性的评价指标,把得到紧凑且独立的簇作为最终目标。

        K近邻算法(K nearest neighbor KNN)算法与K-Means算法相近,都是以距离为评价指标的算法,不同的是KNN算法是监督学习,其训练集有明确标注,对测试点的预测是根据距其最近的K个已标注点进行的(多数表决原则),而K-means算法中的K是指预先设定K个簇

二、K均值聚类算法流程

        ①选定簇数量K的值;

        ②在样本数据集中选取K个点作为初始质心,即\left \{ u_{1},u_{2}, ...,u_{k}\right \};

        ③计算训练集D中每个样本x_{i}到每个质心u_{j}的欧式距离l_{i}

        ④若l_{i}的距离最小,则将样本x_{i}标记为簇G_{j}中的样本;

        ⑤利用欧氏距离最小的原则将所有的样本数据点分配到不同的簇后,计算新的质心;

        ⑥如果质心更新了,则跳转到③,否则算法结束,输出结果。(样本数过多时可以设置最大迭代次数)

图2-1:K-Means算法流程

三、代码实现

(一)所用库

from sklearn.datasets._samples_generator import make_blobs #生成样本数据
from matplotlib import pyplot as plt #可视化
from sklearn.cluster import KMeans #聚类

(二)绘制散点图

X,Y=make_blobs(n_samples=100,centers=5)
plt.figure(figsize=(8,5),dpi=144)
plt.scatter(X[:,0],X[:,1],s=50,edgecolors='k')
plt.show()

(三)K-Means算法拟合

kmean=KMeans(3)#设置K值为3
kmean.fit(X)

(四)聚类结果

labels=kmean.labels_
centers=kmean.cluster_centers_
fig=plt.figure(figsize=(8,5),dpi=144)
plt.scatter(X[:,0],X[:,1],c=labels.astype(int),s=50,edgecolors='k')
plt.scatter(centers[:,0],centers[:,1],c='r',s=100,marker='*')
plt.show()

四、结果

图4-1 :未标注散点图

图4-2: 聚类结果散点图

  • 20
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值