一、理论讲解

给定样本集,k均值(k-means)算法针对聚类所得簇划分最小化平方误差为:

    (1)

其中 x是簇内的均值向量。直观来看,(1)式在一定程度上刻画了簇内样本围绕簇均值向量的紧密程度,E越小,则簇内样本相似度越高。

最小化(1)式并不容易,找到它的最优解需考察样本集D所有可能的簇划分,这是一个NP难问题。因此,k均值算法采用了贪心策略,通过迭代优化来近似求解(1)式。算法流程为:


输入:样本集;聚类簇数k

过程:从D中随机选择k个样本最为初始均值向量

repeat

令 

for j = 1,2,..,m do

计算样本与各均值向量的距离:;

根据距离最近的均值向量确定 的簇标记:;

将样本划入相应的簇:

end for

for i=1,2,..,k do

计算新均值向量:

if  then

将当前均值向量更新为

else

保持当前均值不变

end if

end for

until 当前均值向量均未更新

输出:簇划分


二、案例讲解

用西瓜数据集4.0解释上述算法:

编号 密度 含糖率
1 0.697     0.460
2 0.774 0.376
3 0.634 0.264
4 0.608 0.318
5 0.556 0.215
6 0.403 0.237
7 0.481 0.149
8 0.437 0.211
9 0.666 0.091
10 0.243 0.267
11 0.245 0.057
12 0.343 0.099
13 0.639 0.161
14 0.657 0.198
15 0.360 0.370
16 0.593 0.042
17 0.719 0.103
18 0.359 0.188
19 0.339 0.241
20 0.282 0.257
21 0.748 0.232
22 0.714 0.346
23 0.483 0.312
24 0.478 0.437
25 0.525 0.369
26 0.751 0.489
27 0.532 0.472
28 0.473 0.376
29 0.725 0.445
30 0.446 0.459

假定聚类簇数为3,算法开始时随机选取三个样本做为初始均值向量,即

考察样本,它与当前均值向量的距离为:

因此将划入簇中。类似地,对样本集中的所有样本考察一遍后,可得当前簇划分为

于是从分别求出新得均值向量

更新当前均值向量后,不断重复上述过程。最终在第五轮迭代产生得结果与第四轮迭代相同,于是算法终止,得到最终的簇划分。

三、代码实现

import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
import pandas as pdxigua = pd.read_csv('D:/Machine_Learning/西瓜数据集4.0.csv', encoding='gbk')
data = xigua.values[:, [1,2]]
print(data.shape)
model = KMeans(n_clusters=3, random_state=10).fit(data) #默认为k-means++
label = model.predict(data)
print(label)
plt.scatter(data[:,0], data[:,1], c=label)
plt.show()

得到的结果如下:

