K-means聚类是一种无监督学习算法,用于将数据点划分为K个不同的簇(cluster)。每个簇内的数据点彼此相似,而不同簇之间的数据点则具有较大的差异。K-means算法的目标是最小化每个簇内数据点与其质心(centroid)之间的距离之和。
在Python中,可以使用Sklearn库来实现K-means聚类。以下是使用Sklearn库实现K-means聚类的步骤:
- 导入所需的库和模块。
- 准备数据集。
- 创建K-means模型并设置参数。
- 训练模型并进行预测。
- 可视化结果。
以下是具体的代码实现:
# 导入所需的库和模块
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
# 准备数据集
n_samples = 300
random_state = 42
X, y = make_blobs(n_samples=n_samples, centers=4, random_state=random_state)
# 创建K-means模型并设置参数
kmeans = KMeans(n_clusters=4, init='k-means++', max_iter=300, n_init=10, random_state=random_state)
# 训练模型并进行预测
pred_y = kmeans.fit_predict(X)
# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=pred_y)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=300, c='red')
plt.show()
在这个例子中,我们首先导入了所需的库和模块,然后生成了一个包含300个数据点的数据集。接下来,我们创建了一个K-means模型,并设置了簇的数量、初始化方法、最大迭代次数等参数。然后,我们使用fit_predict
方法训练模型并进行预测。最后,我们将结果可视化,展示了数据点和簇的分布情况。