兰州在线

不足20行Python代码,高效实现k-means均值聚类算法!

CSDN我要在2天前分享

作者|徐文武

编辑器|郭伟

产品| CSDN博客

scikti-learn将机器学习分为四个领域,即分类,聚类,回归和降维。尽管k均值均值算法在聚类算法中是一个相对简单的算法,但它包含了大量的思想内容,非常适合作为初学者的入门练习。关于k均值聚类算法的原理介绍和实现代码,在线上有很多,但运行效率似乎存在一些问题。今天,我有点闲着,写了少于20行的k均值聚类算法,10,000个样本平均花费20毫秒(平均10倍)。在同一数据样本中,Internet上流行的算法平均花费3000毫秒(平均10倍)。差距超过一百倍,这让我感到惊讶,我忍不住再次屈服于麻木!这是我的代码,其中包含注释,总共26行的空白行和16行的有效代码。这是Internet上流行的k均值均值聚类算法代码,包括注释,总计57行的空白行和有效代码37行。函数create_data_set用于生成测试数据。可变参数核心是多个三元组,每个三元组是质心的x坐标,y坐标以及与质心对应的数据点的数量。测试代码如下:

测试结果如下:

效果如下:作者:徐文武,博客绰号“天元败家子”,本文首次出现在作者CSDN博客中。扫描下面的QR码,下载CSDN App,并查看博客的精彩共享收集报告投诉

作者|徐文武

编辑器|郭伟

产品| CSDN博客

scikti-learn将机器学习分为四个领域,即分类,聚类,回归和降维。尽管k均值均值算法在聚类算法中是一个相对简单的算法,但它包含了大量的思想内容,非常适合作为初学者的入门练习。关于k均值聚类算法的原理介绍和实现代码,在线上有很多,但运行效率似乎存在一些问题。今天,我有点闲着,写了少于20行的k均值聚类算法,10,000个样本平均花费20毫秒(平均10倍)。在同一数据样本中,Internet上流行的算法平均花费3000毫秒(平均10倍)。差距超过一百倍,这让我感到惊讶,我忍不住再次屈服于麻木!这是我的代码,其中包含注释,总共26行的空白行和16行的有效代码。这是Internet上流行的k均值均值聚类算法代码,包括注释,总计57行的空白行和有效代码37行。函数create_data_set用于生成测试数据。可变参数核心是多个三元组,每个三元组是质心的x坐标,y坐标以及与质心对应的数据点的数量。测试代码如下:

测试结果如下:

效果如下:作者:徐文武,博客绰号“天元败家子”,本文首次出现在作者CSDN博客中。扫描下面的QR码,下载CSDN App,并查看博客的精彩分享

-