K-Means聚类算法-模式识别(8页).doc
《K-Means聚类算法-模式识别(8页).doc》由会员分享,可在线阅读,更多相关《K-Means聚类算法-模式识别(8页).doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-K-Means聚类算法-模式识别-第 8 页K-Means聚类算法1. 算法原理k-means是划分方法中较经典的聚类算法之一。由于该算法的效率高,所以在对大规模数据进行聚类时被广泛应用。目前,许多算法均围绕着该算法进行扩展和改进。k-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。k-means算法的处理过程如下:首先,随机地选择k个对象,每个对象初始地代表了一个簇的平均值或中心;对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;然后重新计算每个簇的平均值。这个过程不断重复,直到准则函数收敛。通常,采用平方误差准则,其定义如下:这里E是
2、数据库中所有对象的平方误差的总和,p是空间中的点,mi是簇Ci的平均值。该目标函数使生成的簇尽可能紧凑独立,使用的距离度量是欧几里得距离,当然也可以用其他距离度量。k-means聚类算法的算法流程如下: 输入:包含n个对象的数据库和簇的数目k; 输出:k个簇,使平方误差准则最小。 步骤:(1) 任意选择k个对象作为初始的簇中心;(2) repeat;(3) 根据簇中对象的平均值,将每个对象(重新)赋予最类似的簇;(4) 更新簇的平均值,即计算每个簇中对象的平均值;(5) 直到不再发生变化。2. 主要代码主程序:clc;clear;close all;% 聚类算法测试nSample = 500,
3、 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; -1 0.9; , ;data = createSample(nSample, dim , coeff);% 得到训练数据nClass = length(nSample);tlabel = ;tdata = ;for i = 1 : nClass tlabel = tlabel; i * ones(nSample(i), 1); tdata = tdata; datai;end% 调用k-mea
4、ns聚类算法 label = stpKMeans( tdata, nClass);% 绘图result = cell(1, nClass);index = 0;for i = 1 : nClass index = find(label(:,1) = i); resulti = tdata(index, :);endfigure;subplot(1, 2, 1);plot3(data1(:, 1), data1(:, 2), data1(:, 3), *, . data2(:, 1), data2(:, 2), data2(:, 3), o, . data3(:, 1), data3(:, 2)
5、, data3(:, 3), x);title(初始数据);subplot(1, 2, 2);plot3(result1(:, 1), result1(:, 2), result1(:, 3), *, . result2(:, 1), result2(:, 2), result2(:, 3), o, . result3(:, 1), result3(:, 2), result3(:, 3), x);title(K-Means聚类结果); K-Means核心算法:function label = stpKMeans( data, k)% KMeans 聚类算法,参考% 输入% data 原始数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Means 算法 模式识别
限制150内