K均值聚类算法的MATLAB实现
1.K-均值聚类法的概述
% 利用K-均值聚类的原理,实现对一组数据的分类。这里以一组二维的点为例。 N = 40; % 点的个数 X = 10*rand(1,N); Y = 10*rand(1,N); % 随机生成一组横纵坐标取值均在(0,10)之间的点,X Y 分别代表横纵坐标 plot(X, Y, 'r*'); % 绘出原始的数据点 xlabel('X'); ylabel('Y'); title('聚类之前的数据点'); n = 2; %将所有的数据点分为两类 m = 1; %迭代次数 eps = 1e-7; % 迭代结束的阈值 u1 = [X(1),Y(1)]; %初始化第一个聚类中心 u2 = [X(2),Y(2)]; %初始化第二个聚类中心 U1 = zeros(2,100); U2 = zeros(2,100); %U1,U2 用于存放各次迭代两个聚类中心的横纵坐标 U1(:,2) = u1; U2(:,2) = u2; D = zeros(2,N); %初始化数据点与聚类中心的距离 while(abs(U1(1,m) - U1(1,m+1)) > eps || abs(U1(2,m) - U1(2,m+1) > eps || abs(U2(1,m) - U2(1,m+1)) > eps || abs(U2(2,m) - U2(2,m+1)) > eps))m = m +1;% 计算所有点到两个聚类中心的距离 for i = 1 : ND(1,i) = sqrt((X(i) - U1(1,m))^2 + (Y(i) - U1(2,m))^2); end for i = 1 : ND(2,i) = sqrt((X(i) - U2(1,m))^2 + (Y(i) - U2(2,m))^2); end A = zeros(2,N); % A用于存放第一类的数据点 B = zeros(2,N); % B用于存放第二类的数据点 for k = 1: N[MIN,index] = min(D(:,k)); if index == 1 % 点属于第一个聚类中心A(1,k) = X(k);A(2,k) = Y(k);else % 点属于第二个聚类中心B(1,k) = X(k);B(2,k) = Y(k);end end indexA = find(A(1,:) ~= 0); % 找出第一类中的点 indexB = find(B(1,:) ~= 0); % 找出第二类中的点 U1(1,m+1) = mean(A(1,indexA)); U1(2,m+1) = mean(A(2,indexA)); U2(1,m+1) = mean(B(1,indexB)); U2(2,m+1) = mean(B(2,indexB)); % 更新两个聚类中心 end figure; plot(A(1,indexA) , A(2,indexA), '*b'); % 作出第一类点的图形 hold on plot(B(1,indexB) , B(2,indexB), 'oy'); %作出第二类点的图形 hold on centerx = [U1(1,m) U2(1,m)]; centery = [U1(2,m) U2(2,m)]; plot(centerx , centery, '+g'); % 画出两个聚类中心点 xlabel('X'); ylabel('Y'); title('聚类之后的数据点'); disp(['迭代的次数为:',num2str(m)]);
得到的分类结果如下:
50个随机生成的点分为两类迭代只需要4步,从上图来看,分类的效果还是不错的。但是每次运行可能分类的结果会不一样,这是因为这些点是随机生成的,而且也没有明确的分类标准的缘故。
转载于:https://www.cnblogs.com/yezuhui/p/6853269.html
K均值聚类算法的MATLAB实现相关推荐
- matlab实现k-l算法,K均值聚类算法的MATLAB实现
K-means算法是最简单的一种聚类算法.算法的目的是使各个样本与所在类均值的误差平方和达到最小(这也是评价K-means算法最后聚类效果的评价标准) K-means聚类算法的一般步骤: 初始化.输入 ...
- 基于改进人工蜂群算法的K均值聚类算法(Matlab代码实现)
- 【模式识别】K均值聚类算法应用实验报告及MATLAB仿真
一. 实验目的 1.掌握K均值聚类算法的原理和实现过程: 2.掌握K均值聚类算法的应用方法. 二. 实验内容 1.彩色图像分割 选择一幅图像,分别按三种颜色数进行彩色图像分割的结果(原图和分割图).步 ...
- k均值聚类算法优缺点_Grasshopper实现K均值聚类算法
本文很长很长,有很多很多图,包含以下部分: 1.算法简介 2.如何分类平面点 3.如何分类空间点 4.如何分类多维数据 5.后记 提醒:以下内容包括:智障操作,无中生友,重复造轮子 等 1.算法简介 ...
- K-Means(K均值聚类算法)
K-Means(K均值聚类算法) 1.前言 要学习聚类算法就要知道聚类学习算法是什么,为什么要学习聚类学习聚类学习算法,有什么用途,下面就简单的做一下介绍,并且详细的说明k-means均值聚类学习算法 ...
- K均值聚类算法(HCM,K-Means)
K均值聚类核心思想如下: 算法把n个向量分为个组,并求每组的聚类中心,使得非相似性(或距离)指标的价值函数(或目标函数)达到最小.当选择欧几里德距离为组j中向量与相应聚类中心间的非相似性指标时,价值函 ...
- K均值聚类算法(Kmeans)讲解及源码实现
K均值聚类算法(Kmeans)讲解及源码实现 算法核心 K均值聚类的核心目标是将给定的数据集划分成K个簇,并给出每个数据对应的簇中心点.算法的具体步骤描述如下. 数据预处理,如归一化.离群点处理等. ...
- k均值聚类算法python_K均值和其他聚类算法:Python快速入门
k均值聚类算法python This post was originally published here 这篇文章最初发表在这里 Clustering is the grouping of obje ...
- python(scikit-learn)实现k均值聚类算法
k均值聚类算法原理详解 示例为链接中的例题 直接调用python机器学习的库scikit-learn中k均值算法的相关方法 from sklearn.cluster import KMeans imp ...
最新文章
- zk Acl权限:只有一个账号有crdwa权限,匿名用户只有r权限
- android 继承现有控件,Android继承现有控件拓展实现自定义控件textView
- linux下搭建博客day3-git安装
- 怎么用psftp下载linux上的文件夹,使用PSFTP上传和下载Linux服务器文件.doc
- 黑莓手机用desktop manager安装了一些软件后重启出现erro523无法进入桌面
- Android 开源项目和文章集合(更新:2022.03.21)
- 网吧服务器管理维护,网吧服务器常用设置维护工具
- VMware ESXi 安装教程
- Word中插入图片只显示一部分
- wamp5环境配置基础教程
- 使用Xmanger/Xbrowser 远程桌面Ubuntu 12.04 LTS
- 豆瓣9分+纪录片,每一部都美到窒息......
- 内存测试软件 ddr4,RAMCHECK LX DDR4 PRO/DDR3 内存测试仪
- leetcode第21天格雷编码
- 最简单的输出四位数的每个位上的数字
- oracle.jdbc.OracleDriver Oracle数据库驱动
- 基于微信小程序云开发的投票小程序源码,图文投票微信小程序源码
- FPGA作为从机与STM32进行SPI协议通信
- Spark 安装与配置 (Spark HA 集群部署)
- ARMv8-AArch64简述
热门文章
- 淘宝获取外网IP php
- ❤啊!这就被黑了?❤ Redis 报 EXECABORT Transaction discarded because of previous errors 错误及解决方案❤️
- 基于 Spring Cloud 环境污染物数据分析与预测平台
- vue中进行窗口变化的监听
- C++ vector 相关函数简介
- 金三银四真的是跳槽良机吗?资深人才从不根据月份跳槽
- mysql的decode函数_Mysql实现oracle decode()函数
- redis-底层实现原理
- SIGPIPE 原因和解决办法
- GNU 项目(开源社区的由来,背后的哲学)