K-means python 对数据集进行聚类分析,并使用数据集测试算法性能
时间: 2024-03-19 16:39:54 浏览: 72
为了演示K-means算法的聚类分析和性能测试,我们可以使用Scikit-learn库提供的鸢尾花数据集。
首先,我们需要导入必要的库并加载数据集:
```python
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
import matplotlib.pyplot as plt
import numpy as np
data = load_iris().data
```
接下来,我们可以使用K-means算法将数据集分为不同的簇:
```python
model = KMeans(n_clusters=3, random_state=0)
clusters = model.fit_predict(data)
```
这里我们将数据集分为3个簇。接着,我们可以使用轮廓系数(silhouette score)评估聚类的性能:
```python
score = silhouette_score(data, clusters)
print(f"轮廓系数为:{score:.2f}")
```
轮廓系数是一个介于-1到1之间的值,值越接近1表示聚类效果越好。在本例中,轮廓系数为0.55,说明聚类效果较好。
最后,我们可以将聚类结果可视化,以便更好地理解聚类效果:
```python
plt.scatter(data[:, 0], data[:, 1], c=clusters)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.show()
```
这里我们以花萼长度和花萼宽度作为坐标轴,将不同簇的数据点用不同颜色表示。运行完整的代码后,我们可以得到以下结果:
![K-means聚类分析结果](https://i.imgur.com/ttW8L6j.png)
可以看出,K-means算法成功地将数据集分为了3个簇。
阅读全文