使用MATLAB进行聚类分析K-means(二维-三维)

使用MATLAB对随机生成的1000个数进行聚类分析。

二维聚类

MATLAB程序源代码 

% 函数文件
function [ resX,resY,seedX,seedY,record] = FunK_mean( x,y,k )
% 功能:
%     实现k-mean聚类算法
% 输入:
%     二维数据,分别用x,y两个一维向量代表两个维度
%     k 是分成的类别的数量
% 输出:
%     k行的两个矩阵
%     对应同样的第n行,存放着第n类的所有元素
%     record: 记录着每一行的有效元素的个数

    j = 1;
    % 下面是预分配一些空间
    % seedX 和 seedY 中存放着所有种子
    seedX = zeros(1,k);
    seedY = zeros(1,k);
    oldSeedX = zeros(1,k);
    oldSeedY = zeros(1,k);
    resX = zeros(k,length(x));
    resY = zeros(k,length(x));
    % 用来记录resX中每一行有效元素的个数
    record = zeros(1,k); 
    for i = 1:k % 产生k个随机种子, 注意: 随机种子是来自元素集合
        seedX(i) = x(round(rand()*length(resX)));
        seedY(i) = y(round(rand()*length(resX)));
        % 为保证种子不重叠
        if (i > 1 && seedX(i) == seedX(i-1) && seed

你可能感兴趣的:(matlab,开发语言,聚类)