n = 300;
c = 3; % 聚成三类
t = randperm(n); % 将一列序号随机打乱
x = [randn(1,n/3)-2 randn(1,n/3) randn(1,n/3)+2;randn(1,n/3) randn(1,n/3)+4 randn(1,n/3)]'; % 初始化随机变量的值
m=x(t(1:c),:); %随机选择三个簇中心
x2=sum(x.^2,2);
s0(1:c,1)=inf; for o=1:1000 %循环跟新m2=sum(m.^2,2);[d,y]=min(repmat(m2,1,n)+repmat(x2',c,1)-2*m*x'); % 跟新样本对应的簇标签for t=1:c m(t,:)=mean(x(y==t,:));%跟新簇中心s(t,1)=mean(d(y==t)); %计算收敛精度endif norm(s-s0)<0.001,break,ends0=s;
endfigure(1);
clf;
hold on;
plot(x(y==1,1),x(y==1,2),'bo');
plot(x(y==2,1),x(y==2,2),'rx');
plot(x(y==3,1),x(y==3,2),'gv');
n = 300;:定义了样本数量为300。c = 3;  定义了聚类的类别数为3。t = randperm(n);:生成了一个1到n的随机排列作为样本索引。x = [randn(1,n/3)-2 randn(1,n/3) randn(1,n/3)+2; randn(1,n/3) randn(1,n/3)+4 randn(1,n/3)]';:生成了一个初始化的随机变量矩阵x。这个矩阵有n行和2列,分为3个部分。每个部分包含n/3个样本。这些样本是通过randn函数生成的服从标准正态分布的随机数,并通过加减常数来控制它们的分布。m=x(t(1:c),:);:根据随机打乱后的样本索引t,选择前c个样本作为初始的聚类中心,存储在矩阵m中。x2=sum(x.^2,2);:计算每个样本的平方和,得到一个n×1的向量x2。这个向量将在后续的距离计算中使用。s0(1:c,1)=inf;:初始化前一次迭代的聚类中心距离s0为无穷大。这样做是为了确保在第一次迭代时肯定会进入循环。for o=1:1000:开始进行迭代,最多进行1000次迭代。m2=sum(m.^2,2);:计算聚类中心的平方和,得到一个c×1的向量m2。这个向量将在后续的距离计算中使用。[d,y]=min(repmat(m2,1,n)+repmat(x2',c,1)-2*m*x');:计算每个样本到聚类中心的距离,并将最近的聚类中心的索引存储在向量y中。同时,将距离矩阵存储在矩阵d中。这里使用了矩阵运算来加速计算。for t=1:c:对于每个聚类中心。m(t,:)=mean(x(y==t,:));:计算属于当前聚类中心的样本的均值,并将其作为新的聚类中心。s(t,1)=mean(d(y==t));:计算属于当前聚类中心的样本的平均距离,并将其作为当前迭代的聚类中心距离。if norm(s-s0)<0.001,break,end:如果当前迭代的聚类中心距离与前一次迭代的聚类中心距离的差的范数小于0.001,则跳出迭代循环。s0=s;:将当前迭代的聚类中心距离保存在s0中,为下一次迭代做准备。end:结束内部循环。figure(1);:创建一个图形窗口,编号为1。clf;:清空当前图形窗口的内容。hold on;:在绘图时保持当前图形窗口的内容,方便多次绘制。plot(x(y==1,1),x(y==1,2),'bo');:绘制第一类样本的散点图,x坐标为x中属于第一类的样本的第一列,y坐标为x中属于第一类的样本的第二列,绘制蓝色圆点。plot(x(y==2,1),x(y==2,2),'rx');:绘制第二类样本的散点图,同上,绘制红色叉点。plot(x(y==3,1),x(y==3,2),'gv');:绘制第三类样本的散点图,同上,绘制绿色方形点。这段代码的目标是通过迭代更新聚类中心,将样本分为3个簇,并将每个样本根据其所属簇的标签进行可视化。

