k-means算法

K-means聚类算法

匿名 (未验证) 提交于 2019-12-02 23:59:01
K-means聚类算法简介 K-means算法是典型的基于距离的聚类算法,即对各个样本集采用距离作为相似性的评价指标,若两个样本集K个簇。让簇内的点尽量紧密的连在一起,且让簇间的距离尽量的大。最后把得到紧凑且独立的簇作为最终的目标。 二、相关知识点 1、距离度量:不同的距离量度会对距离的结果产生影响,常见的距离量度公式有很多。在该算法中一般采用欧几里得公式: 但是欧几里得距离度量会受指标不同单位刻度的影响,所以一般需要先进行标准化。距离越大,个体间差异越大; 2、聚类分析:聚类分析是在数据中发现数据对象之间的关系,将数据进行分组,组内的相似性越大,组间的差别越大,则聚类效果越好。 3、簇类型:用不同的簇类型划分数据的结果是不同的,簇的类型有很多种。如: K-means算法过程 1)随机选取K个初始质心 2)分别计算所有样本到这K个质心的距离 3)如果样本离某质心Ki最近,那么这个样本属于Ki点群;如果到多个质心的距离相等,则可划分到任意组中 4)按距离对所有样本分完组之后,计算每个组的均值(最简单的方法就是求样本每个维度的平均值),作为新的质心 5)重复(2)(3)(4)直到新的质心和原质心相等,算法结束 如上图所示,图a表达了初始的样本集,假设质心k=2。(×和绿色×表示两个不同的质心b中随机选择两个k类所对应的类别质心,即图中的红色质心和绿c所示

K-Means算法及代码实现

匿名 (未验证) 提交于 2019-12-02 23:59:01
1.K-Means算法 K-Means算法,也被称为K-平均或K-均值算法,是一种广泛使用的聚类算法。K-Means算法是聚焦于相似的无监督的算法,以距离作为数据对象间相似性度量的标准,即数据对象间的距离越小,则它们的相似性越高,则它们越有可能在同一个类簇。之所以被称为K-Means是因为它可以发现k个不同的簇,且每个簇的中心采用簇中所含值的均值计算而成。 2.聚类的概念 聚类,则是给定的样本没有事先确定类别,根据自己需要,确定类别数量,再把样本归到不同的类别里面。也就是说,同样是垃圾分类的例子,你给一堆垃圾,我可以根据可回收、不可回收分为聚类为两堆;也可以根据可回收、不可回收、厨余垃圾聚类为三堆。而其中聚类为同一堆的条件,我们可以理解为垃圾间的相似程度。 3.k-means算法思想 1.从数据集中随机选取k个数据对象作为k个簇的初始聚类中心点,且每个数据对象对应于一个簇; 2.将剩余的数据对象根据其与各个簇中心点的距离,分别指派到离其距离最近的簇中; 3.更新每个簇的聚类中心(即重新计算各个簇内所有对象的平均值,重新分配各个数据对象); 4.直到准则函数收敛或者聚类中心不再变化,否则转到step3。 4. 代码实现 运行结果: 来源:博客园 作者: MangoWu 链接:https://www.cnblogs.com/wukuanglin/p/11488042.html

K-means聚类算法及c语言实现

匿名 (未验证) 提交于 2019-12-02 23:59:01
1. 概述 K-means聚类算法也称k均值聚类算法,是集简单和经典于一身的基于距离的聚类算法。它采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为类簇是由距离靠近的对象组成的,因此把得到 紧凑且独立的簇作为最终目标。 2. 算法核心思想 K-means聚类算法是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。 3. 算法实现步骤 1、首先确定一个k值,即我们希望将数据集经过聚类得到k个集合。 2、从数据集中随机选择k个数据点作为质心。 3、对数据集中每一个点,计算其与每一个质心的距离(如欧式距离),离哪个质心近,就划分到那个质心所属的集合。 4、把所有数据归好集合后,一共有k个集合。然后重新计算每个集合的质心。 5、如果新计算出来的质心和原来的质心之间的距离小于某一个设置的阈值(表示重新计算的质心的位置变化不大,趋于稳定,或者说收敛),我们可以认为聚类已经达到期望的结果,算法终止。

一维数组的 K-Means 聚类算法理解

匿名 (未验证) 提交于 2019-12-02 23:51:01
一、背景 煤矿地磅产生了一系列数据: 我想从这些数据中,取出最能反映当前车辆重量的数据(有很多数据是车辆上磅过程中产生的数据)。我于是想到了聚类算法 KMeans ,该算法思想比较简单。 二、算法步骤 1、从样本中随机取出k个值,作为初始中心 2、以k个中心划分这些数据,分为k个组 3、重新计算出每个组的中心,作为新中心 4、如果初始中心和新中心不相等,则把新中心作为初始中心,重复2,3。反之,结束 注意: 1、我没有用严格的算法定义,怕不好理解 2、KMeans善于处理球形数据,因此随机取k个质心,每个质心吸引离它最近的数据 3、由于质心的取值是不科学的,所以需要不断地计算调整,直到质心名副其实 三、算法分析及特点 1、从算法步骤当中可以看出有两个问题,需要解决: 2、解决上面两个问题,因场景和要求不同而有不同的小算法,由于我的数据是一维的,而不是点,所以可以简单处理: 3、此算法有两个缺点: 4、优点:简单易理解和上手 四、实现 public class KMeans { /* * 聚类函数主体。 * 针对一维 decimal 数组。指定聚类数目 k。 * 将数据聚成 k 类。 */ public static decimal[][] cluster(decimal[] p, int k) { // 存放聚类旧的聚类中心 decimal[] c = new decimal[k]

算法实现一:K-means

匿名 (未验证) 提交于 2019-12-02 23:43:01
k-means基础实现 __author__ = 'Administrator' from numpy import * import time import matplotlib . pyplot as plt # 计算距离(欧式) def euclDistance ( vector1 , vector2 ) : return sqrt ( sum ( power ( vector2 - vector1 , 2 ) ) ) # 初始中心点(随机) def initCentroids ( dataSet , k ) : numSamples , dim = dataSet . shape centroids = zeros ( ( k , dim ) ) for i in range ( k ) : index = int ( random . uniform ( 0 , numSamples ) ) centroids [ i , : ] = dataSet [ index , : ] return centroids def loaddata ( name ) : dataMat = [ ] fe = open ( name , 'r' ) for line in fe : strs = line . restrip ( ) . split ( ',' ) flt = map

K-Means算法-聚类

匿名 (未验证) 提交于 2019-12-02 23:42:01
概述: 1.聚类: 聚类是一种无监督的学习,它将相似的对象归到同一簇中。聚类的方法几乎可以应用所有对象,簇内的对象越相似,聚类的效果就越好。 聚类和分类最大的不同在于,分类的目标是事先已知的,而聚类则不一样,聚类事先不知道目标变量是什么,类别没有像分类那样被预先定义出来,所以,聚类有时也叫无监督学习 。聚类分析试图将相似的对象归入同一簇,将不相似的对象归为不同簇,那么,显然需要一种合适的相似度计算方法,我们已知的有很多相似度的计算方法,比如欧氏距离,余弦距离,汉明距离等。事实上,我们应该根据具体的应用来选取合适的相似度计算方法。 2.K-Means的聚类:K-means算法中的k表示的是聚类为k个簇,means代表取每一个聚类中数据值的均值作为该簇的中心,或者称为质心,即用每一个的类的质心对该簇进行描述 K-means算法虽然比较容易实现,但是其可能收敛到局部最优解,且在大规模数据集上收敛速度相对较慢 3.K-means算法的工作流程 1)首先,随机确定k个初始点的质心; 2)然后将数据集中的每一个点分配到一个簇中(即为每一个点找到距其最近的质心,并将其分配给该质心所对应的簇); 3)该步完成后,每一个簇的质心更新为该簇所有点的平均值 伪代码: 创建 k 个点作为起始质心,可以随机选择(位于数据边界内)    当任意一个点的簇分配结果发生改变时      对数据集中每一个点    

