目录

  • Kmeans
  • Kmeans与KNN的区别



Kmeans

        K-means算法是聚类分析中使用最广泛的算法之一。它把n个对象根据他们的属性分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。其聚类过程可以用下图表示:

K聚类训练模型保存 python kmeans聚类算法实例_算法


        如图所示,数据样本用圆点表示,每个簇的中心点用叉叉表示。(a)刚开始时是原始数据,杂乱无章,没有label,看起来都一样,都是绿色的。(b)假设数据集可以分为两类,令K=2,随机在坐标上选两个点,作为两个类的中心点。(c-f)演示了聚类的两种迭代。先划分,把每个数据样本划分到最近的中心点那一簇;划分完后,更新每个簇的中心,即把该簇的所有数据点的坐标加起来去平均值。这样不断进行”划分—更新—划分—更新”,直到每个簇的中心不在移动为止。

        该算法过程比较简单,但有些东西我们还是需要关注一下,此处,我想说一下"求点中心的算法"

        一般来说,求点群中心点的算法你可以很简的使用各个点的X/Y坐标的平均值。也可以用另三个求中心点的的公式:

1. Minkowski Distance 公式 —— K聚类训练模型保存 python kmeans聚类算法实例_数据挖掘_02可以随意取值,可以是负数,也可以是正数,或是无穷大。

K聚类训练模型保存 python kmeans聚类算法实例_聚类_03

2. Euclidean Distance 公式 —— 也就是第一个公式K聚类训练模型保存 python kmeans聚类算法实例_数据挖掘_02=2 的情况

K聚类训练模型保存 python kmeans聚类算法实例_数据挖掘_05

3. CityBlock Distance 公式 —— 也就是第一个公式K聚类训练模型保存 python kmeans聚类算法实例_数据挖掘_02=1 的情况

K聚类训练模型保存 python kmeans聚类算法实例_聚类_07

        这三个公式的求中心点有一些不一样的地方,我们看下图(对于第一个K聚类训练模型保存 python kmeans聚类算法实例_数据挖掘_02 在 0-1之间)。

K聚类训练模型保存 python kmeans聚类算法实例_聚类_09

K聚类训练模型保存 python kmeans聚类算法实例_聚类_10

K聚类训练模型保存 python kmeans聚类算法实例_K聚类训练模型保存 python_11

Kmeans与KNN的区别


Kmeans

KNN

K的含义

K是人工固定好的数字,假设数据集合可以分为K个簇,由于是依靠人工定好,需要一点先验知识

来了一个样本x,要给它分类,即求出它的y,就从数据集中,在x附近找离它最近的K个数据点,这K个数据点,类别c占的个数最多,就把x的label设为c

区别

1.K-Means是聚类算法

2.非监督学习

3.喂给它的数据集是无label的数据,是杂乱无章的,经过聚类后才变得有点顺序,先无序,后有序

4.有明显的前期训练过程

1.KNN是分类算法

2.监督学习

3.喂给它的数据集是带label的数据,已经是完全正确的数据

4.没有明显的前期训练过程,属于memory-based learning

相似点

都包含这样的过程,给定一个点,在数据集中找离它最近的点。即二者都用到了NN(Nearest Neighbor)算法,一般用KD树来实现NN。