聚类(Clustering)是一种典型的非监督机器学习任务,用于将无标签的输入数据按照一定的特征来区分为不同的类别。与分类(Classification)相比,其不会生成有意义的类别标签。
比如根据形状,对由若干片点云组成的数据集(“猫”、“狗”、“人”)进行聚类,不考虑错误,也只能得到三个类别(1,2,3),这三个类别只表示这个数据集在形状这一标准下可以被分成这三种不同类别,类别“1”有可能是“猫”、“狗”、“人”中的任何一种。因此在完成聚类后还需通过其他方法来验证分出的类别的具体含义,以及聚类操作是否有效。
聚类的方法有很多,可以基于划分(K-means、K-plane、K-Medoids等)、基于密度(DBSCAN、HDBSCAN等)、基于层次(BIRCH、CURE等)等多种方法进行。而其中,基于欧式距离划分的K-means聚类算法又是最基本的一种。
K-means算法的聚类思想是:处于同一类内的点,到该类聚类中心的距离应当尽可能小,而处于不同类内的点,到其他聚类中心的距离应当尽可能大。
K-means算法的执行过程为:
首先,指定数据集划分的类数K,随机在样本空间中选取K个点作为初始聚类中心;
然后,计算每个点,到K个聚类中心的距离,将该点分配给离它最近的聚类中心,遍历所有数据点后,形成了初始的聚类点云;
然后,对每一类的聚类点云取质心,作为新的聚类中心;
然后,再次计算每个点到新的K个聚类中心的距离,同样将该点分配给离它最近的聚类中心。遍历后,形成新的聚类点云;
对新的聚类点云取质心,再形成下一轮迭代的聚类中心,一直迭代下去。可以指定迭代次数,也可以指定质心不再变化或变化很小时,终止执行,输出聚类结果。
整体代码分为四个模块,分别用于初始化聚类中心、计算所有点到聚类中心的距离、更新聚类中心和返回聚类结果。
测试代码,使用sklearn库内置的尾花数据集,也可以自定义数据集:
到此这篇python读取pcap文件(python读取pcd文件)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/pythonbc/51413.html