matlab-kmeans,自制

这是一个自编的 MATLAB K-Means 聚类算法函数,用于对输入数据集进行聚类。函数接受数据、类别数、迭代次数和误差变化量作为参数,返回类中心、类别标签和类内距离和。文章中还提到在2012版MATLAB中使用内置 kmeans 函数出现错误,并请求帮助解决。
摘要由CSDN通过智能技术生成
function [c,label,dist_k]=self_kmeans(data,k,iter,err)
%data 输入数据集(全自变量)
%k 类数
%iter 迭代数
%err 误差变化量
%c 返回的各类中心(向量)
%label 返回的各数据类别
%dist_k 返回各个类内距离和
[m,n]=size(data);%返回data的行,列数
c=zeros(k,n);
dist_k=[];
label=zeros(m,1);
data=[data,label];
dist=zeros(m,k);
%选定初试类中心
for i=1:k
    c(i,:)=data(i,1:n);
end
for t=1:iter
    for i=1:k
        for j=1:m
            dist(j,i)=sqrt(sum((data(j,1:n)-c(i,:)).^2));
            
        end
    end
    %disp(dist)
    for j=1:m
        [d,l]=sort(dist(j,:));
        label(j,1)=l(1);
        data(j,end)=label(j,1);%上标签  
    end   
    dist_kk=[];
    for i=1:k    
        %统计各个簇类的误差和
        dist_kk=[dist_kk,sum(dist(data(:,end)==i,i))];
    end
    %统计每次所有簇误差总和
    dist_k=[dist_k,sum(dist_kk)];
    if length(dist_k)>=2
        err1=abs(dist_k(length(dist_k)-1)-dist_k(length(dist
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值