机器学习之K-means聚类算法

目录

K-means聚类算法

算法流程

优点

缺点

随机点聚类

人脸聚类

旋转物体聚类


K-means聚类算法

K-means聚类算法是一种无监督的学习方法,通过对样本数据进行分组来发现数据内在的结构。K-means的基本思想是将n个实例分成k个簇,使得同一簇内数据相似度高而不同簇之间数据相似度低。

算法流程

K-means的算法过程如下:

优点

K-means优点:

①是解决聚类问题的一种经典算法,简单、快速。

②对处理大数据集,该算法保持可伸缩性和高效率。

③当簇近似为高斯分布时,它的效果比较好。

缺点

K-means缺点:

①在簇的平均值可被定义的情况下才能使用,可能不适用于某些应用。

②必须事先给出要生成的簇的数目k。

③对初值敏感,对于不同的初始值,可能会导致不同的结果。

④不适合发现非凸形状的簇或者大小差别很大的簇。

⑤对噪声和孤立点数据敏感。

随机点聚类

代码中的变量musigma定义了两个高斯分布的均值和标准差,用来生成三个不同的类别的样本数据。然后将这些样本数据合并在一个矩阵sample中。

接下来,代码定义了K值为3,表示将样本数据聚成3个类别。classSampleNumber表示每个类别的样本数量为100。color矩阵用于存储样本点的颜色信息,classColor定义了三个类别的颜色。

class向量用于存储每个样本点的类别标签,初始值为0。classCenter矩阵定义了初始的类别中心点的坐标。

之后的代码通过迭代更新类别中心点的坐标,使得样本点与其所属类别中心点的距离最小。具体的更新过程为:对每个样本点,计算其与三个类别中心点的距离,将其归到距离最近的类别,并更新该类别的样本数和下一次迭代的类别中心点坐标。

每次迭代完成后,代码通过绘制散点图展示了聚类结果。其中,三个类别的中心点使用实心圆点表示,不同类别的样本点使用不同符号和颜色进行标记。

代码最终会生成四张图,分别展示初始状态和三次迭代后的聚类结果。

mu=[0 0];
sigma=[1 1];
class1=mvnrnd(mu,sigma,10);
mu=[5 5];
class2=mvnrnd(mu,sigma,10);
mu=[10 10];
class3=mvnrnd(mu,sigma,10);
sample=[class1;class2;class3];k=3;
sampleNumberAll=size(sample,1);
classSampleNumber=100;
color=zeros(sampleNumberAll,3);
classColor=[[255 0 0];[0 255 0];[0 0 255]];
class=zeros(1,k);
classCenter=[2 8;3 9;4 10];
figure(1);
hold on;
scatter(classCenter(:,1),classCenter(:,2),[],classColor,'filled');
scatter(sample(:,1),sample(:,2),'m');
for iterator=1:3nextCenter=[0 0;0 0;0 0];classNumber=[0 0 0];for i=1:sampleNumberAlldistances=zeros(1,k);for j=1:kdistances(j)=pdist2(sample(i,:),classCenter(j,:));end[~,index]=sort(distances);class(i)=index(1);classNumber(class(i))=classNumber(class(i))+1;nextCenter(class(i),:)=nextCenter(class(i),:)+sample(i,:);endfor i=1:kif classNumber(i)~=0classCenter(i,:)=nextCenter(i,:)/classNumber(i);endendfigure(iterator+1);scatter(classCenter(:,1),classCenter(:,2),[],classColor,'filled');hold on;for i=1:sampleNumberAllif class(i)==1scatter(sample(i,1),sample(i,2),'r','s');elseif class(i)==2scatter(sample(i,1),sample(i,2),'g','d');elsescatter(sample(i,1),sample(i,2),'b','h');endend
end

人脸聚类

代码和随机生成点的差不多,不过有一个地方我研究了很久,那就是如何给每个点配上相应的照片,我之前都是一张张手贴上去的,这次努力研究了一把,终于实现自动配图。

figure(2);
scatter(classCenter(:,1),classCenter(:,2),[],classColor,'filled');
hold on;
for i=1:sampleNumberAllif class(i)==1scatter(sample(i,1),sample(i,2),'r','s','filled');elseif class(i)==2scatter(sample(i,1),sample(i,2),'g','d','filled');endhold on;picture=pictures(:,i);picture=reshape(picture,128,128);picture=imrotate(picture,180);colormap(gray(256));image('CData',picture,'XData',[sample(i,1)-150 sample(i,1)+150],'YData',[sample(i,2)-500+700 sample(i,2)+500+700]);
end

