质心

聚类的四种算法

爱⌒轻易说出口 提交于 2019-12-04 01:27:20
最近看了一篇论文,涉及到数据挖掘的聚类算法,这里总结一下 一、聚类算法的简介 聚类算法是一种典型的无监督学习算法,主要用于将相似的样本自动归到一个类别中。聚类算法与分类算法最大的区别是:聚类算法是无监督的学习算法,而分类算法属于监督的学习算法。在聚类算法中根据样本之间的相似性,将样本划分到不同的类别中,对于不同的相似度计算方法,会得到不同的聚类结果,常用的相似度计算方法有欧式距离法。 1、 K-Means 算法的概述 基本 K-Means 算法的思想很简单,事先确定常数 K ,常数 K 意味着最终的聚类类别数,首先随机选定初始点为质心,并通过计算每一个样本与质心之间的相似度( 这里为欧式距离),将样本点归到最相似的类中,接着,重新计算每个类的质心(即为类中心),重复这样的过程,知道质心不再改变,最终就确定了每个样本所属的类别以及每个类的质心。由于每次都要计算所有的样本与每一个质心之间的相似度,故在大规模的数据集上 , K-Means 算法的收敛速度比较慢。 1.1、 K-Means 算法的流程 l 初始化常数 K ,随机选取初始点为质心 l 重复计算一下过程,直到质心不再改变 l 计算样本与每个质心之间的相似度,将样本归类到最相似的类中 l 重新计算质心 l 输出最终的质心以及每个类 2. DBSCAN算法 2.1基本概念 ( 1 ) Eps 邻域:给定对象半径 Eps

《机器学习实战》 ch10 KMeans学习记录

别说谁变了你拦得住时间么 提交于 2019-12-03 20:35:57
我终于快把这本书看完了!!!开心! 前面学习到的算法都属于监督学习,数据都会自带标签,而接下来我们会转向无监督学习,目标变量事先不存在,无监督学习在现实生活中应用更为广泛。首先就是聚类和K-Means算法。 这一部分可以看看吴恩达的视频,感觉讲的挺清楚的,当然这本书也不错。 聚类是将相似的对象归到同一簇中,簇内的对象越相似聚类的效果越好。聚类和分类最大的不同是:分类的目标事先已经知道,但聚类不一样。聚类分析试图将相似对象归入同一簇,不相似的对象归入不同的簇,而是否相似则取决于相似度的计算方法。 K-Means是聚类算法的一种,可以发现K个不同的簇,每个簇的中心采用簇中算含数值的均值计算而成。 (1)K-Means聚类方法 K-Means的算法思想如下: 随机选择K个点作为起始质心 当任意一个点的簇分配结果改变时: 对数据集中的每个数据点: 对每个质心: 计算质心与数据点之间的距离 将数据点分配到距离其最近的簇 对每一个簇,计算簇中所有点的均值并将其作为质心 这里的距离计算方法选择欧式距离 K-Means实现起来首先需要一些辅助函数,具体代码如下: from numpy import * def loadDataSet(fileName): #general function to parse tab -delimited floats dataMat = [] #assume

问题记录-(2019/11/5)

北城余情 提交于 2019-12-03 14:37:55
坐标变换-旋转(我们把点云原坐标系称为世界坐标系,把以本身正方向得到的坐标系称为 基坐标系) 让点云cloud 旋转到与坐标轴重回,且质心位于世界坐标系原点; 1。由cloud 本身参数求得质心,获得协方差矩阵,由协方差矩阵solver 得到 vectors 和 values, 使得vectors 正交化,得到点云主方向极坐标,也是由cloud世界坐标到基坐标的旋转矩阵, 2.点云旋转至世界坐轴系重回即为基坐标向世界坐标系旋转。求仿射变换矩阵。 Eigen::Matrix4f transfroms_residual = Eigen::Matrix4f::Identity(); Eigen::Matrix4f transfroms_residual_inv = Eigen::Matrix4f::Identity(); transfroms_residual.block<3, 3>(0, 0) = eigenVectorsPCA_residual.transpose(); transfroms_residual.block<3, 1>(0, 3) = -1.0f*(eigenVectorsPCA_residual.transpose())*(pcaCentroid_residual.head<3>()); //-R*t transfroms_residual_inv =

聚类-kmeans

