• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: Matlab
  • 标签: k-means  matlab  

资源简介

简单的k-means聚类算法代码,matlab直接打开可用。里面注释什么都很详细,新手也可以简单上手!

资源截图

代码片段和文件信息

%% input the data 随机200个点
A=rand(10002); 
x=A(:1); 
y=A(:2);
plot(xy‘r.‘); 
  
%% 计算质心  
centroids = kMeans(A 3);  

%% 取得随机中心  
function [ centroids ] = randCent( dataSet k )  
    [mn] = size(dataSet);%取得列数  
    centroids = zeros(k n);  
    for j = 1:n  
        minJ = min(dataSet(:j));  
        rangeJ = max(dataSet(:j))-min(dataSet(:j));  
        centroids(:j) = minJ+rand(k1)*rangeJ;%产生区间上的随机数  
    end  
end 

function [ dist ] = distence( vecA vecB )  
    dist = (vecA-vecB)*(vecA-vecB)‘;%这里取欧式距离的平方  
end

%% kMeans的核心程序,不断迭代求解聚类中心  
function [ centroids ] = kMeans( dataSet k )  
    [mn] = size(dataSet);  
    %初始化聚类中心  
    centroids = randCent(dataSet k);  
    subCenter = zeros(m2);%做一个m*2的矩阵,第一列存储类别,第二列存储距离  
    change = 1;%判断是否改变  
    while change == 1  
        change = 0;  
        %对每一组数据计算距离  
        for i = 1:m  
            minDist = inf;  
            minIndex = 0;  
            for j = 1:k  
                 dist= distence(dataSet(i:) centroids(j:));  
                 if dist < minDist  
                     minDist = dist;  

评论

共有 条评论