旋转物体聚类

实际上你也可以看出来,k-means适合聚一堆的凸形状的,像下面这种流形和条形的不凸的就没有办法聚的好。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/1588.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

井盖异动监测传感器:井盖的安全守护者

随着城市化进程的不断加速,城市道路、人行道上的井盖扮演着重要的角色。然而,由于各种因素,如车辆冲击、材料老化等,井盖常常会出现异动情况,井盖异动不仅对行车和行人的安全构成威胁,还给城市基础设施的维…

机器学习之PCA算法

目录 PCA算法 PCA目标 PCA原理推导 基于最大可分性推导 基于最近重构误差推导 PCA算法流程 PCA优点 PCA缺点 基于PCA的人脸识别 PCA算法 PCA,即主成分分析(Principal Component Analysis),是一种常用的降维技术&#x…

0-1BFS 双端队列 广度优先搜索

一. BFS及0-1BFS的简单介绍 深度优先搜索DFS和广度优先搜索BFS是经常使用的搜索算法,在各类题目中都有广泛的应用。 深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。其过程简要来说…

【DBA专属】mysql-------->>>MMM高可用集群架构

Mysql---MMM高可用集群架构 目录 MMM安装部署 环境配置:(所有主机配置) 1、主机信息 2、关闭防火墙 3、同步时区 4、配置主机解析文件 5、配置ssh免密登录 6、所有机器安装epel源 数据库配置: 【所有数据库均做的配置】…

【探索 Kubernetes|作业管理篇 系列 9】Pod 的服务对象

前言 大家好,我是秋意零。 在上一篇中,我们介绍了 Pod 的生命周期以及区分 Pod 字段的层次级别,相信你对此有了充分的认识。 今天,我们还会接着以 Pod 展开,说说它的 “服务对象”,一听就知道是对 Pod 提…

Vuforia专题:设置AR摄像头自动对焦

Vuforia专题:设置AR摄像头自动对焦 一,前言 在之前使用的时候,如果没有设置自动对焦可以发现,摄像头画面极其模糊。并导致识别的结果不是很理想 加上自动对焦后的效果如下: 二、具体步骤 1、ARCamera添加脚本Cam…

嵌入式中C++开发的基本操作方法

第一:面向对象 1、配置环境 虚拟机上网(ping www.baidu.com)sudo apt-get update //更新软件包sudo apt-get install -f //更新软件依赖sudo apt-get install g //安装c编译器 2、C发展 c98,第一版 c03,c11,c17 3、为什么学习C 4、面向对…

计算机网络——网络层

序言 计算机网络中的网络层在当今的社会起到了什么作用? 现在的互联网通信,远程办公和远程教育,电子商务和在线服务,信息共享和社交媒体,物联网和智能家居都是通过网络层才能使用的。它连接了人们、设备和信息&#xf…

MyBatis 执行流程详解及示例代码

导言: MyBatis 是一个优秀的持久层框架,它简化了数据库操作的开发过程。本文将详细介绍 MyBatis 的执行流程,并提供相应的示例代码,帮助读者更好地理解和应用 MyBatis。 1. 创建 SqlSessionFactoryBuilder 对象 在 MyBatis 中&…

【SpringCloud学习笔记】gateway网关

gateway网关 核心概念: 路由(route):路由信息由 D、目标 RI、一组断言和一组过滤器组成。如果断言路由为真,则说明请求的 URI 和配配断言(predicate): Java8 中的断言函数&#xf…

总结911

目标规划: 月目标:6月(线性代数强化9讲,考研核心词过三遍) 周目标:线性代数强化5讲,英语背3篇文章并回诵,检测 每日规划 今日已做 1.回诵之前文章 2.每日长难句,句句…

人工智能(1):机器学习工作流程

1 什么是机器学习 机器学习是从数据中自动分析获得模型,并利用模型对未知数据进行预测。 2 机器学习工作流程 机器学习工作流程总结 1 获取数据 2 数据基本处理 3 特征工程 4 机器学习(模型训练) 5 模型评估 结果达到要求,上线服务没有达到要求&a…