均值聚类(K-means clustering)是一种常见的聚类算法,它通过迭代的方式将数据点划分为K个簇,在Python中,可以使用scikit-learn
库来实现均值聚类,以下是使用Python进行均值聚类的基本步骤:
1、导入所需的库:
import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeans
2、准备数据集:你需要有一个数据集,这里我们使用一个简单的二维数据集作为示例:
X = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]])
3、选择聚类数(K值):在进行聚类之前,你需要确定要将数据集划分为多少个簇,这可以通过多种方法来确定,例如肘部法则(Elbow Method):
wcss = [] for i in range(1, 11): kmeans = KMeans(n_clusters=i, init='k-means++', max_iter=300, n_init=10, random_state=0) kmeans.fit(X) wcss.append(kmeans.inertia_) plt.plot(range(1, 11), wcss) plt.title('Elbow Method') plt.xlabel('Number of clusters') plt.ylabel('WCSS') plt.show()
4、应用均值聚类:根据肘部法则确定K值后,可以使用KMeans
类进行聚类:
kmeans = KMeans(n_clusters=3, init='k-means++', max_iter=300, n_init=10, random_state=0) kmeans.fit(X)
5、获取簇标签和簇中心:
y_kmeans = kmeans.predict(X) cluster_centers = kmeans.cluster_centers_
6、可视化聚类结果:为了更好地理解聚类结果,我们可以将数据点和簇中心可视化:
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, cmap='viridis') plt.scatter(cluster_centers[:, 0], cluster_centers[:, 1], c='red', s=200, alpha=0.75, marker='X') plt.title('K-means Clustering') plt.xlabel('Feature 1') plt.ylabel('Feature 2') plt.show()
7、评估聚类性能:可以使用轮廓系数(Silhouette Coefficient)来评估聚类性能,轮廓系数的值范围在-1到1之间,值越大表示聚类效果越好:
from sklearn.metrics import silhouette_score score = silhouette_score(X, y_kmeans) print("Silhouette Coefficient:", score)
本文介绍了如何使用Python进行均值聚类,包括数据准备、选择聚类数、应用聚类算法、获取簇标签和簇中心、可视化聚类结果以及评估聚类性能,通过这些步骤,你可以对数据集进行有效的聚类分析。
还没有评论,来说两句吧...