实验目的

(1)理解聚类算法的基本原理。
(2)掌握kmeans聚类算法的原理与实现。

实验内容

1、数据见 data.mat,编程实现 K means 算法代码 K_MeansMt,并写出详细注释。

测试代码如下:

load 'data.mat';
[u re]=K_MeansMt(data,3);  %最后产生簇标号 re
[m n]=size(re);
%最后显示聚类后的数据
figure;
hold on;
for i=1:m if re(i)==1   plot(data(i,1),data(i,2),'ro'); elseif re(i)==2plot(data(i,1),data(i,2),'go'); else plot(data(i,1),data(i,2),'bo'); end
end
grid on;

测试数据

数据见 data.mat

链接: https://pan.baidu.com/s/1vRSaZVzEI69ING6IQWJ-zA

提取码: 338y

实验原理

基本K均值算法

K均值的算法步骤

  • 首先选择K个初始质心,其中K是用户指定的参数,即所期望的簇的个数。每个点指派到最近的质心,而指派到一个质心的点集为一个簇。
  • 然后,根据指派到簇的点,更新每个簇的质心。
  • 重复指派和更新步骤,直到簇不发生变化,或等价的,直到质心不发生变化。
算法流程如下:
  • 选择 k个点作为初始质心
  • repeat:
  • 将每个点指派到最近的质心,形成 k 个簇
  • 重新计算每个簇的质心
  • until 质心不发生变化

对于邻近性函数和质心类型的某些组合,k均值总是收敛到一个解,即k均值到达一种状态,其中所有点都不会从一个簇转移到另一个,因此质心不再改变。然而,由于大部分收敛都发生在早期阶段,因此通常用较弱的条件替换算法(上述第5行)。例如,用“直到仅有1%的点改变簇”。

实验代码

%%k表示数据一共分多少类
%%data是输入的不带分类标号的数据
%%u是每一类的中心
%%clusterID是返回的带分类标号的数据function [u clusterID] = K_MeansMt(data,k)[m n] = size(data); %m是数据个数,n是数据维数maxn = zeros(1,n); %每一维最大的数minn = zeros(1,n); %每一维最小的数u = zeros(k,n); %随机初始化,最终迭代到每一类的中心位置for i=1:nmaxn(i) = max(data(:,i)); %每一维最大的数minn(i) = min(data(:,i)); %每一维最小的数for j=1:ku(j,i) = minn(i)+(maxn(i)-minn(i))*rand(); %随机初始化,保证处于[minn,maxnn]之间endendwhile 1pre_u = u; %上一次求得的质心位置coordinate_difference{m,k} = [];for i=1:m% data(i,:)-u(j,:) 为计算质心做准备for j=1:kcoordinate_difference{i,j} = data(i,:) - u(j,:);endendDist = ones(m,k)*-1;for i=1:m  %计算质心c=zeros(1,k);for j=1:kc(j) = norm(coordinate_difference{i,j});end[cmin index] = min(c);  %%哪个类的距离最小(index为类号)Dist(i,index) = norm(coordinate_difference{i,index});endfor i=1:kind = find(Dist(:,i)>=0);u(i,:) = mean(data(ind,:));endif(norm(pre_u - u)<0.1)  %不断迭代直到位置不再变化break;endendclusterID = [];for i=1:mdist = [];for j=1:kdist = [dist norm(data(i,:)-u(j,:))];  %每个点到稳定后的类中心的距离end[x index] = min(dist);  %%选择距离最小的类别号clusterID = [clusterID;index];end
end

实验结果

学如逆水行舟,不进则退

