聚类(二)—— K-Means聚类

主要内容
聚类分析概述
K-Means聚类
层次聚类
基于密度的聚类
其他聚类方法
聚类评估
小结

二、K-Means聚类

聚类分析中最广泛使用的算法为K-Means聚类算法。

算法原理

给定一个n个对象或元组的数据库,一个划分方法构建数据的k个划分,每个划分表示一个簇,k<=n,而且满足:
(1)每个组至少包含一个对象;
(2)每个对象属于且仅属于一个组。

划分时要求同一个聚类中的对象尽可能地接近或相关,不同聚类中的对象尽可能地远离或不同。K-Means算法是一个迭代的优化算法,最终使得下面均方误差最小。
在这里插入图片描述
在这里插入图片描述

用于划分的K-Means算法,其中每个簇的中心都用簇中所有对象的均值来表示。K-Means聚类模型所采用的迭代算法直观易懂且非常实用。但是具有容易收敛到局部最优解和需要预先设定簇的数量的缺点。

在这里插入图片描述
优点
1.可扩展性较好,算法复杂度为O(nkt),其中n为对象总数,k是簇的个数,t是迭代次数。
2.经常终止于局部最优解

缺点
1.只有当簇均值有定义的情况下,k均值方法才能使用。(某些分类属性的均值可能没有定义)
2.用户必须首先给定簇数目
3.不适合发现非凸形状的簇,或者大小差别很大的簇
4.对噪声和离群点数据敏感

k均值方法有些变种,他们的区别在于
1.不同的初始 k 个均值的选择
2.不同的相异度计算
3.不同的计算簇均值的策略

聚类分类数据的方法:k众数(mode)方法
1.用众数来替代簇的均值
2.采用新的相异性度量处理分类对象
3.采用基于频率的方法更新簇的众数
4.可以集成k均值和k众数方法,对具有数值和分类值的数据进行聚类

算法改进

1.K-means++算法
K-means算法初始时随机选取数据集中K个点作为聚类中心,不同的初始聚类中心可能导致完全不同的聚类结果。K-means++算法初始的聚类中心之间的相互距离要尽可能的远。

2.ISODATA算法
ISODATA的全称是迭代自组织数据分析法,是在K- means算法的基础上,增加对聚类结果的“合并”和“分裂”两个操作,当属于某个类别的样本数过少时则删除该类,当属于某个类别的样本数过多、分散程度较大时,把这个类分裂为两个子类别。

K-Means算法实现

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
iris = load_iris()  # 加载数据集
X = iris.data
estimator = KMeans(n_clusters=3)  # 构造K-Means聚类模型
estimator.fit(X)  # 数据导入模型进行训练
label_pred = estimator.labels_  # 获取聚类标签
print(label_pred)  # 显示各个样本所属的类别标签

[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 2 2 0 2 2 2 2
2 2 0 0 2 2 2 2 0 2 0 2 0 2 2 0 0 2 2 2 2 2 0 2 2 2 2 0 2 2 2 0 2 2 2 0 2
2 0]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shi_jiaye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值