K均值聚类算法的MATLAB实现
1.K-均值聚类法的概述
% 利用K-均值聚类的原理,实现对一组数据的分类。这里以一组二维的点为例。
N = ; % 点的个数
X = *rand(,N);
Y = *rand(,N); % 随机生成一组横纵坐标取值均在(,)之间的点,X Y 分别代表横纵坐标
plot(X, Y, 'r*'); % 绘出原始的数据点
xlabel('X');
ylabel('Y');
title('聚类之前的数据点');
n = ; %将所有的数据点分为两类
m = ; %迭代次数
eps = 1e-; % 迭代结束的阈值
u1 = [X(),Y()]; %初始化第一个聚类中心
u2 = [X(),Y()]; %初始化第二个聚类中心
U1 = zeros(,);
U2 = zeros(,); %U1,U2 用于存放各次迭代两个聚类中心的横纵坐标
U1(:,) = u1;
U2(:,) = u2;
D = zeros(,N); %初始化数据点与聚类中心的距离
while(abs(U1(,m) - U1(,m+)) > eps || abs(U1(,m) - U1(,m+) > eps || abs(U2(,m) - U2(,m+)) > eps || abs(U2(,m) - U2(,m+)) > eps))
m = m +;
% 计算所有点到两个聚类中心的距离
for i = : N
D(,i) = sqrt((X(i) - U1(,m))^ + (Y(i) - U1(,m))^);
end
for i = : N
D(,i) = sqrt((X(i) - U2(,m))^ + (Y(i) - U2(,m))^);
end
A = zeros(,N); % A用于存放第一类的数据点
B = zeros(,N); % B用于存放第二类的数据点
for k = : N
[MIN,index] = min(D(:,k));
if index == % 点属于第一个聚类中心
A(,k) = X(k);
A(,k) = Y(k);
else % 点属于第二个聚类中心
B(,k) = X(k);
B(,k) = Y(k);
end
end
indexA = find(A(,:) ~= ); % 找出第一类中的点
indexB = find(B(,:) ~= ); % 找出第二类中的点
U1(,m+) = mean(A(,indexA));
U1(,m+) = mean(A(,indexA));
U2(,m+) = mean(B(,indexB));
U2(,m+) = mean(B(,indexB)); % 更新两个聚类中心
end
figure;
plot(A(,indexA) , A(,indexA), '*b'); % 作出第一类点的图形
hold on
plot(B(,indexB) , B(,indexB), 'oy'); %作出第二类点的图形
hold on
centerx = [U1(,m) U2(,m)];
centery = [U1(,m) U2(,m)];
plot(centerx , centery, '+g'); % 画出两个聚类中心点
xlabel('X');
ylabel('Y');
title('聚类之后的数据点');
disp(['迭代的次数为:',num2str(m)]);
得到的分类结果如下:


50个随机生成的点分为两类迭代只需要4步,从上图来看,分类的效果还是不错的。但是每次运行可能分类的结果会不一样,这是因为这些点是随机生成的,而且也没有明确的分类标准的缘故。
K均值聚类算法的MATLAB实现的更多相关文章
- k均值聚类算法原理和(TensorFlow)实现
顾名思义,k均值聚类是一种对数据进行聚类的技术,即将数据分割成指定数量的几个类,揭示数据的内在性质及规律. 我们知道,在机器学习中,有三种不同的学习模式:监督学习.无监督学习和强化学习: 监督学习,也 ...
- K均值聚类算法
k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个 ...
- 机器学习实战---K均值聚类算法
一:一般K均值聚类算法实现 (一)导入数据 import numpy as np import matplotlib.pyplot as plt def loadDataSet(filename): ...
- 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)
其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...
- 聚类之K均值聚类和EM算法
这篇博客整理K均值聚类的内容,包括: 1.K均值聚类的原理: 2.初始类中心的选择和类别数K的确定: 3.K均值聚类和EM算法.高斯混合模型的关系. 一.K均值聚类的原理 K均值聚类(K-means) ...
- 机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例
k-均值聚类是非监督学习的一种,输入必须指定聚簇中心个数k.k均值是基于相似度的聚类,为没有标签的一簇实例分为一类. 一 经典的k-均值聚类 思路: 1 随机创建k个质心(k必须指定,二维的很容易确定 ...
- 机器学习理论与实战(十)K均值聚类和二分K均值聚类
接下来就要说下无监督机器学习方法,所谓无监督机器学习前面也说过,就是没有标签的情况,对样本数据进行聚类分析.关联性分析等.主要包括K均值聚类(K-means clustering)和关联分析,这两大类 ...
- 机器学习之K均值聚类
聚类的核心概念是相似度或距离,有很多相似度或距离的方法,比如欧式距离.马氏距离.相关系数.余弦定理.层次聚类和K均值聚类等 1. K均值聚类思想 K均值聚类的基本思想是,通过迭代的方法寻找K个 ...
- 100天搞定机器学习|day44 k均值聚类数学推导与python实现
[如何正确使用「K均值聚类」? 1.k均值聚类模型 给定样本,每个样本都是m为特征向量,模型目标是将n个样本分到k个不停的类或簇中,每个样本到其所属类的中心的距离最小,每个样本只能属于一个类.用C表示 ...
随机推荐
- HBase 安装
HBase 集群安装 1.上传tar包,解压tar包 tar -zxvf hbase-1.1.5-bin.tar.gz 2.修改配置文件 进入 hbase/conf/ 在文件 regionserve ...
- checkbox点击后出现div
HTML: <div class="msg_editUrl_function"> <label class="labelChecked" fo ...
- 再战江湖。vuforia 初试
AR 里发现一个可用的项目 vuforia, 试着用用. 也是在很久不写博客后(以前全在百度博客上) 再次写
- 通过Maven插件发布JaveEE项目到tomcat下
1.修改tomcat\conf\tomcat-users.xml文件,在文件中增加 <role rolename="manager-script"/> <user ...
- 【原创】MVC4+Jquery+EasyUI实现的工作流平台
最近把工作流从传统的WebFrom上迁移到我的MVC4安全权限基础框架中,感觉非常不错MVC4在各方面给用户的体验确实跟以前传统的WEB是质的提升.由于后面要做基于工作流技术的ERP,所以需要先把工作 ...
- linux PHP 编译安装参数详解
linux PHP 编译安装参数详解 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...
- PDF 补丁丁 0.5.0.1816 测试版发布:新界面新体验
新的测试版简化了界面,操作更直观,同时修复了旧版本的一些错误. 欢迎各位下载测试文件试用,并提出宝贵意见.
- 多项目开发下的dll文件管理
阅读目录: DS01:为什么要对生成的dll文件进行管理? DS02:首先介绍以下两个DOS命令 DS03:第一种实现方法(xcopy) DS04:第二种实现方法(attrib) DS05:分享一个有 ...
- php本地及远程文件包含漏洞
在php程序中包含有file inclusion的时候,php要开启一下两个功能: allow_url_fopen onallow_url_include on 但是开启这两个功能之后伴随的是url漏 ...
- 2018. The Debut Album
http://acm.timus.ru/problem.aspx?space=1&num=2018 真心爱过,怎么能彻底忘掉 题目大意: 长度为n的串,由1和2组成,连续的1不能超过a个,连续 ...