利用python读入本地iris数据集,完成k-means聚类,分析其聚类效果。
时间: 2023-06-15 07:07:59 浏览: 121
K-means聚类分析(Iris数据集)模式识别
好的,我们可以使用Python中的`scikit-learn`库来完成这个任务。首先,我们需要安装该库:
```
pip install scikit-learn
```
然后,我们可以按照如下步骤来读入本地iris数据集,完成k-means聚类,并分析其聚类效果:
```python
# 导入必要的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
# 读入数据集
iris = load_iris()
X = iris.data # 特征矩阵
# 使用肘部法则确定最优的聚类数
inertias = []
for k in range(1, 11):
kmeans = KMeans(n_clusters=k, random_state=0).fit(X)
inertias.append(kmeans.inertia_)
plt.plot(range(1, 11), inertias)
plt.xlabel('Number of clusters')
plt.ylabel('Inertia')
plt.show()
# 根据肘部法则确定最优的聚类数k=3
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)
labels = kmeans.labels_ # 聚类标签
centers = kmeans.cluster_centers_ # 聚类中心
# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.scatter(centers[:, 0], centers[:, 1], marker='x', s=200, linewidths=3, color='r')
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.show()
```
上述代码中,我们首先使用`load_iris()`函数读入iris数据集,并提取出其特征矩阵。然后,我们使用肘部法则确定最优的聚类数,即选择聚类数使得聚类内部方差的增长开始显著减缓的点。在本例中,肘部在k=3处,因此我们选择k=3作为聚类数。最后,我们使用选择的聚类数k=3来完成K-Means聚类,并可视化聚类结果。
输出的可视化结果中,横轴为花萼长度,纵轴为花萼宽度。不同颜色的点表示不同的聚类,红色的叉号表示聚类中心。我们可以看到,K-Means算法成功地将数据集分成了三个簇。
阅读全文