机器学习算法——聚类3(k均值算法)
一、理论讲解
给定样本集,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均值算法)相关推荐
- (学习笔记)聚类算法 - k均值算法(k-means)
聚类之K均值算法 聚类介绍 k均值算法步骤 Python实现 参考文献 聚类介绍 聚类是一种经典的无监督学习方法. 聚类的目的是将数据集中的样本划分为若干个通常是不相交的子集,每个子集被称为簇,以此来 ...
- 5 模式识别-动态聚类算法(K均值算法、迭代自组织的数据分析ISOData算法)
武汉理工大学资源 郭志强 动态聚类算法:先选取初始的中心(每个类别的初始中心),然后把所有的样本进行聚类分析,聚类完成后,就去判断这个聚类结果合不合理(满不满足设计指标要求),如果合理就输出聚类结果( ...
- K 均值算法-如何让数据自动分组
公号:码农充电站pro 主页:https://codeshellme.github.io 目录 1,K 均值算法 2,K 均值算法聚类过程 3,K 均值算法的实现 4,准备数据点 5,对数据聚类 6, ...
- LBG算法、Lloyd算法和K均值算法
---------------------------------LBG算法.Lloyd算法和K-Means算法--------------------------------- LBG算法是一种矢量 ...
- 算法基础:k最近邻算法
本博客所有内容均整理自<算法图解>,欢迎讨论交流~ 了解过机器学习这个概念,一定知道有一种名为k最近邻的算法,简称KNN. 对于k最近邻算法的定义,百度百科是这样给出的:K最近邻(k-Ne ...
- 机器学习之无监督学习-K均值聚类算法
机器学习之无监督学习-K均值聚类算法 对于无监督学习,有两类重要的应用,一个是聚类,一个是降维.我们今天主要学习聚类中的K均值聚类. 我们先看看下图,图a为原始的数据点,我们想要对图a的数据点进行分类 ...
- k均值算法python实现(吴恩达机器学习作业)
k均值算法python实现(吴恩达机器学习作业) 题目要求 数据集 读取mat文件 K-means 实现 结果 问题 题目要求 采用K均值算法对样本进行聚类. 编写K均值算法源代码,对ex7data2 ...
- 百面机器学习—7.K均值算法、EM算法与高斯混合模型要点总结
文章目录 一.总结K均值算法步骤 二.如何合理选择K值? 三.K均值算法的优缺点是什么? 四.如何对K均值算法进行调优? 五.EM算法解决什么问题? 六.EM算法流程是什么? 六.EM算法能保证收敛嘛 ...
- 数据挖掘--“聚类”详解、K-means、K-平均值算法、K均值算法
一. 什么是聚类 二. 聚类步骤 三. 聚类算法有哪些 1 层次聚类算法 2 划分聚类算法 3 基于密度的聚类算法 4 基于网格的聚类算法 5 基于模型的聚类算法 一. 什么是聚类? 物以类聚,人以群 ...
- 基于K均值算法的鸢尾花聚类实验(Sklearn实现)
实验代码 ##### 相关库导入部分 ##### from sklearn.datasets import load_iris import pandas as pd from sklearn.pre ...
最新文章
- 如何访问Wizard控件里的按钮
- python元类单例_python面向对象和元类的理解
- 大数据认知计算在内容安全管控中的应用
- mit许可证_MIT许可证的神秘历史
- 【大学生】做‘心机’大学生,深度高效挖掘有效人脉
- 如何连接(合并)数据框(内部,外部,左侧,右侧)
- 主题切换时如何主动去刷新一些资源?
- WIN7 MBR转GPT分区实现UEFI启动
- Vmware workstation 16pro解锁装MacOS
- PCL implicit shape model 做目标识别分类
- 关于Flutter应用程序的AndroidX兼容性
- 理解 Rack 应用及其中间件
- 2月全球搜索引擎市场份额之争:百度战胜Google夺冠
- 《c语言程序设计》第一次网上作业,精编国家开放大学电大《C语言程序设计》《劳动与社会保障法》网络课形考网考作业(合集)答案...
- jzoj5234. 【NOIP2017模拟8.7A组】外星人的路径
- 达朗贝尔力挺无穷小的存在性
- 我国20年农药年施用量增百万吨 生产方式需反思
- ARM SMMUv3 architecture
- Tornado.Cash终于,终于发币了!TORN治理机制都在这里
- 目录|Java3y最全目录(2019-6-13更新)