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

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

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

主要功能:

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

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

kmodes.m代码

function [cx,cost] = kmodes(K,data,num)
% 生成将data聚成K类的最佳聚类
% K为聚类数目,data为数据集,num为随机初始化次数
[cx,cost] = kmodes1(K,data);
for i = :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,),K),:);
% 迭代聚类
centroids_temp = zeros(size(centroids));
num = ;
while (~isequal(centroids_temp,centroids)&&num<)
centroids_temp = centroids;
[cx,cost] = findClosest(data,centroids,K);
centroids = compueCentroids(data,cx,K);
num = num+;
end
% cost = cost/size(data,); end function [cx,cost] = findClosest(data,centroids,K)
% 将样本划分到最近的聚类中心
cost = ;
n = size(data,);
cx = zeros(n,);
for i = :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,));
for i = :K
% 众数为聚类中心
centroids(i,:) = mode(data(cx==i,:));
end
end

Main.m

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

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

K-modes聚类算法MATLAB的更多相关文章

  1. 密度峰值聚类算法MATLAB程序

    密度峰值聚类算法MATLAB程序 凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 密度峰值聚类算法简介见:[转] 密度峰值聚类算法(DPC) 数据见:MATL ...

  2. k均值聚类算法原理和(TensorFlow)实现

    顾名思义,k均值聚类是一种对数据进行聚类的技术,即将数据分割成指定数量的几个类,揭示数据的内在性质及规律. 我们知道,在机器学习中,有三种不同的学习模式:监督学习.无监督学习和强化学习: 监督学习,也 ...

  3. K均值聚类算法

    k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个 ...

  4. 机器学习实战---K均值聚类算法

    一:一般K均值聚类算法实现 (一)导入数据 import numpy as np import matplotlib.pyplot as plt def loadDataSet(filename): ...

  5. K均值聚类算法的MATLAB实现

    1.K-均值聚类法的概述    之前在参加数学建模的过程中用到过这种聚类方法,但是当时只是简单知道了在matlab中如何调用工具箱进行聚类,并不是特别清楚它的原理.最近因为在学模式识别,又重新接触了这 ...

  6. 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)

    其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...

  7. K-medodis聚类算法MATLAB

    国内博客,上介绍实现的K-medodis方法为: 与K-means算法类似.只是距离选择与聚类中心选择不同. 距离为曼哈顿距离 聚类中心选择为:依次把一个聚类中的每一个点当作当前类的聚类中心,求出代价 ...

  8. K-means聚类算法MATLAB

    以K-means算法为例,实现了如下功能 自动生成符合高斯分布的数据,函数名为gaussianSample.m 实现多次随机初始化聚类中心,以找到指定聚类数目的最优聚类.函数名myKmeans.m 自 ...

  9. 谱聚类算法—Matlab代码

    % ========================================================================= % 算 法 名 称: Spectral Clus ...

随机推荐

  1. QT4.8.5 源码编译记录

    今天想将以前的虚拟机的 QT4.8.5 集成到一个虚拟机里面,所以就重新编译了一次 QT4.8.5的源码 走了一点点小弯路,特此记录. 一.交叉编译器,不能直接从原来的虚拟机里面拷贝,必须使用官网的交 ...

  2. Insert插入语句中带有select语句

    我们有时候在写Insert语句的时候会遇到values里面的个别列的值需要从别的表中查询获取,这时候SQL语句需要使用向表中插入多条数据的写法: INSERT INTO LoginRecordInfo ...

  3. Appendix A. Common application properties

    Appendix A. Common application properties Prev  Part X. Appendices  Next URl链接:https://docs.spring.i ...

  4. 扩展-Easyui Datagrid相同连续列合并扩展(一)

    一.autoMergeCellAndCells实现效果 调用方法: function onLoadSuccess(data){     $(this).datagrid("autoMerge ...

  5. Windows 安装、重装MySQL时,报错:could not start the service mysql

    原因: 卸载mysql时并没有完全删除相关文件和服务,需要手动清除. 解决方法: 首先,在管理工具->服务里面将MySQL的服务给停止(有的是没有安装成功,有这个服务,但是已经停止了的). 然后 ...

  6. hdu 1421:搬寝室(动态规划 DP + 排序)

    搬寝室 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  7. 那些在BAE上部署node.js碰到的坑

    在BAE上使用node.js半年多了,其中碰到了不少因为BAE云环境限制碰到的坑 写下来大家碰到了,也不用那么麻烦的去看好几天代码了,直接对症下药 官方公布的坑有: BAE是使用package.jso ...

  8. C++引用具体解释

    引用是C++中新出现的.有别于C语言的语法元素之中的一个. 关于引用的说明,网络上也有不少.可是总感觉云遮雾绕,让人印象不深刻. 今天我就来深入解释一下引用.并就一些常见的观点进行说明,最后附带代码演 ...

  9. 编程之美 set 15 高效率地安排见面会

    题目 有 n 个学生分别对 m 个见面会感兴趣, 为了满足所有学生的要求, HR 希望每个学生都能参加自己感兴趣的所有见面会 思路 1. 假设某一个同学同时对k个小组感兴趣, 那么这k个小组两两之间都 ...

  10. 【ArcGIS for Android】基于位置查询Graphic和Feature

    1.graphicsLayer.getGraphicIDs(x, y, 20); 2.featureLayer.getFeatureIDs(x, y, 20); x.y为屏幕坐标 20量纲为dp px ...