用k-means方法对鸢尾花数据集进行聚类分析
时间: 2024-05-06 08:17:22 浏览: 109
鸢尾花的聚类Kmeans聚类
首先,我们需要导入鸢尾花数据集和所需的库:
```python
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
%matplotlib inline
```
然后,我们加载数据集并将其转换为 pandas 数据格式:
```python
iris = load_iris()
iris_df = pd.DataFrame(iris.data, columns = iris.feature_names)
iris_df.head()
```
接下来,我们将使用 K-Means 聚类算法对数据进行聚类。K-Means 算法需要我们指定聚类的数量,因此我们需要先确定一个合适的聚类数量。我们可以使用肘部法图来确定最佳的聚类数量:
```python
sse = []
k_range = range(1,10)
for k in k_range:
km = KMeans(n_clusters=k)
km.fit(iris_df)
sse.append(km.inertia_)
plt.plot(k_range, sse)
plt.xlabel('Number of Clusters')
plt.ylabel('SSE')
plt.title('Elbow Method')
plt.show()
```
根据肘部法图,我们可以看到在聚类数量为 3 时,SSE 开始急剧下降。因此,我们将聚类数量设置为 3 并使用 K-Means 算法进行聚类:
```python
km = KMeans(n_clusters=3)
km.fit(iris_df)
```
我们可以通过以下代码检查每个数据点的聚类分配:
```python
iris_df['cluster'] = km.labels_
iris_df.head()
```
最后,我们可以使用 matplotlib 可视化聚类结果:
```python
plt.scatter(iris_df['sepal length (cm)'], iris_df['sepal width (cm)'], c=iris_df['cluster'])
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.title('K-Means Clustering')
plt.show()
```
这将显示一个散点图,其中每个数据点的颜色表示其所属的聚类。
阅读全文