matlab iris kmeans,K-means算法用于Iris数据集
首先是K-menas算法函数,这里使用3维形式,尽管Iris数据集有4维,但是考虑到4维数据无法绘制图像,所以在这里选择三维。
function [ resX,resY,resZ,recordd] = Kmeans( x,y,z,k )
%resX 存储结果
%resY
%resZ
%centerX 存储聚类中心点
%centerY
%centerZ
%oldcenterX 存储上一次的聚类中心,用于判断是否达到结束循环的条件
%oldcenterY
%oldcenterZ
%recordd 记录每个聚类中的元素个数
resX=zeros(k,length(x));
resY=zeros(k,length(y));
resZ=zeros(k,length(x));
centerX=zeros(1,k);
centerY=zeros(1,k);
centerZ=zeros(1,k);
oldcenterX=zeros(1,k);
oldcenterY=zeros(1,k);
oldcenterZ=zeros(1,k);
recordd=zeros(1,k);
for i=1:k
%生成随机聚类中心
centerX(i)=x(round(rand()*length(x)));
centerY(i)=y(round(rand()*length(x)));
centerZ(i)=z(round(rand()*length(x)));
%保证聚类中心不能够重复
if(i > 1 && centerX(i) == centerX(i-1) && centerY(i) == centerY(i-1)&¢erZ(i) == centerZ(i-1))
i=i-1;
end
end
while 1
resX(:)=0; %将每个聚类的点清空,用新的聚类中心重新进行聚类
resY(:)=0;
resZ(:)=0;
recordd(:)=0;
for i=1:length(x)
%给每一个点分类
belong=1;
for j=2:k
%采用欧式距离,寻找到当前点最近的聚类中心
if(power((x(i)-centerX(belong)),2)+power((y(i)-centerY(belong)),2)+power((z(i)-centerZ(belong)),2)>power((x(i)-centerX(j)),2)+power((y(i)-centerY(j)),2)+power((z(i)-centerZ(j)),2))
belong=j;
end
end
%当前聚类中心内部点数加1
recordd(belong)=recordd(belong)+1;
%将此点放入聚类中心中
resX(belong,recordd(belong))=x(i);
resY(belong,recordd(belong))=y(i);
resZ(belong,recordd(belong))=z(i);
end
%存放聚类中心
oldcenterX=centerX;
oldcenterY=centerY;
oldcenterZ=centerZ;
%更新聚类中心
for i=1:k
%recordd(i)=0表示此类内部无点,则保持聚类中心不变
if(recordd(i)==0)
continue
end
centerX(i)=sum(resX(i,:))/recordd(i);
centerY(i)=sum(resY(i,:))/recordd(i);
centerZ(i)=sum(resZ(i,:))/recordd(i);
end
%如果聚类中心没有改变就停止
if mean([centerX == oldcenterX centerY == oldcenterY centerZ==oldcenterZ]) == 1
break;
end
end
centerX
centerY
centerZ
%下面只是优化内存
maxPos = max(recordd);
resX = resX(:,1:maxPos);
resY = resY(:,1:maxPos);
resZ = resZ(:,1:maxPos);
end
然后是读取数据和显示函数
由于.data数据集本身matlab读取较为困难,所以将其转化为了.txt形式
%读取Iris数据
[data1,data2,data3,data4,data5]=textread('Iris.txt','%f%f%f%f%s','delimiter',',');
%选取k=3
k = 3;
%调用函数,这里选择的是feature1、feature2、feature4
[resX resY resZ record] = Kmeans(data1,data2,data4,k);
%绘制图像
for i = 1:length(record)
plot3(resX(i,1:record(i)),resY(i,1:record(i)),resZ(i,1:record(i)),'*')
hold on
end
% 下面是标记出每一个类别的类别代表点
for i = 1:length(record)
plot3(mean(resX(i,1:record(i)),2)',mean(resY(i,1:record(i)),2)',mean(resZ(i,1:record(i)),2)','Marker','square','Color','k','MarkerFaceColor','k','LineStyle','none')
end
Result
124.jpg
matlab iris kmeans,K-means算法用于Iris数据集相关推荐
- kmeans改进 matlab,基于距离函数的改进k―means 算法
摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...
- 聚类分析 | MATLAB实现k-Means(k均值聚类)分析
目录 聚类分析 | MATLAB实现k-Means(k均值聚类)分析 k-均值聚类简介 相关描述 程序设计 学习小结 参考资料 致谢 聚类分析 | MATLAB实现k-Means(k均值聚类)分析 k ...
- k means算法C语言伪代码,K均值算法(K-Means)
1. K-Means算法步骤 算法步骤 收敛性定义,畸变函数(distortion function): 伪代码: 1) 创建k个点作为K个簇的起始质心(经常随机选择) 2) 当任意一个点的蔟分配结果 ...
- k-modes算法mysql_第十一章 K-Means(K均值)算法模型实现(中)
python2 代码实现: from numpy import * import numpy def loadDataSet(fileName): #general function to parse ...
- K-Means(K均值) 算法
K-Means算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇.然后按平均法重新计算各个簇的质心,从而确定新的簇心.一直迭代,直到簇心的移动距离小于某个给定的值.K是我们 ...
- 我的K均值算法的matlab实现
这是我的第一篇博客: K-Means算法过程,略: 这是一次课程的任务2333,是利用所学K-means聚类分析方法,对iris数据集进行聚类分析,并利用已知的样本类别标 签进行聚类分析评价: 我的K ...
- Udacity机器人软件工程师课程笔记(二十一) - 对点云进行集群可视化 - 聚类的分割 - K-means|K均值聚类, DBSCAN算法
聚类的分割 1.K-均值聚类 (1)K-均值聚类介绍 k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心 ...
- k均值聚类算法(K Means)及其实战案例
算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...
- K-Means(K均值)、GMM(高斯混合模型),通俗易懂,先收藏了!
文章目录 1. 聚类算法都是无监督学习吗? 2. k-means(k均值)算法 2.1 算法过程 2.2 损失函数 2.3 k值的选择 2.4 KNN与K-means区别? 2.5 K-Means优缺 ...
最新文章
- 改善代码设计 —— 组织好你的数“.NET研究”据(Composing Data)
- 电脑qq文件服务器地址,在电脑上接收QQ地理位置打不开,提示获取不到详细地址...
- UltraEdit中显示空格与回车的问题
- Spring中的自动装配和Autowired
- python中回归拟合图_seaborn库:线性回归拟合图
- Microsoft Visual Studio Tools for AI
- 35岁了,转去谷歌做人工智能靠谱吗?
- [转] Windows完成端口与Linux epoll技术简介
- 索益Mike的excel商品操作
- Java程序开发过程
- 如何从excel中删除奇数行或偶数行
- 秦九韶算法与霍纳规则
- GIS地图描边特效的实现
- Developpeur Reference对Bjarne Stroustrup的采访(转载)
- 计算机专业可以谈手机吗,手机真能取代电脑吗?谈手机/PC系统的大一统
- 导入自己模块包导入报错:ModuleNotFoundError: No module named ‘xxx‘解决方法 晓物智联
- android蓝牙连接通信的实现
- 百度竞价账户层级及基本设置
- Vue 图片上传功能
- 1_华为是怎样开发硬件的
热门文章
- MATLAB血氧信号分析,基于MATLAB的血氧饱和度建模与预测方法研究
- Java中的“+“,什么时候是连接符,什么时候是运算符
- 分类问题学习笔记-决策树
- 安排,Elasticsearch Stack深入浅出视频教程
- bodipy荧光染料BDP 581/591 NHS ester/琥珀酰亚胺活化酯
- 同时删除多个 Word 中间几页
- 电气设备安装技术交底
- 500元内什么牌子的游戏蓝牙耳机好用?低延迟游戏蓝牙耳机
- ZuulFilter统一异常处理
- 微信小程序scroll-view 横向滚动 显示下拉条的问题