Python机器学习算法之k均值聚类(k-means)
什么是k均值聚类?
k均值聚类是一种常见的无监督学习算法,它可以将数据集划分成k个簇。在k均聚类中,我们需要考虑以下几个问题:
- 如何初始化簇的中心点?
- 如何计算数据点和簇中心点间的距离?
- 如何更新簇的中心点?
在k均值聚类中,我们通常使用随机初始化的方式来初始化簇的中心点。在计算数据点和簇中心点之间的距离时,我们通常使用欧几里得距离或者曼哈顿距离。在更新簇的中心点时,我们通将簇中所有数据点的坐标的平均值作为新的簇中心点。
如何在中实现k均值聚类?
在Python中,我们可以使用sklearn
库来实现k均值聚类。下面是一个简单的例代码:
from sklearn.cluster import KMeans
import numpy as np
X = np.array([[1, 2], [1, 4], [1, 0],
[4, 2], [4, 4], [4, 0]])
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
print(kmeans.labels_)
print(kmeans.predict([[0, 0], [4, 4]]))
print(kmeans.cluster_centers_)
在这个代码中,我们使用了KMeans
类来实现k均值聚类。我们使用了fit
函数来拟合数据,使用了labels_
属性来获取每个数据点所属的簇,使用了predict
函数来预测新的数据点所属的簇,使用了cluster_centers_
属性来获取每个簇的中心点。
示例说明
示例1:使用k均值聚类对鸢尾花数据集进行聚类
在这个示例中,我们将使用k均值聚类对鸢尾花数据集进行聚类。假设我们有一个鸢尾花数据集,我们的目标是将它划分成k个簇。下面是Python代码:
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
iris = load_iris()
X = iris.data
y = iris.target
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)
print(kmeans.labels_)
在这个代码中,我们使用了load_iris
函数来加载鸢尾花数据集,使用了KMeans
类来实现k均值聚类。我们将数据集划分成3个簇,使用fit
函数来拟合数据,使用labels_
属性来获取每数据点所属的簇。
输出结果如下:
[1 2 2 2 1 1 2 1 2 2 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 2 1 1 1 1 2 2
1 1 2 1 2 1 1 1 2 1 1 21 1 0 0 0 2 0 0 0 2 0 2 0 2 0 2 0 0 2 0 2 02 2
0 0 0 2 0 2 0 2 2 2 0 0 2 2 0 2 0 0 2 2 2 0 2 2 2 0 2 0 2 2 2 2 2 0 2 2
2 0]
这个结果表示我们成功地将鸢尾花数据集划分成了3个簇。
示例2:使用k均值聚类对手写数字数据集进行聚类
在这个示例中,我们将使用k均值聚类对手写数字数据集进行聚类。假设我们有一个手写数字数据集,我们的目标是将它划分成k个簇。下面是Python代码:
from sklearn.datasets import load_digits
from sklearn.cluster import KMeans
digits = load_digits()
X = digits.data
y = digits.target
kmeans = KMeans(n_clusters=10, random_state=0).fit(X)
print(kmeans.labels_)
在这个代码中,我们使用了load_digits
函数来加载手写数字数据集,使用了KMeans
类来实现k均值聚类。我们将数据集划分成10个簇,使用fit
函数来拟合数据,使用labels_
属性来获取每个数据点所属的簇。
输出结果如下:
[8 0 0 ... 0 3 3]
这个结果表示我们成功地将手写数字数据集划分成了10个簇。
总结
本文介绍了k均值聚类的原理、Python实现以及两个示例说明。k均值聚类是一种基于距离的聚类算法,它的核心思想是将数据集划分成k个簇,使得每个数据点都属于离它最近的簇。在Python中,我们可以使用sklearn
库来实现k均值聚类。我们可以使用KMeans
类来实现k均值聚类,使用fit
函数来拟合,使用labels_
属性来获取每个数据点所属的簇。我们可以使用k均值聚类对鸢尾花数据集和手写数字数据进行聚类。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python机器学习算法之k均值聚类(k-means) - Python技术站