机器学习笔记六:K-Means聚类,层次聚类,谱聚类

前面的笔记搞了那么多的数学,这篇来一点轻松的,提前适应一下除了监督问题以外的非监督学习。这篇笔记有没有前面那么多的数学了,要讲的聚类算是无监督的学习方式。

一.一般问题

聚类分析的目标是,创建满足于同一组内的对象相似,不同组的对象相异的对象分组.它作为一种无监督学习,将相似对象归到同一个簇中去.因此,聚类有时候被称为无监督分类.

二.K均值聚类(K-means)

Ⅰ.概念

假设有一些数据,但是没有标签.我们没有他们的类别信息,因此每个点都是一样的.你并不能够看出他们的类别信息。如下图.
机器学习笔记六:K-Means聚类,层次聚类,谱聚类_第1张图片

这时候我们需要引入距离相似性的概念:
我们认为距离越近的对象是越相似的.比如可以用点的欧式距离来衡量.当然,其他的距离度量方式也是可以的,都行.(在统计学习笔记中的KNN还会更加详细地介绍各种各样的距离)
我们的目标就是让这些数据来自动为自己分组.那为了实现这些自动分组的方法,这里就要形式化地定义聚类.对于K-means来说,它是将某一类定义为具有代表性的点,就像一个数据对象.该点为该聚类中对象的均值(K-means就是这么来的).
K-means能够发现K个不同的簇,且每个簇的中心采用簇中所含值的均值计算而成.簇个数K是我们自己定的,每一个簇通过其质心,即该簇中所有点的中心来描述.

Ⅱ.算法流程

第1步

随机确定K个初试点作为其质心,然后根据每个点到这个质心的距离(相似程度来把所有的点都划为给其中相应的质心(就是分配到相应的簇中)

第2步

上一步完成之后,将质心更新为该簇中所有点的平均值.

第3步

然后对于新的质点,再使用一次第1步.要是有变化,那么就利用第2步的方式来变化.要是没有变化.那么该算法就完成了.

从上面对于K-Means的算法流程来看,这个算法真的是很简单的一个算法了,思想很简单,所以并不是很难掌握这个算法。

Ⅲ.K-Means实现

我们的数据是N个二维的点,二维表示“坐标”是二维的,格式如下图所示,可以看到,这些数据并没有带一个标签。
机器学习笔记六:K-Means聚类,层次聚类,谱聚类_第2张图片

首先是读取数据的模块:data.py
机器学习笔记六:K-Means聚类,层次聚类,谱聚类_第3张图片

然后是K-Means算法的核心模块
机器学习笔记六:K-Means聚类,层次聚类,谱聚类_第4张图片
机器学习笔记六:K-Means聚类,层次聚类,谱聚类_第5张图片

运行模块run.py
机器学习笔记六:K-Means聚类,层次聚类,谱聚类_第6张图片

画图模块
机器学习笔记六:K-Means聚类,层次聚类,谱聚类_第7张图片

运行结果(这里设的是K=4其他的可以在程序中设置)
机器学习笔记六:K-Means聚类,层次聚类,谱聚类_第8张图片
几个类都被正确的聚类了。(其中与众不同的就是中心点啦)

--------------------- 本文来自 谢小小XH 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/xierhacker/article/details/61632529?utm_source=copy

你可能感兴趣的:(人工智能,K-Means聚类,层次聚类)