K-means矢量量化算法介绍

K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一。

K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。matlab中有kmeans聚类算法的函数可以调用,如[ldx,C,sumD,D]=kmeans(X,k)(详见matlab help kmeans)。以下链接是一个用java写的聚类演示K-means demo

对于该算法存在的缺点可以使用ISODATA(迭代自组织数据分析算法)来确定聚类数目K,使用K-means++算法或者遗传算法(GA)来选择初始中心。

K-means算法流程:

1.初始化:选择合适的方法设置K个初始的码本中心zi,1<=i<=K;

2.最近邻分类:将训练数据矢量xt按照最近邻原则分配到最近的码本zi中,此步骤中可以采用欧式距离、马氏距离等。

3.码本更新:将所有的训练数据分配到离其最近的码本后,生成新的质心,即新的码本。

4.重复2、3直到相邻的迭代误差满足阈值要求。

ISODATA算法:

isodata(跌代自组织分析),通过设定初始参数使用归并与分裂的机制。当某两类聚类中心距离小于某一阈值时,将它们合并为一类;当某类标准差大于某一阈值或其样本数目超过某一阈值时,将其分为两类;在某类样本数目少于某阈值时,需将其取消。

K-means++算法流程:

1.给定初始点的集合D

2.随机从点集D中选择一个点作为初始的中心点

3.计算每一个点到最近中心点的距离Si

4.求和Si得到Sum

5.取随机值Random(0 < Random < Sum)

6.循环点集D,做Random -= Si(更新后的Si)运算直到Random < 0,那么点i就是下一个中心点

7.循环3-6,直到去除所有的K个中心点

8.进行K-means算法

参考:K-means算法

Kmeans++算法的理解

Kmeans、Kmeans++和KNN算法比较

时间: 2024-10-13 00:52:17

K-means矢量量化算法介绍的相关文章

K-means算法和矢量量化

语音信号的数字处理课程作业——矢量量化.这里采用了K-means算法,即假设量化种类是已知的,当然也可以采用LBG算法等,不过K-means比较简单.矢量是二维的,可以在平面上清楚的表示出来. 1. 算法描述 本次实验选择了K-means算法对数据进行矢量量化.算法主要包括以下几个步骤 初始化:载入训练数据,确定初始码本中心(4个): 最近邻分类:对训练数据计算距离(此处采用欧式距离),按照距离最小分类: 码本更新:重新生成包腔对应的质心: 重复分类和码本更新步骤,知道达到最大迭代次数或满足一定

矢量量化(VQ)

作者:桂. 时间:2017-05-31  21:14:56 链接:http://www.cnblogs.com/xingshansi/p/6925955.html 前言 VQ(Vector Quantization)是一个常用的压缩技术,本文主要回顾: 1)VQ原理 2)基于VQ的说话人识别(SR,speaker recognition)技术 〇.分类问题 说话人识别其实也是一个分类问题: 说话人识别技术,主要有这几大类方法: 模板匹配方法 这类方法比较成熟,主要原理:特征提取.模板训练.匹配.

【数据结构&amp;&amp;算法系列】KMP算法介绍及实现(c++ &amp;&amp; java)

KMP算法如果理解原理的话,其实很简单. KMP算法简介 这里根据自己的理解简单介绍下. KMP算法的名称由三位发明者(Knuth.Morris.Pratt)的首字母组成,又称字符串查找算法. 个人觉得可以理解为最小回溯算法,即匹配失效的时候,尽量少回溯,从而缩短时间复杂度. KMP算法有两个关键的地方,1)求解next数组,2)利用next数组进行最小回溯. 1)求解next数组 next数组的取值只与模式串有关,next数组用于失配时回溯使用. 在简单版本的KMP算法中,每个位置 j 的 n

BWT 压缩解压缩算法介绍 poj 1147

poj上1147题, 题意:任意一个长度为N的字符串,循环左移一个字符长度,这样形成N个新字符串,将这N个字符串按字典顺序排序,从上到下取得排序后的每行最后一列的的所有字符,求排序后的第一行字符串? 举个简单例子: 原串为: 0 0 0 1 1 那么循环左移排序后的矩阵为: 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 1 1 1 0 0 0 那么我们得到最后列的字符串为: 1 0 0 1 0 现在我们只知道最后列的字符串 1 0 0 1 0,让我们求循环左移排序后

联合人脸检测、校准算法介绍

联合人脸检测.校准算法介绍 人脸检测(detection)在opencv中早就有直接能拿来用的haar分类器,基于Viola-Jones算法.但是毕竟是老掉牙的技术,Precision/Recall曲线渣到不行,在实际工程中根本没法给boss看,作为MSRA脑残粉,这里介绍一种MSRA在14年的最新技术:下载   [ECCV 2014] Joint Cascade Face Detection and Alignment.这篇文章直接在30ms的时间里把detection和alignment都给

KNN算法介绍

KNN算法全名为k-Nearest Neighbor,就是K最近邻的意思. 算法描述 KNN是一种分类算法,其基本思想是采用测量不同特征值之间的距离方法进行分类. 算法过程如下: 1.准备样本数据集(样本中每个数据都已经分好类,并具有分类标签):2.使用样本数据进行训练:3.输入测试数据A:4.计算A与样本集的每一个数据之间的距离:5.按照距离递增次序排序:6.选取与A距离最小的k个点:7.计算前k个点所在类别的出现频率:8.返回前k个点出现频率最高的类别作为A的预测分类. 主要因素 训练集(或

机器学习算法介绍

什么是程序 计算机程序,是指为了得到某种结果而可以由计算机(等具有信息处理能力的装置)执行的代码化指令序列(或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列). 通俗讲,计算机给人干活,但它不是人,甚至不如狗更懂人的需要,那怎么让它干活呢,那就需要程序员来写程序,程序就是计算机能懂的语言(指令),然后计算机可以执行这些程序(指令),最终完成任务. int n = std::atoi(argv[1]); //求n的阶乘 double result = 1.0; for (int

BFS/DFS算法介绍与实现(转)

广度优先搜索(Breadth-First-Search)和深度优先搜索(Deep-First-Search)是搜索策略中最经常用到的两种方法,特别常用于图的搜索.其中有很多的算法都用到了这两种思想,比如:Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想.BFS的思想:从一个图的某一个顶点V0出发,首先访问和V0相邻的且未被访问过的顶点V1.V2.--Vn,然后依次访问与V1.V2--Vn相邻且未被访问的顶点.如此继续,找到所要找的顶点或者遍历完整个图.由此

十大基础实用算法之寻找最小(最大)的k个数-线性查找算法

例如:输入1,2,3,4,5,6,7,8这8个数字,则最小的4个数字为1,2,3,4. 思路1:最容易想到的方法:先对这个序列从小到大排序,然后输出前面的最小的k个数即可.如果选择快速排序法来进行排序,则时间复杂度:O(n*logn) 注:针对不同问题我们应该给出不同的思路,如果在应用中这个问题的规模不大,或者求解前k个元素的频率很高,或者k是不固定的.那么我们花费较多的时间对问题排序,在以后是使用中可以线性时间找到问题的解,总体来说,那么思路一的解法是最优的. 思路2:在思路1的基础上更进一步