美文网首页机器学习之入门算法
K-Means算法原理及程序实现

K-Means算法原理及程序实现

作者: 倚剑笑苍穹 | 来源:发表于2018-08-01 16:17 被阅读0次

一、算法介绍

(1)算法思想

Kmeans算法是一个重复移动类中心点的过程,把类的中心点,也称重心(centroids),移动到其包含成员的平均位置,然后重新划分其内部成员。k是算法计算出的超参数,表示类的数量;Kmeans可以自动分配样本到不同的类,但是不能决定究竟要分几个类。k必须是一个比训练集样本数小的正整数。有时,类的数量是由问题内容指定的。例如,一个鞋厂有三种新款式,它想知道每种新款式都有哪些潜在客户,于是它调研客户,然后从数据里找出三类。也有一些问题没有指定聚类的数量,最优的聚类数量是不确定的。后面我将会详细介绍一些方法来估计最优聚类数量。

Kmeans的参数是类的重心位置和其内部观测值的位置。与广义线性模型和决策树类似,Kmeans参数的最优解也是以成本函数最小化为目标。Kmeans成本函数公式如下:

图1.成本函数J

μi是第k个类的重心位置。成本函数是各个类畸变程度(distortions)之和。每个类的畸变程度等于该类重心与其内部成员位置距离的平方和。若类内部的成员彼此间越紧凑则类的畸变程度越小,反之,若类内部的成员彼此间越分散则类的畸变程度越大。求解成本函数最小化的参数就是一个重复配置每个类包含的观测值,并不断移动类重心的过程。首先,类的重心是随机确定的位置。实际上,重心位置等于随机选择的观测值的位置。每次迭代的时候,Kmeans会把观测值分配到离它们最近的类,然后把重心移动到该类全部成员位置的平均值那里。

(2)算法步骤

图2.算法步骤

(3)算法的程序实现流程

图3.算法流程

二、算法的程序实现(Python)

由于简书不支持代码格式,所以就不直接粘贴过来了,如需查看算法程序,请戳此处链接:

K-Means算法.py

三、算法实现的效果图

图3.原始数据撒点图 图四.K-Means聚类后的数据撒点图

相关文章

  • K-Means - 基于tensorflow实现程序

    本文之编写程序涉及到API介绍,程序的完整实现,具体算法原理请查看之前所写的K-Means算法介绍 一、基础准备 ...

  • K-Means - 基于scikit实现程序

    本文之编写程序涉及到API介绍,程序的完整实现,具体算法原理请查看之前所写的K-Means算法介绍 一、基础准备 ...

  • K-Means - 基于numpy实现程序

    本文之编写程序涉及到API介绍,程序的完整实现,具体算法原理请查看之前所写的K-Means算法介绍 一、基础准备 ...

  • K-Means算法原理及程序实现

    一、算法介绍 (1)算法思想 Kmeans算法是一个重复移动类中心点的过程,把类的中心点,也称重心(centroi...

  • k-means算法总结

    目录 一、k-means算法原理 二、k-means算法目标函数是什么 三、总结 一、k-means算法原理 k-...

  • 聚类

    K-means算法(理论+opencv实现) OpenCV3.3中K-Means聚类接口简介及使用

  • K-Means聚类分析实战

    一、K-means算法原理 K-means算法是无监督学习算法中的聚类算法,根据特征上的相似性,把数据聚集在一起,...

  • 【算法周】光说不练都是假的!K-means实践篇来啦~

    欢迎大家关注公众号【哈希大数据】在昨天的K-Means聚类算法原理中,我们对K-Means的原理做了总结,本文我们...

  • K均值算法(K-Means)

    博客CSDN:深入浅出K-Means算法博客:机器学习算法-K-means聚类分布式:MapReduce实现并行化...

  • 基于K-means聚类算法的图像分割

    1 K-means算法 实际上,无论是从算法思想,还是具体实现上,K-means算法是一种很简单的算法。它属于无监...

网友评论

    本文标题:K-Means算法原理及程序实现

    本文链接:https://www.haomeiwen.com/subject/selrvftx.html