K-均值聚类是一种常用的无监督学习算法,用于将数据集划分为K个簇,使得每个簇内的数据点尽可能相似,而簇间的数据点尽可能不同。以下是使用Python实现给定数据集的最优k-均值聚类的步骤和相关概念。
import numpy as np
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
import matplotlib.pyplot as plt
# 示例:生成随机数据集
np.random.seed(42)
X = np.random.rand(100, 2) # 100个二维数据点
# 使用轮廓系数评估不同K值的聚类效果
silhouette_scores = []
for k in range(2, 11):
kmeans = KMeans(n_clusters=k, random_state=42)
labels = kmeans.fit_predict(X)
score = silhouette_score(X, labels)
silhouette_scores.append(score)
# 找到轮廓系数最高的K值
optimal_k = np.argmax(silhouette_scores) + 2
print(f"最优的K值为: {optimal_k}")
# 使用最优的K值进行聚类
kmeans = KMeans(n_clusters=optimal_k, random_state=42)
labels = kmeans.fit_predict(X)
# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], marker='*', s=200, c='red')
plt.title(f'K-均值聚类 (K={optimal_k})')
plt.xlabel('特征1')
plt.ylabel('特征2')
plt.show()
通过上述步骤和方法,可以有效地实现并优化k-均值聚类算法,适用于多种实际应用场景。
领取专属 10元无门槛券
手把手带您无忧上云