k-means聚类算法——(轮廓系数法)解决鸢尾花代码实现
时间: 2024-10-25 18:01:09 浏览: 47
k-means聚类是一种常见的无监督学习方法,用于将数据集划分为K个簇。为了评估聚类效果,轮廓系数是一种常用的评价指标,它衡量了样本与所在簇内其他样本的相似程度与其到最近其他簇的距离之间的权衡。
在Python中,我们可以使用sklearn库实现k-means聚类和计算轮廓系数。以下是一个简单的例子,以鸢尾花数据集为例:
```python
from sklearn import datasets
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
# 加载鸢尾花数据
iris = datasets.load_iris()
X = iris.data
# 设置初始簇数K
n_clusters = 3
# 训练k-means模型
kmeans = KMeans(n_clusters=n_clusters)
kmeans.fit(X)
# 预测每个样本所属的簇
labels = kmeans.labels_
# 计算轮廓系数
score = silhouette_score(X, labels)
print(f"轮廓系数: {score}")
# 如果需要可视化结果,可以使用matplotlib
import matplotlib.pyplot as plt
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.title("Iris Clusters with Silhouette Coefficient")
plt.show()
```
在这个例子中,我们首先加载鸢尾花数据,然后训练k-means模型,接着获取预测的簇标签,并利用`silhouette_score`函数计算轮廓系数。分数越高表示聚类效果越好。
阅读全文