常用数据挖掘算法-聚类

匿名 (未验证) 提交于 2019-12-02 23:38:02
概述 数据挖掘常又被称为价值发现或者是数据勘探,一般是指从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的,人们事先不知道的、但又是潜在有用的信息和知识的过程。它是一种大量数据的高级处理方式。 常用的数据挖掘算法分为四大类:聚类、分类、关联以及推荐算法。另外还有一个预处理:降维算法 聚类算法 聚类是在一群未知类别标号的样本上,用某种算法将他们分成若干类别,这是一种无监督学习。其主要研究数据间逻辑上或物理上的相互关系。由聚类所组成的簇是一组数据对象的集合,这些对象与同一簇中的对象彼此类似,与其他簇中的对象相异。其分析结果不仅可以揭示数据间的内在联系与区别,还可以为进一步的数据分析与知识发现提供重要依据。聚类算法的聚类效果如图所示 常用的聚类算法由k-means聚类算法、Canopy 聚类算法、FCM(Fuzzy C-Means,模糊C 均值)聚类算法、DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)聚类算法、LDA(Latent Dirichlet Allocation,隐含狄利克雷分配)算法、层次聚类算法、基于EM(Expectation-Maximization,最大期望)的聚类算法等。以下将对上述聚类算法从算法的简介

