ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:414.49KB ,
资源ID:21623617      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21623617.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(KMeans聚类算法模式识别Word文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

KMeans聚类算法模式识别Word文档格式.docx

1、(1) 任意选择k个对象作为初始的簇中心;(2) repeat;(3) 根据簇中对象的平均值,将每个对象(重新)赋予最类似的簇;(4) 更新簇的平均值,即计算每个簇中对象的平均值;(5) 直到不再发生变化。2. 主要代码主程序:clc;clear;close all;% 聚类算法测试nSample = 500, 500, 500; % 3维情况dim = 3;coeff = -2 0.8; -1 0.9; 2 0.7;, . 1 0.9; -2 0.7; -2 0.8; , . -2 0.7; 2 0.8; , ;data = createSample(nSample, dim , coeff

2、);% 得到训练数据nClass = length(nSample);tlabel = ;tdata = ;for i = 1 : nClass tlabel = tlabel; i * ones(nSample(i), 1); tdata = tdata; datai;end% 调用k-means聚类算法 label = stpKMeans( tdata, nClass);% 绘图result = cell(1, nClass);index = 0; index = find(label(:,1) = i); resulti = tdata(index, :);figure;subplot(

3、1, 2, 1);plot3(data1(:, 1), data1(:, 2), data1(:, 3), *, . data2(:, 1), data2(:, 2), data2(:o data3(:, 1), data3(:, 2), data3(:xtitle(初始数据subplot(1, 2, 2);plot3(result1(:, 1), result1(:, 2), result1(: result2(:, 1), result2(:, 2), result2(: result3(:, 1), result3(:, 2), result3(:K-Means聚类结果K-Means核心

4、算法:function label = stpKMeans( data, k)% KMeans 聚类算法,参考% % 输入% data 原始数据% k 聚多少个簇% 输出% label 按照data数据的顺序,每个样本的簇号的列表 n, dim = size(data); label = zeros(n, 1);% 任选k个对象作为初始的簇中心 seq = stpRandN_K(n, k); nowMeans = data(seq, : k label(seq(i) = i; dist = zeros(n, k);while(true)% 计算数据到每个簇的欧几里得距离 temp = data

5、;for j = 1 : dim% 先让数据减去第j个特征 temp(:, j) = data(:, j) - nowMeans(i, j);% 点乘后再相加球的距离的平方 temp = temp .* temp; dist(:, i) = sum(temp, 2);% 从k种距离中找出最小的,并计算修改次数(label跟上一次不一样) , label2 = min(dist, , 2); editElem = sum(label(:, 1) = label2(:, 1); label = label2;% for i = 1 : n% % 根据均值将当前的每个元素重新分簇% minDist

6、= inf;% index = -1;% % 从当前的k个均值中找到离元素i最近的一个,将其划分到该簇% for j = 1 :% dist = data(i,:) - nowMeans(j, :% dist = dot(dist, dist);% if(dist minDist)% % 修改最近的距离,并记录测试的簇号% minDist = dist;% index = j;% end% % 判断是该元素是否重新划分了簇% if(index = label(i) )% editElem = editElem + 1;% label(i) = index;if editElem = 0% 表示

7、本次没有修改,那么跳出循环break;% 重新分簇后,重新计算均值% 计算第k簇的均值 index = find(label(:, 1) = i ); nowMeans(i, :) = mean(data(index, :);从n个元素中随机抽取K个元素的代码:function out = stpRandN_K(n, k)% 从1-n中随机选中k个不同的元素 data = 1 : n; index = floor( (n-i+1)*rand() ) + i;% 交换i和index上的数据 temp = data(index); data(index) = data(i); data(i) =

8、temp; out = data(1:k);图片聚类测试代码:rgbdata = imread(datag-1.jpglabdata = stpRgb2Lab(rgbdata);sm, sn, = size(labdata);sN = sm * sn;nClass = 4;labdata = reshape(labdata, sN, 3); label = stpKMeans( labdata, nClass);label = reshape(label, sm, sn);imshow(rgbdata);hold on;TX = 1 : sn;TY = 1 : sm;imagesc(TX, T

9、Y, label);3. 结果分析针对给定的参数K-Means算法三类聚类结果:图1 初始数据和K-Means聚类结果当初始数据给为如下时:图2 初始数据和K-Means聚类结果由此可以看到,K-Means算法会把一些偏离中心较远的点分到其它簇内。4. 用于图片的结果以图片的在Lab颜色空间的三通道作为三个特征,每个像素为一个样本点,进行图片聚类,此时,如果类数为8,则得到:图3a 图片聚类(8类)结果图3b 图片聚类(8类)结果聚类数量变为15时结果如下:图4a 图片聚类(15类)结果图4b 图片聚类(15类)结果当聚类为4的时候,结果为:图5a 图片聚类(4类)结果图5b 图片聚类(4类)结果

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1