zoukankan      html  css  js  c++  java
  • K-modes聚类算法MATLAB

    K-modes算法主要用于分类数据,如 国籍,性别等特征。

    距离使用汉明距离,即有多少对应特征不同则距离为几。

    中心点计算为,选择众数作为中心点。

    主要功能:

    随机初始化聚类中心,计算聚类。

    选择每次聚类次数,选择最佳聚类初始化。

    kmodes.m代码

    function [cx,cost] = kmodes(K,data,num)
    % 生成将data聚成K类的最佳聚类
    %   K为聚类数目,data为数据集,num为随机初始化次数
        [cx,cost] = kmodes1(K,data);
        for i = 2:num
            [cx1,min] = kmodes1(K,data);
            if min<cost
                cost = min;
                cx = cx1;
            end
        end
    end
    
    function [cx,cost] = kmodes1(K,data)
    %   把分类数据集data聚成K类
    %   [cx,cost] = kmeans(K,data)
    %   K为聚类数目,data为数据集
    %   cx为样本所属聚类,cost为此聚类的代价值
    % 选择需要聚类的数目
    
    % 随机选择聚类中心
        centroids = data(randperm(size(data,1),K),:);
    % 迭代聚类 
        centroids_temp = zeros(size(centroids));
        num = 0;
        while (~isequal(centroids_temp,centroids)&&num<20) 
            centroids_temp = centroids;
            [cx,cost] = findClosest(data,centroids,K);
            centroids = compueCentroids(data,cx,K);
            num = num+1;
        end
    %     cost = cost/size(data,1);
    
    end
    
    
    function [cx,cost] = findClosest(data,centroids,K)
    % 将样本划分到最近的聚类中心
        cost = 0;
        n = size(data,1);
        cx = zeros(n,1);
        for i = 1:n
    %        汉明距离
            [M,I] = min(sum((data(i,:)~=centroids)'));
            cx(i) = I;
            cost = cost+M;
        end
    end
    
    
    function centroids = compueCentroids(data,cx,K)
    % 计算新的聚类中心
        centroids = zeros(K,size(data,2));
        for i = 1:K
    %       众数为聚类中心
            centroids(i,:) = mode(data(cx==i,:));
        end
    end

    Main.m

    % 生成分类数据集
    data = randi(3,40,2);
    % 生成最佳聚类
    K = 3;
    [cx,cost] = kmodes(K,data,10);

    执行Main.m,返回聚类的代价值。与聚类结果。cx存了每个样本点属于第几类。

  • 相关阅读:
    [Tips]git cannot lock ref
    [BUG]Git Sever搭建与相关错误处理
    [Tips]matplotlib 命令行画图保存
    [Tips]Torch功能点记录
    5G元年教育产业再出发 科技赋能的“风口与风险”仍待明晰
    Adobe逆天AI黑科技:美颜照克星,秒还原PS照片
    计算机算法能听声音绘制人脸
    2019 CESA,智能座舱越来越“懂你”
    谷歌首席决策科学家:AI难免犯错,唯有人类可以悬崖勒马
    百度:如何将AI进行到底?
  • 原文地址:https://www.cnblogs.com/lolybj/p/10163666.html
Copyright © 2011-2022 走看看