文章目录
概述
KMeans是一种无监督学习的方法。他是一种分类算法。用于探索原始数据,将原始数据中相同属性的样本归为一类。这篇文章只讲KMeans的简单使用,关于评估结果好坏的内容,看我下一篇文章。
KMeans中几个概念
- 簇: 即分组,KMeans将数据分为K个簇,簇间差异大,簇内差异小
- 质心: 簇中所有数据的均值就是该簇的质心。例如二维平面中一个簇的点的质心为该簇中所有点很纵坐标坐标的均值
- 簇内误差: 样本点到他所在的质心的距离之和,用来衡量簇的差异
KMeans工作过程
- 随机抽取K个样本点,作为初始质心
- 将每个样本划分到离他最近的质心所在簇
- 将每个样本分好簇后,计算每个簇的新的质心
- 重复2,3过程,知道新的质心不在产生变化
KMeans使用示例
导入相关模块
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
import warnings
%matplotlib inline
# 忽略警告
warnings.filterwarnings("ignore")
生成原始数据
这里使用sklearn中make_blobs方法来产生原始数据,关于该方法的使用,看我的另一篇文章。这里用这个方法生成的数据会返回标签(即每个样本所属的分类),方便验证KMeans的结果。
# 产生用于KMeans聚类的数据
# 在实际的生活中,我们并不会知道数据的分簇情况,这是需要我们