质心

[PCL] 3D特征点概述(1)

廉价感情. 提交于 2019-12-02 05:40:01
广泛使用的几何点特征的示例是下图的表面在查询点p处的估计曲率和法线。被认为是局部特征,因为它们使用由其k个最近点邻居提供的信息来表征点。 为了有效地确定这些邻居,输入数据集通常使用空间分解技术(八叉树或kd树)分割成更小的块( 上:kd-tree,下:八叉树),然后执行在那个空间里最近点搜索。 接下来介绍几种特征点性质属性,以及应用的场景领域。 PFH (Point Feature Histogram) 一种局部特征点。 输入格式: (1)由一组带有方向的点P组成的点云。有方向意味着所有点都具有正常的N(法向量)。 (2)此功能不使用颜色信息。 工作原理: (1)迭代点云P中的点。 (2)对于输入云中的每个点Pi(i是迭代索引),收集具有半径r的Pi周围的球体内的所有相邻点。 这个集合称为Pik(k为k个邻居) (3)循环关于Pik中的两对点,比如p1和p2。 法线与矢量p1-p2的角度较小的点是源点ps,另一个是目标点pt。 (4)计算四个特征,它们一起表示目标点pt处的平均曲率。 将它们组合并放入等效的直方图箱中。 简短概述: (1)为P中的所有的点云计算法线。 (2)估计P中的点Pi的特征:获取围绕点Pi(Pik)的半径r中的k个邻居的集合。在两点之间计算四个特征。相应的bin增加1.生成点特征直方图(PFH)。 (3)将得到的直方图组与其他点云的组进行比较,以便找到对应关系

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

K-Mean聚类算法

