Python实现kMeans算法的完整攻略
kMeans算法是一种常用的聚类算法,用于将数据集分成k个簇。本文将详细讲解Python实现kMeans算法的整个攻略,包括算法原理、实现过程和示例。
算法原理
kMeans算法的基本思想是将数据集分成k个簇,每个包含距离最近的数据。在Python中,可以使用scikit-learn库来实现kMeans算法。
具体来说,算法分为以下几个步骤:
- 初始化k个质心。
- 将每个数据点分配到距离最近的质心所在的簇中。
- 重新计算每个簇的质心。
- 重复步骤2和3,直到质不再变化或达到最大迭次数。
实现过程
以下是使用Python实现kMeans算法的示例代码:
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 = KMeans(n_clusters=2, random_state=0)
# 训练模型
kmeans.fit(X)
# 输出簇中心和标签
print(kmeans.cluster_centers_) # 输出[[4. 2.], [1. 2.]]
print(k.labels_) # 输出[1 1 1 0 0 0]
上述代码中,首先使用numpy库生成一个二维数据集X。然后使用scikit-learn库中的KMeans类初始化kMeans模型,并簇数为2。接着使用fit方法训练模型,并输出簇中心和标签。
示例1
以下是使用kMeans算法对Iris集进行聚类的示例代码:
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
# 加载数据集
iris = load_iris()
X = iris.data
# 初始化kMeans模型
means = KMeans(n_clusters=3, random_state=0)
# 训练模型
kmeans.fit(X)
# 输出簇中心和标签
print(kmeans.cluster_centers_)
print(kmeans.labels_)
上述代码中,首先使用scikit-learn库中的load_iris函数加载Iris数据集。然后使用KMeans类初始化kMeans模型,并设置簇数为3。接着使用fit方法训练模型,并输出簇中心和标签。
示例2
以下是使用kMeans算法对手写数字数据集进行聚类的示例代码:
from sklearn.datasets import load_digits
from sklearn.cluster import KMeans
# 加载数据集
digits = load_digits()
X = digits.data
# 初始化kMeans模型
kmeans = KMeans(n_clusters=10, random_state=0)
# 训练模型
kmeans.fit(X)
# 输出簇中心和标签
print(kmeans.cluster_centers_)
print(kmeans.labels_)
上述代码中,首先使用scikit-库中的load_digits函数加载手写数字集。然后使用KMeans类初始化kMeans模型,并设置簇数为10。接着使用fit方法训练模型,并输出簇中心和标签。
总结
本文详细讲解了Python实现kMeans算法的整个略,包括算法原理、实现过程和示例。kMeans算法是一种常用的聚类算法,可以用于将数据分成k个簇。在Python中,可以使用scikit-learn库来实现kMeans算法,实现过程上述所示。通过示例看到kMeans算法在实际应用中的灵活性和实用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现kMeans算法 - Python技术站