Python聚类算法之基本K均值实例详解
什么是聚类算法
聚类(Clustering)是一种将对象集合分成多个类别(clusters)的方法,使得每个簇内的对象都更加相似,而不同簇的对象则不相似。聚类算法在机器学习、图像处理、数据挖掘等领域有着广泛的应用。
K均值算法简介
K均值(K-means)是一种最常见的聚类算法之一,也是一种迭代算法。数据点被划分到与其最近的簇中,并重新计算簇的中心点,直到簇的分配不再变化为止。K均值算法的核心思想是以欧式距离作为样本间的距离度量。
K均值算法过程
-
首先需要指定簇的个数K。
-
从样本中随机选择K个点作为初始中心点。
-
根据欧式距离计算每个样本与K个中心点的距离,将每个样本划分到距其最近的中心点所在的簇中。
-
重新计算每个簇的中心点,即将簇内所有样本的属性值相加,然后除以样本个数。
-
当簇的分配不再发生变化,即所有数据点都已经划分到恰当的簇中,计算结束。
Python实现K均值
我们以Iris数据集为例,展示如何使用Python实现K均值算法。
import numpy as np
from sklearn.cluster import KMeans
from sklearn import datasets
# 加载数据集
iris = datasets.load_iris()
x = iris.data
# 使用K均值算法分类
kmeans = KMeans(n_clusters=3, random_state=0).fit(x)
以上代码使用了Python中的sklearn库中的KMeans模型,将数据集分为三个类别。如果使用不同的簇数,可以调整参数n_clusters。
K均值算法示例
为了更好地理解K均值算法的过程,我们举两个简单的例子。
例子1
假设有6个数据点,需要将其分为两类,初始中心点随机选择。
数据点:[3, 4, 5, 10, 11, 12]
初始中心点:[7, 13]
第一次迭代:
- 簇1:[3, 4, 5]
- 簇2:[10, 11, 12]
中心点分别为:[4, 11]
第二次迭代:
- 簇1:[3, 4, 5]
- 簇2:[10, 11, 12]
中心点分别为:[4, 11]
簇的分配不再发生变化,计算结束。
例子2
假设有9个数据点,需要将其分为三类,初始中心点随机选择。
数据点:[0.7, 2, 3, 5, 9, 10.1, 10.3, 11, 12]
初始中心点:[1, 5, 11]
第一次迭代:
- 簇1:[0.7, 2, 3]
- 簇2:[5, 9, 10.1, 10.3]
- 簇3:[11, 12]
中心点分别为:[1.57, 8.8, 11.5]
第二次迭代:
- 簇1:[0.7, 2, 3]
- 簇2:[5, 9, 10.1, 10.3]
- 簇3:[11, 12]
中心点分别为:[1.57, 8.8, 11.5]
簇的分配不再发生变化,计算结束。
总结
K均值算法是一种基本的聚类算法,通过迭代计算K个簇的中心点,将数据集分为K个类别。在Python中,可使用sklearn库中的KMeans实现K均值算法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python聚类算法之基本K均值实例详解 - Python技术站