划分聚类算法K-Means的实现与测试代码
时间: 2024-10-10 18:13:38 浏览: 63
K-Means是一种常用的无监督机器学习聚类算法,它的基本思想是将数据集划分为k个大小相等、密度较高的簇。以下是K-Means的一个简单Python实现,使用sklearn库:
```python
from sklearn.cluster import KMeans
import numpy as np
# 创建一个假想的数据集
X = np.array([[1, 2], [1.5, 1.8], [5, 8], [8, 8], [1, 0.6], [9, 11]])
# 初始化K-Means模型,设定簇的数量k
kmeans = KMeans(n_clusters=3)
# 训练模型,找到最优的簇中心
kmeans.fit(X)
# 预测每个点所属的簇
labels = kmeans.labels_
# 获取每个簇的中心
centroids = kmeans.cluster_centers_
# 测试:比如检查预测结果是否合理,或者计算聚类误差
inertia = kmeans.inertia_ # 聚类误差平方和,越小越好
print("Labels:", labels)
print("Centroids:", centroids)
print(f"Inertia (sum of squared distances to the closest centroid): {inertia}")
```
在这个例子中,我们首先创建了一个二维数组作为输入数据,然后实例化了`KMeans`对象并指定簇数k。通过`.fit()`方法训练模型,得到每个数据点的标签(表示所属的簇),以及所有簇的中心。`inertia_`属性则反映了聚类的效果。
在测试阶段,你可以检查标签分配是否合理,或者评估聚类效果的其他指标,如轮廓系数、Calinski-Harabasz指数等。
阅读全文