无人久伴 提交于 2019-11-30 18:09:48
K-Means 是发现给定数据集的 K 个簇的聚类算法, 之所以称之为 K-均值 是因为它可以发现 K 个不同的簇, 且每个簇的中心采用簇中所含值的均值计算而成. 优缺点: 优点: 属于无监督学习,无须准备训练集 原理简单,实现起来较为容易 结果可解释性较好 缺点: 需手动设置k值。 在算法开始预测之前,我们需要手动设置k值,即估计数据大概的类别个数,不合理的k值会使结果缺乏解释性 可能收敛到局部最小值, 在大规模数据集上收敛较慢 对于异常点、离群点敏感 流程伪代码: 创建 k 个点作为起始质心(通常是随机选择) 当任意一个点的簇分配结果发生改变时(不改变时算法结束) 对数据集中的每个数据点   对每个质心 计算质心与数据点之间的距离 将数据点分配到距其最近的簇 对每一个簇, 计算簇中所有点的均值并将均值作为质心 二分K-Mean聚类算法流程: 将所有点看成一个簇 当簇数目小于 k 时 对于每一个簇 计算总误差 在给定的簇上面进行 KMeans 聚类(k=2) 计算将该簇一分为二之后的总误差 选择使得误差最小的那个簇进行划分操作 核心代码: 1 def kMeans(dataMat, k, distMeas=distEclud, createCent=randCent): 2 ''' 3 创建K个质心,然后将每个店分配到最近的质心,再重新计算质心。 4 这个过程重复数次

Python Monte Carlo K-Means聚类实战研究

放肆的年华 提交于 2019-11-29 16:23:46
原文链接: http://tecdat.cn/?p=6689 在本文中,188个国家基于这19个社会经济指标聚集在一起,使用Python实现的蒙特卡罗K-Means聚类算法。通过将类似国家分组在一起并对其进行概括,聚类可以帮助减少识别有吸引力的投资机会所需的工作量。 在讨论聚类国家和得出结论的结果之前,本文详细介绍了距离度量,聚类质量测量,聚类算法,K-Means聚类算法。 聚类理论 - 相似与距离的度量 聚类是将一组异构(不同)对象划分为同类(相似)对象的子集的过程。聚类分析的核心是假设给定任何两个对象,您可以量化这些对象之间的相似性或不相似性。在连续搜索空间中距离测量相似性。 下面我写了关于连续搜索空间的相似性度量。对于每个我都包含公式(给定两个向量, 和 q )和Python代码。用于编写本文的所有Python代码都可用。 聚类理论 - 聚类算法类 聚类算法的两个主要类别是 分层聚类和分区聚类 。分层聚类通过将小聚类合并为较大的聚类或将较大的聚类分成较小的聚类来形成聚类。分区聚类通过将输入数据集划分为互斥的子集来形成聚类。 分层和分区聚类之间的差异主要与所需的输入有关。分层聚类仅需要相似性度量,而分区聚类可能需要许多额外的输入,最常见的是簇的数量。一般而言,分层聚类算法也更适合于分类数据。ķķ 分层聚类 有两种类型的层次聚类,即 凝聚聚类 和 分裂聚类

k-means聚类分析范例程序

无人久伴 提交于 2019-11-29 12:05:29
K-Means聚类算法原理参考以下链接: https://www.cnblogs.com/pinard/p/6164214.html 2. 传统K-Means算法流程     在上一节我们对K-Means的原理做了初步的探讨,这里我们对K-Means的算法做一个总结。     首先我们看看K-Means算法的一些要点。     1)对于K-Means算法,首先要注意的是k值的选择,一般来说,我们会根据对数据的先验经验选择一个合适的k值,如果没有什么先验知识,则可以通过交叉验证选择一个合适的k值。     2)在确定了k的个数后,我们需要选择k个初始化的质心,就像上图b中的随机质心。由于我们是启发式方法,k个初始化的质心的位置选择对最后的聚类结果和运行时间都有很大的影响,因此需要选择合适的k个质心,最好这些质心不能太近。     好了,现在我们来总结下传统的K-Means算法流程。      输入是样本集 D = { x 1 , x 2 , . . . x m } ,聚类的簇树k,最大迭代次数N     输出是簇划分 C = { C 1 , C 2 , . . . C k }       1) 从数据集D中随机选择k个样本作为初始的k个质心向量: { μ 1 , μ 2 , . . . , μ k }     2)对于n=1,2,...,N       a) 将簇划分C初始化为 C

算法笔记

南笙酒味 提交于 2019-11-28 22:46:45
Kmeans 无监督 聚类 质心 首先选取k个初始质心(用户自选),每个数据点都被收到其最近的质心分类中去,然后根据本次分类结果,更新每个簇的质心,直到质心不再改变(一般用较弱的条件替代 直到仅有1%改变簇) 问题:对初值 离群点敏感 来源: https://blog.csdn.net/qq_41175067/article/details/100145751

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

点点圈 提交于 2019-11-28 19:18:15
坐标变换-旋转(我们把点云原坐标系称为世界坐标系,把以本身正方向得到的坐标系称为 基坐标系) 让点云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

时间秒杀一切 提交于 2019-11-28 15:15:11
聚类算法 主要的应用场景:可以使用聚类算法,按照相似性,以及结构性的概念,来对数据进行组织 重要的应用:对数据进行无监督的预分类,面对一个复杂的分类问题,可以使用聚类算法,首先对手上的数据进行预分类,对聚类算法得出的每一类,应用一个不同的分类模型,最后把这些模型的结果组合起来得到最后一个组合的分类模型 聚类算法分为 ​ 分割型聚类:把给定的数据点分割到不同的类中 ​ 层次聚类:把数据分层,得到一个树状的结构,这个结构动态的显示了类别与类别之间的嵌套关系 聚类算法的作用:进行数据压缩 Hard-Kmeans Hard kmeans 分为 kmeans 和 k-medoids kmeans的缺点: 聚类中心不一定属于数据集 使用了 L2 距离,就是平方了,很容易被噪声影响 对于kmeans算法的优化, k-medoids 算法,改进之处 限制聚类中心一定要来自数据集 使用 L1 距离 不过k-medoids算法因为中心一定要来自于数据集,所以更新质心的算法复杂度是O(n^2) kmeans的扩展:soft-kmeans Soft-Kmeans Hard-Kmeans 本质上就是求 取那几个中心点 可以使得这个簇中的点到属于它的中心点之和最小, 损失函数: 换一种视角来看这个损失函数 👇 其实损失函数可以更换一种方式表达 就是给每一个样本点到质心的距离一个加权

K-均值聚类(Python3)

一个人想着一个人 提交于 2019-11-28 11:05:02
K-均值聚类(Python3) 1. K均值算法 K-均值 是发现给定数据集的 k k k 个簇的算法。簇个数 k k k 是由用户给定的,每个簇通过其 质心 (centroid),即簇中所有点的中心来描述。 给定样本集 D = { x 1 , x 2 , ⋯ &ThinSpace; , x m } D=\{\boldsymbol{x}_1,\boldsymbol{x}_2,\cdots,\boldsymbol{x}_m\} D = { x 1 ​ , x 2 ​ , ⋯ , x m ​ } ,“ k k k 均值”( k k k -means)算法所得簇划分 C = { C 1 , C 2 , ⋯ &ThinSpace; , C k } C=\{C_1,C_2,\cdots,C_k\} C = { C 1 ​ , C 2 ​ , ⋯ , C k ​ } 最小化平方误差 E = ∑ i = 1 k ∑ x ∈ C i ∥ x − μ i ∥ 2 2 E=\sum_{i=1}^{k}\sum_{\boldsymbol{x} \in C_i}^{}{\lVert \boldsymbol{x}-\boldsymbol{\mu}_i \rVert^2_2} E = i = 1 ∑ k ​ x ∈ C i ​ ∑ ​ ∥ x − μ i ​ ∥ 2 2 ​ 其中 μ i = 1 ∣ C i

8.最佳电影聚类分析

拈花ヽ惹草 提交于 2019-11-27 08:17:41
8.最佳电影聚类分析 将使用电影简介作为原始数据,将总共 100 部流行电影进行聚类分析。IMDb 也称为互联网电影数据库(www.imdb.com),是一个在线的数据库,它提供有关电影、电子游戏和电视节目的大量详细信息。它聚集了电影和电视节目的评论以及简介,并有几个精选影片清单。原始数据地址 https://www.imdb.com/list/ls055592025/ 上获取名为 “100部最佳影片(中级清单),可在 https://github.com/brandomr/document_cluster 处进行下载。 解析并清洗了数据,并作为原始数据中缺少简介的几部电影添加了影片介绍。这些简介和电影描述来自维基百科。数据解析完成后,将它们存储在数据框中,并将其保存至 movie_data.csv 文件中: $ wget https: //mirror .shileizcc.com /wiki_Resources/python/text_analysis/movie_data .csv 将在聚类分析中加载并使用该文件中的数据,首先,需要加载并查看电影数据的内容,如下代码所示: import pandas as pd import numpy as np movie_data = pd.read_csv( 'movie_data.csv' ) print (movie_data