K均值算法是如何让数据自动分组

  

本篇文章给大家分享的是有关K 均值算法是如何让数据自动分组,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

下面要介绍的K 均值算法是一种无监督学习

与分类算法相比,无监督学习算法又叫聚类算法,就是只有特征数据,没有目标数据,让算法自动从数据中“学习知识”,将不同类别的数据聚集到相应的类别中。

1,K 均值算法

K 均值的英文为K-Means,其含义是:

  • K:表示该算法可以将数据划分到K 个不同的组中。

  • 均值:表示每个组的中心点是组内所有值的平均值

K 均值算法可以将一个没有被分类的数据集,划分到K 个类中。某个数据应该被划分到哪个类,是通过该数据与群组中心点相似度决定的,也就是该数据与哪个类的中心点最相似,则该数据就应该被划分到哪个类中。

关于如何计算事物之间的相似度,可以参考文章《计算机如何理解事物的相关性》。

使用K 均值算法的一般步骤是:

  1. 确定K 值是多少:

    • 对于K 值的选择,可以通过分析数据,估算数据应该分为几个类。

    • 如果无法估计确切值,可以多试几个K 值,最终将划分效果最好的K 值作为最终选择。

  2. 选择K 个中心点:一般最开始的K 个中心点随机选择的。

  3. 将数据集中的所有数据,通过与中心点的相似度划分到不同的类别中。

  4. 根据类别中的数据平均值,重新计算每个类别中心点的位置。

  5. 循环迭代第3,4步,直到中心点的位置几乎不再改变,分类过程就算完毕。

K 均值算法是如何让数据自动分组

2,K 均值算法聚类过程

下面以一个二维数据点的聚类过程,来看下K 均值算法如何聚类。

首先,这里有一些离散的数据点,如下图:

K 均值算法是如何让数据自动分组

我们使用K 均值算法对这些数据点进行聚类。随机选择两个点作为两个类的中心点,分别是红色x蓝色x

K 均值算法是如何让数据自动分组

计算所有数据点到这两个中心点的距离,距离红色x 近的点标红色,距离蓝色x 近的点标蓝色:

K 均值算法是如何让数据自动分组

重新计算两个中心点的位置,两个中心点分别移动到新的位置:

K 均值算法是如何让数据自动分组

重新计算所有数据点分别到红色x蓝色x的距离,距离红色x 近的点标红色,距离蓝色x 近的点标蓝色:

K 均值算法是如何让数据自动分组

再次计算两个中心点的位置,两个中心点分别移动到新的位置:

K 均值算法是如何让数据自动分组

直到中心点的位置几乎不再变化,聚类结束。

以上过程就是K 均值算法的聚类过程。

3,K 均值算法的实现

K 均值算法是一个聚类算法,sklearn 库中的 cluster 模块实现了一系列的聚类算法,其中就包括K 均值算法。

来看下KMeans 类的原型:

KMeans(
  n_clusters=8,
  init=& # 39; k - means + + & # 39;,,
  n_init=10,
  max_iter=300,,
  托尔=0.0001,,
  precompute_distances=& # 39;弃用,,,
  verbose=0,,
  random_state=没有,,
  copy_x=True,,
  n_jobs=& # 39;弃用,,,
  algorithm='auto')

K均值算法是如何让数据自动分组