【数据挖掘】 kmeans聚类算法的原理与实现 (使用matlab)相关推荐

  1. K-Means聚类算法的原理及实现

    K-Means聚类算法的原理及实现[转] [转]http://www.aboutyun.com/thread-18178-1-1.html 问题导读: 1.如何理解K-Means算法? 2.如何寻找K ...

  2. kmeans聚类目的干什么的_零基础学习Kmeans聚类算法的原理与实现过程

    内容导入: 聚类是无监督学习的典型例子,聚类也能为企业运营中也发挥者巨大的作用,比如我们可以利用聚类对目标用户进行群体分类,把目标群体划分成几个具有明显特征区别的细分群体,从而可以在运营活动中为这些细 ...

  3. 最后一次回顾KMeans聚类算法

    最后一次回顾KMeans聚类算法. KMeans聚类算法的原理 一个数据集如下,我们希望将它分为两个簇(因为通过人的观察,它看起来像是可以分成两个簇,KMeans聚类算法的K是需要操作人员自己选择的, ...

  4. Kmeans聚类算法及其matlab源码

    本文介绍了K-means聚类算法,并注释了部分matlab实现的源码. K-means算法 K-means算法是一种硬聚类算法,根据数据到聚类中心的某种距离来作为判别该数据所属类别.K-means算法 ...

  5. matlab中kmeans聚类算法

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xholes/article/details/52911781 </div><lin ...

  6. 【数据挖掘】数据挖掘总结 ( K-Means 聚类算法 | 二维数据的 K-Means 聚类 ) ★

    文章目录 一. K-Means 聚类算法流程 二. 二维数据的 K-Means 聚类 1. 第一次迭代 2. 第二次迭代 参考博客 : [数据挖掘]聚类算法 简介 ( 基于划分的聚类方法 | 基于层次 ...

  7. 人工智能AI常见的经典K-means聚类算法原理和工作过程

    K-means聚类算法亦称K聚类均值算法,K-means算法是硬聚类算法中的一种.聚类算法是一类无监督机器学习.K-means算法是计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法.K-me ...

  8. K-means均值聚类算法的原理与实现

    转自:http://blog.csdn.net/xiaolewennofollow/article/details/45541159 K-均值聚类算法的原理与实现 聚类是一种无监督的学习,它将相似的对 ...

  9. 【机器学习】—— K-means聚类算法原理详解 以及 二维、三维数据的K-means聚类Python实现

    文章目录 一.K-Means聚类算法原理过程 1.1 K-means聚类的一些细节 1.1.1 样本x(i)x^{(i)}x(i)与中心点μkμ_kμk​距离的衡量 1.1.2 K-means聚类算法 ...

最新文章

  1. 变态最大值--nyoj题目811
  2. 数据中台建设是噱头还是黑科技?
  3. AtomicInteger原子性
  4. Ubuntu 18.x 环境下mysql创建用户并更改用户权限
  5. NIO和BIO如何影响应用程序的设计-API调用
  6. SAP CRM my task 6个roundtrip的原理讲解
  7. 实战 SQL Server 2008 数据库误删除数据的恢复 (转)
  8. [paper reading] CenterNet (Object as Points)
  9. 淡入淡出效果 (jQuery)
  10. java 高级调试_多种高级debug方法,帮你更快定位问题
  11. 【手势识别】基于matlab GUI肤色手势识别【含Matlab源码 716期】
  12. 微波雷达传感器模块,人体感应雷达应用,让智能家居更安全
  13. zcmu 5142: 巴比伦塔
  14. 天池数据竞赛docker提交操作学习
  15. 自然语言处理简介及研究方向
  16. MFC Windows 程序设计[323]之噪声特征流显示gribble2(附源码)
  17. 跨境电商独立站模式分析
  18. 两点计算机械手旋转中心
  19. “失败”的北漂十年,我真的尽力了。。。
  20. 当使用Selenium WebDriver 加载页面时出现浏览器闪退时,如何解决?

热门文章

  1. 双十一有哪些必入的数码好物?值得入手的数码好物推荐
  2. “可口可乐”的制作配方泄漏了!~囧~
  3. 【图论专题二】【网络流部分】狼和羊的故事
  4. mysql YEARWEEK(date[,mode]) 函数
  5. Mac关闭iCloud云盘,桌面和文稿文件丢失
  6. 【粉丝投稿】上海某大厂的面试题,岗位是测开(25K*16)
  7. 智能安防不谢幕 探讨重点领域发展趋势
  8. 计算机内存条价格,1g内存条的价格大全
  9. mysql slap_组合方法和SLAP
  10. 第四章 道德经第四章原文 道德经第四章译文