MATLAB K-means聚类代码讲解

血红的双手。 提交于 2019-12-02 08:09:54
一、概述 K -means聚类采用类内距离和最小的方式对数据分类,MATLAB中自带K-means算法,最简单的调用如下: idx=kmeans(x,k) 将 n -by- p 数据矩阵 x 中的数据划分为 k 个类簇。 x 的行对应数据条数, x 的列对应数据的维度。注意:当x是向量时,kmeans将其视为n乘1数据矩阵,而不管其方向如何。kmeans返回一个n乘1向量idx,其中包含每个点的簇索引。默认情况下,kmeans使用平方欧氏距离。 二、K-means参数 典型的带参数的 K -means调用如下: [ ... ] = kmeans(..., 'PARAM1',val1, 'PARAM2',val2, ...) 由param和val构成参数键值对进行控制,常用的参数有: 1 'Distance' - 距离度量, 在P维空间中, K- means应该最小化的距离度量 'sqeuclidean' - 平方欧氏距离(默认值) 'cityblock' - 绝对差之和,即L1距离 'cosine' - 1减去点之间夹角的余弦 'correlation' - 1减去点之间的样本相关性 'hamming' - 不同位的百分比 2 'Start' - 选择初始簇质心位置的方法 'plus' - 默认值。根据k-means++算法从X中选择K个观测值。第一个聚类中心从X中随机地选择

K-means聚类算法

青春壹個敷衍的年華 提交于 2019-12-02 01:53:13
K-means聚类算法(K-平均/K-均值算法)是最为经典也是使用最为广泛的一种基于 距离 的聚类算法。基于距离的聚类算法是指采用距离作为相似性量度的评价指标,也就是说当两个对象离得近时,两者之间的距离比较小,那么它们之间的相似性就比较大。 算法的主要思想是通过 迭代过程 把数据集划分为不同的类别,使得评价聚类性能的准则函数达到最优,从而使生成的 每个聚类(又称簇)紧凑 且独立。 K-means聚类算法的缺点:对于 离群点 是敏感的,一个很大极端值的数据对象可能会显著地扭曲数据的分布。 常见的相似度/距离评价准则有: 欧几里得距离 其意义就是两个元素在欧氏空间中的集合距离,因为其直观易懂且可解释性强,被广泛用于标识两个标量元素的相异度。 曼哈顿距离 闵可夫斯基距离 聚类性能评价准则: K-means聚类算法通常使用误差平方和准则函数(等同于欧几里得距离)来评价聚类性能。给定数据集X,其中只包含描述属性,不包含类别属性。假设X包含K个聚类子集X1,X2,…XK;各个聚类子集中的样本数量分别为n1,n2,…,nk;各个聚类子集的均值代表点(也称聚类中心)分别为m1,m2,…,mk。 误差平方和准则函数公式 K-means聚类算法实例 初始数据集,共5条记录,每条数据记录包含两个属性x和y。 作为一个聚类分析的二维样本,要求的簇的数量K=2。 学习参考: https://www

03-01 K-Means聚类算法

穿精又带淫゛_ 提交于 2019-12-01 12:47:55
目录 K-Means聚类算法 一、K-Means聚类算法学习目标 二、K-Means聚类算法详解 2.1 K-Means聚类算法原理 2.2 K-Means聚类算法和KNN 三、传统的K-Means聚类算法流程 3.1 输入 3.2 输出 3.3 流程 四、K-Means初始化优化之K-Means++ 五、K-Means距离计算优化之elkan K-Means 六、大数据优化之Mini Batch K-Means 七、K-Means聚类算法优缺点 7.1 优点 7.2 缺点 八、小结 更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你: https://www.cnblogs.com/nickchen121/ K-Means聚类算法 K-means聚类算法属于无监督学习算法,它实现简单并且聚类效果优良,所以在工业界也被广泛应用。同时K-Means聚类算法也有大量的变体,本文将从最传统的K-Means聚类算法讲起,让后在其基础上讲解K-Means聚类算法的变体,其中它的变体包括初始化优化K-Means++、距离计算优化elkan K-Means和大数据情况下的优化Mini Batch K-Means算法。 一、K-Means聚类算法学习目标 K-Means聚类算法原理以及它的优缺点 K-Means初始化优化之K-Means++算法 K