图解机器学习第四部分第十四章——K均值聚类算法相关推荐

  1. 机器学习实战-61:K均值聚类算法(K-Means)

    K均值聚类算法(K-Means) 深度学习原理与实践(开源图书)-总目录,建议收藏,告别碎片阅读! 机器学习分为监督学习.无监督学习和半监督学习(强化学习).无监督学习最常应用的场景是聚类(clust ...

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

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

  3. 【数据挖掘】十大算法之K-Means K均值聚类算法

    目录 1 Kmeans步骤 2 kmeans损失函数 3 优缺点 4 如何调优和改进 5 改进的算法 1 Kmeans步骤 (1)数据预处理,如归一化.离群点处理等 (2)随机选取K个簇中心,记为u1 ...

  4. 机器学习-k均值聚类算法-k_means原理14

    非监督学习

  5. 机器学习实验 - K均值聚类

    目录 一.报告摘要 1.1 实验要求 1.2 实验思路 1.3 实验结论 二.实验内容 2.1 方法介绍 2.2 实验细节 2.2.1 实验环境 2.2.2 实验过程 2.2.3 实验与理论内容的不同 ...

  6. 机器学习(三)k均值聚类

    k均值聚类 原文地址:http://blog.csdn.net/hjimce/article/details/45200985 作者:hjimce 高斯混合模型和k均值聚类是聚类算法中的两种比较常用而 ...

  7. 机器学习之K-Means(k均值)算法

    1 K-Means介绍 K-Means算法又称K均值算法,属于聚类(clustering)算法的一种,是应用最广泛的聚类算法之一.所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇, ...

  8. 机器学习算法之 K 均值聚类

    机器学习算法之 K 均值聚类 本文我们来学习一下另一种经常听到的机器学习算法-- K 均值聚类. 这个名字确实跟"K 近邻"有些相像,但是要明确的是,"K 近邻" ...

  9. 机器学习--K均值聚类

    机器学习--聚类 一.无监督学习 二.KMeans聚类 2.1 概览 2.2 理论介绍 2.2.1 模型 2.2.2 策略 2.2.3 算法 2.3 案例讲解 2.4 Python实现 2.4.1 导 ...

最新文章

  1. ionic中使用Cordova Uglify 压缩js与css
  2. 差异表达基因-火山图和聚类图解释
  3. JavaScript 中对象的属性类型
  4. 初中计算机学情分析,初中信息技术教学计划
  5. linux系统中变量,Linux系统中的环境变量知识详解
  6. python与access选哪个_从Python连接到Access
  7. linux安装php支持redis拓展
  8. BZOJ3638|CodeForces 280D k-Maximum Subsequence Sum
  9. python dict相加_Python合并字典操作时同key的value应该如何相加
  10. vue axios 接口封装
  11. hive表加载数据的不同方式
  12. mysql不安装在c_MySQL 的模块不能安装的解决方法
  13. 不要以为写写代码就是计算机科学
  14. 【操作系统】斐讯K2 PSG1218 A2 版本22.6.512.75 刷breed+老毛子固件
  15. 1148:连续出现的字符
  16. 微波射频网将举办“微带传输线无源交调测试可重复性”在线技术讲座
  17. python找不到指定模块之几种可能的解决办法:
  18. linux ccid驱动下载,ccid驱动支持
  19. 止疼药-盐酸羟考酮缓释片//2021-2-20
  20. bigemap大地图软件功能对比分析

热门文章

  1. win7都能用的win+R 运行命令大全
  2. 物联网时代的嵌入式开发平台
  3. 基于RF算法的侧信道攻击方法研究
  4. 2019年中国区块链发展形势展望
  5. 054_er_xiang_yi_tu_sou_tu
  6. quartusⅡ的原理仿真及代码仿真
  7. Windows server 2012 安装 .NET Core 2.2.8 和 vc2015 杂谈
  8. 飞思卡尔S12XE系列---基础GPIO操作
  9. 微信openid和unionid区别
  10. 深入浅出谈谈IP协议