机器学习算法——聚类3(k均值算法)相关推荐

  1. (学习笔记)聚类算法 - k均值算法(k-means)

    聚类之K均值算法 聚类介绍 k均值算法步骤 Python实现 参考文献 聚类介绍 聚类是一种经典的无监督学习方法. 聚类的目的是将数据集中的样本划分为若干个通常是不相交的子集,每个子集被称为簇,以此来 ...

  2. 5 模式识别-动态聚类算法(K均值算法、迭代自组织的数据分析ISOData算法)

    武汉理工大学资源 郭志强 动态聚类算法:先选取初始的中心(每个类别的初始中心),然后把所有的样本进行聚类分析,聚类完成后,就去判断这个聚类结果合不合理(满不满足设计指标要求),如果合理就输出聚类结果( ...

  3. K 均值算法-如何让数据自动分组

    公号:码农充电站pro 主页:https://codeshellme.github.io 目录 1,K 均值算法 2,K 均值算法聚类过程 3,K 均值算法的实现 4,准备数据点 5,对数据聚类 6, ...

  4. LBG算法、Lloyd算法和K均值算法

    ---------------------------------LBG算法.Lloyd算法和K-Means算法--------------------------------- LBG算法是一种矢量 ...

  5. 算法基础:k最近邻算法

    本博客所有内容均整理自<算法图解>,欢迎讨论交流~ 了解过机器学习这个概念,一定知道有一种名为k最近邻的算法,简称KNN. 对于k最近邻算法的定义,百度百科是这样给出的:K最近邻(k-Ne ...

  6. 机器学习之无监督学习-K均值聚类算法

    机器学习之无监督学习-K均值聚类算法 对于无监督学习,有两类重要的应用,一个是聚类,一个是降维.我们今天主要学习聚类中的K均值聚类. 我们先看看下图,图a为原始的数据点,我们想要对图a的数据点进行分类 ...

  7. k均值算法python实现(吴恩达机器学习作业)

    k均值算法python实现(吴恩达机器学习作业) 题目要求 数据集 读取mat文件 K-means 实现 结果 问题 题目要求 采用K均值算法对样本进行聚类. 编写K均值算法源代码,对ex7data2 ...

  8. 百面机器学习—7.K均值算法、EM算法与高斯混合模型要点总结

    文章目录 一.总结K均值算法步骤 二.如何合理选择K值? 三.K均值算法的优缺点是什么? 四.如何对K均值算法进行调优? 五.EM算法解决什么问题? 六.EM算法流程是什么? 六.EM算法能保证收敛嘛 ...

  9. 数据挖掘--“聚类”详解、K-means、K-平均值算法、K均值算法

    一. 什么是聚类 二. 聚类步骤 三. 聚类算法有哪些 1 层次聚类算法 2 划分聚类算法 3 基于密度的聚类算法 4 基于网格的聚类算法 5 基于模型的聚类算法 一. 什么是聚类? 物以类聚,人以群 ...

  10. 基于K均值算法的鸢尾花聚类实验(Sklearn实现)

    实验代码 ##### 相关库导入部分 ##### from sklearn.datasets import load_iris import pandas as pd from sklearn.pre ...

最新文章

  1. 如何访问Wizard控件里的按钮
  2. python元类单例_python面向对象和元类的理解
  3. 大数据认知计算在内容安全管控中的应用
  4. mit许可证_MIT许可证的神秘历史
  5. 【大学生】做‘心机’大学生,深度高效挖掘有效人脉
  6. 如何连接(合并)数据框(内部,外部,左侧,右侧)
  7. 主题切换时如何主动去刷新一些资源?
  8. WIN7 MBR转GPT分区实现UEFI启动
  9. Vmware workstation 16pro解锁装MacOS
  10. PCL implicit shape model 做目标识别分类
  11. 关于Flutter应用程序的AndroidX兼容性
  12. 理解 Rack 应用及其中间件
  13. 2月全球搜索引擎市场份额之争:百度战胜Google夺冠
  14. 《c语言程序设计》第一次网上作业,精编国家开放大学电大《C语言程序设计》《劳动与社会保障法》网络课形考网考作业(合集)答案...
  15. jzoj5234. 【NOIP2017模拟8.7A组】外星人的路径
  16. 达朗贝尔力挺无穷小的存在性
  17. 我国20年农药年施用量增百万吨 生产方式需反思
  18. ARM SMMUv3 architecture
  19. Tornado.Cash终于,终于发币了!TORN治理机制都在这里
  20. 目录|Java3y最全目录(2019-6-13更新)

热门文章

  1. js 百度坐标和火星坐标的转换
  2. 什么是二叉平衡树,如何插入节点,删除节点,说出关键步骤。
  3. JVM垃圾回收机制(一)
  4. JanusGraph内部架构概述
  5. NPDP产品经理认证:创新性解决问题方法(TRIZ)的工具与应用
  6. Vue开发者工具 安装
  7. python3之http.server模块
  8. 惠普服务器DL380 Gen10/Gen9宕机重启
  9. 最新微信视频强制分享系统源码+引流裂变分享
  10. win8系统本地计算机策略,win8本地安全策略怎么打开?三种方法轻松打开win8本地安全策略...