自古美人都是妖i 提交于 2019-12-03 09:38:56
一、作用 给定一些离散点,然后将这些离散点进行分类,这也叫做聚类。例如,将一下离散点分为两类,中心点也就是绿点和橙色的点也叫做簇心。 二、步骤 选取k个初始质心(作为初始cluster); repeat:对每个样本点,计算得到距其最近的质心,将其类别标为该质心所对应的cluster; 重新计算k个cluser对应的质心; until 质心不再发生变化 三、CODE(SKLEARN) 1 from numpy import * 2 from sklearn.cluster import KMeans 3 from sklearn.model_selection import train_test_split 4 import matplotlib.pyplot as plt 5 6 # create data 7 n_data = array([[random.randint(100, 1000), random.randint(100, 1000)] for i in range(0, 1000)]) 8 label_n = array([0 for i in range(0, 1000)]) 9 p_data = array([[-1 * random.randint(100, 1000), -1 * random.randint(100, 1000)] for i in

K-MEANS算法及sklearn实现

匿名 (未验证) 提交于 2019-12-03 00:13:02
K-MEANS算法 聚类概念: 1.无监督问题:我们手里没有标签 2.聚类:相似的东西分到一组 3.难点:如何评估,如何调参 4.要得到簇的个数,需要指定K值 5.质心:均值,即向量各维取平均即可 6.距离的度量:常用欧几里得距离和余弦相似度 7.优化目标:min$$ min \sum_{i=0}^k \sum_{C_j=0} dist(c_i,x)^2$$ 来源:博客园 作者: 刘文华 链接:https://www.cnblogs.com/liuwenhua/p/11618909.html

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

kmeans和knn相同点和不同点:

匿名 (未验证) 提交于 2019-12-02 23:42:01
kmeans和knn相同点和不同点: 一、K最近邻(kNN,k-NearestNeighbor)分类算法,找到最近的k个邻居(样本),在前k个样本中选择频率最高的类别作为预测类别。 步骤: 1)算距离:给定测试对象,计算它与训练集中的每个对象的距离 2)找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻 3)做分类:根据这k个近邻归属的主要类别,来对测试对象分类 二、K-Means算法-聚类:是一种无监督的学习,将相似的对象归到同一簇中。聚类的方法几乎可以应用所有对象,簇内的对象越相似,聚类的效果就越好。K-means算法中的k表示的是聚类为k个簇,means代表取每一个聚类中数据值的均值作为该簇的中心,或者称为质心,即用每一个的类的质心对该簇进行描述。 步骤: 1)首先,随机确定k个初始点的质心; 2)然后将数据集中的每一个点分配到一个簇中(即为每一个点找到距其最近的质心,并将其分配给该质心所对应的簇); 3)该步完成后,每一个簇的质心更新为该簇所有点的平均值 区别1:聚类和分类最大的不同在于,分类的目标是事先已知的,而聚类则不一样,聚类事先不知道目标变量是什么,类别没有像分类那样被预先定义出来,所以,聚类有时也叫无监督学习。聚类分析试图将相似的对象归入同一簇,将不相似的对象归为不同簇 区别2:K-means算法虽然比较容易实现,但是其可能收敛到局部最优解

空间曲线的质心、形心计算方法

孤街醉人 提交于 2019-12-02 11:04:07
1、质量中心简称质心,指物质系统上被认为质量集中于此的一个假想点;重心是在重力场中,物体处于任何方位时所有各组成支点的重力的合力都通过的那一点。规则而密度均匀物体的重心就是它的几何中心;面的形心就是截面图形的几何中心。 2、质心是针对实物体而言的,而形心是针对抽象几何体而言的,对于密度均匀的实物体,质心和形心重合。 3、一般情况下重心和形心是不重合的,只有物体是由同一种均质材料构成时,重心和形心才会重合。 设曲线密度为 ρ \rho ρ 曲线质量 m = ∫ L ρ   d s ( d s 是 指 对 曲 线 积 分 ) m=\int\limits_{L}\rho\,ds\qquad (ds是指对曲线积分) m = L ∫ ​ ρ d s ( d s 是 指 对 曲 线 积 分 ) 空间曲线L的质心 x ‾ = ∫ L x ρ ( x , y , z ) d s ∫ L ρ ( x , y , z ) d s \overline{x}=\frac{\int\limits_Lx\rho(x,y,z)ds}{\int\limits_L\rho(x,y,z)ds} x = L ∫ ​ ρ ( x , y , z ) d s L ∫ ​ x ρ ( x , y , z ) d s ​ y ‾ = ∫ L y ρ ( x , y , z ) d s ∫ L ρ ( x , y , z ) d