%%%K-meansclear all
clc%% 构造随机数据
mu1=[0 0 0];
S1=[0.23 0 0;0 0.87 0;0 0 0.56];
data1=mvnrnd(mu1,S1,100);   %产生高斯分布数据%%第二类数据
mu2=[1.25 1.25 1.25];
S2=[0.23 0 0;0 0.87 0;0 0 0.56];
data2=mvnrnd(mu2,S2,100);%第三个类数据
mu3=[-1.25 1.25 -1.25];
S3=[0.23 0 0;0 0.87 0;0 0 0.56];
data3=mvnrnd(mu3,S3,100);mu4=[1.5 1.5 1.5];
S4=[0.23 0 0;0 0.87 0;0 0 0.56];
data4 =mvnrnd(mu4,S4,100);%显示数据
figure;
plot3(data1(:,1),data1(:,2),data1(:,3),'+');
title('原始数据');
hold on
plot3(data2(:,1),data2(:,2),data2(:,3),'r+');
plot3(data3(:,1),data3(:,2),data3(:,3),'g+');
plot3(data4(:,1),data4(:,2),data3(:,3),'y+');
grid on;data=[data1;data2;data3;data4];
[row,col] = size(data);
K = 4;
max_iter = 300;%%迭代次数
min_impro = 0.1;%%%%最小步长
display = 1;%%%判定条件
center = zeros(K,col);
U = zeros(K,col);
%% 初始化聚类中心
mi = zeros(col,1);
ma = zeros(col,1);
for i = 1:colmi(i,1) = min(data(:,i));ma(i,1) = max(data(:,i));center(:,i) = ma(i,1) - (ma(i,1) - mi(i,1)) * rand(K,1);
end%% 开始迭代
for o = 1:max_iter%% 计算欧氏距离,用norm函数for i = 1:Kdist{i} = [];for j = 1:rowdist{i} = [dist{i};data(j,:) - center(i,:)];endendminDis = zeros(row,K);for i = 1:rowtem = [];for j = 1:Ktem = [tem norm(dist{j}(i,:))];end[nmin,index] = min(tem);minDis(i,index) = norm(dist{index}(i,:));end%% 更新聚类中心for i = 1:Kfor j = 1:colU(i,j) = sum(minDis(:,i).*data(:,j)) / sum(minDis(:,i));endend%% 判定if displayendif o >1,if max(abs(U - center)) < min_impro;break;elsecenter = U;endend
end%% 返回所属的类别class = [];for i = 1:rowdist = [];for j = 1:Kdist = [dist norm(data(i,:) - U(j,:))];end[nmin,index] = min(dist);class = [class;data(i,:) index];end%% 显示最后结果
[m,n] = size(class);
figure;
title('聚类结果');
hold on;
for i=1:row if class(i,4)==1   plot3(class(i,1),class(i,2),class(i,3),'ro'); elseif class(i,4)==2plot3(class(i,1),class(i,2),class(i,3),'go'); elseif class(i,4) == 3plot3(class(i,1),class(i,2),class(i,3),'bo'); elseplot3(class(i,1),class(i,2),class(i,3),'yo'); end
end
grid on;

K均值算法matlab代码实现相关推荐

  1. K均值算法matlab实现

    这个算法可以分两步实现,一个是function [d] = dist(x,y)其中x和y分别代表一个向量:另外一个是function [y,C] = Kmeans( D,k )其中y为聚类中心分类集合 ...

  2. k均值算法原理详细讲解以及matlab代码实现

    有研究生物电信号处理和机器学习的欢迎加我qq429500506共同交流学习进步. 最近更新文章的频率太低了,主要原因是不想为了发文章而发文章,想潜心研究,写好文章,顺便想说一句开源万岁,最近一个月虽然 ...

  3. 我的K均值算法的matlab实现

    这是我的第一篇博客: K-Means算法过程,略: 这是一次课程的任务2333,是利用所学K-means聚类分析方法,对iris数据集进行聚类分析,并利用已知的样本类别标 签进行聚类分析评价: 我的K ...

  4. python图片压缩算法_使用K均值算法进行图片压缩

    K均值算法 上一期介绍了机器学习中的监督式学习,并用了离散回归与神经网络模型算法来解决手写数字的识别问题.今天我们介绍一种机器学习中的非监督式学习算法--K均值算法. 所谓非监督式学习,是一种与监督式 ...

  5. dijkstra算法matlab代码_头脑风暴优化(BSO)算法(附MATLAB代码)

    BSO讲解https://www.zhihu.com/video/1252605855767736320 B站搜索:随心390,同步观看视频 各位小伙伴可在闲鱼搜索 优化算法交流地,即可搜索到官方闲鱼 ...

  6. k-modes算法mysql_第十一章 K-Means(K均值)算法模型实现(中)

    python2 代码实现: from numpy import * import numpy def loadDataSet(fileName): #general function to parse ...

  7. k均值算法 二分k均值算法_如何获得K均值算法面试问题

    k均值算法 二分k均值算法 数据科学访谈 (Data Science Interviews) KMeans is one of the most common and important cluste ...

  8. k均值算法 二分k均值算法_使用K均值对加勒比珊瑚礁进行分类

    k均值算法 二分k均值算法 Have you ever seen a Caribbean reef? Well if you haven't, prepare yourself. 您见过加勒比礁吗? ...

  9. python实现k均值算法_python实现kMeans算法

    聚类是一种无监督的学习,将相似的对象放到同一簇中,有点像是全自动分类,簇内的对象越相似,簇间的对象差别越大,则聚类效果越好. 1.k均值聚类算法 k均值聚类将数据分为k个簇,每个簇通过其质心,即簇中所 ...

最新文章

  1. eclipse中Tomcat v8.0 Server at localhost failed to start解决以及安装方法
  2. Ubuntu批量修改文件名后缀
  3. 【Alpha】开发日志Day4-0715
  4. oracle10官网下载安装,oracle11g安装(win10)下载安装
  5. 快速删除数据库中所有表中的数据
  6. jeecg自定义按钮使用exp属性不起作用
  7. 5G大幕已启 将如何改变社会?
  8. java操作sql数据库_java-JDBC连接数据库并进行SQL操作
  9. android学习笔记---37_采用广播接收者实现系统短信操作_获取短信_收发短信等
  10. ChinaJoy是什么
  11. Python开发者必知的13个Python GUI库
  12. 小米便签源码分析——tool包
  13. android高仿ios控制中心,仿 iOS 11原生控制中心
  14. cutoff shader
  15. 怎么做视频特效?不妨试试抖音特效创作平台
  16. 港美股交易系统开发框架构造简述篇
  17. MSDC 4.3 接口规范(3)
  18. OWASP的s-sdlc项目优秀分享
  19. Python 中的正则表达式全部用法速查
  20. 电视端虚拟鼠标的设计

热门文章

  1. DMG MORI AKTIENGESELLSCHAFT
  2. 龙的建模竟然能建成这个样子:向大佬低头
  3. (九)2005年我的第一次软件行业创业,烧掉30万、2年时间打水漂的惨痛教训
  4. shell和linux的认识
  5. 弹性计算双周刊 第7期
  6. UDA机器学习基础—交叉验证
  7. 学习计划2016//12/12
  8. 搭建docker私有仓库
  9. Java HashMap的死循环问题
  10. 外网访问XAMPP失败 解决方案