请基于 Iris 数据集设计聚类模型,对其进行聚类 分析,聚类数为 3,要求利用常用性能度量方法评价聚类效果,并给出聚类可视化效果图
时间: 2024-05-23 07:11:57 浏览: 101
对iris数据进行聚类分析的源程序
5星 · 资源好评率100%
好的,我可以帮您完成这个任务。首先,让我们来了解一下 Iris 数据集。
## Iris 数据集
Iris 数据集是常用的分类实验数据集,由 Fisher 在 1936 年整理。该数据集包含 3 类,每类 50 个实例,每个实例包含 4 个属性。这 4 个属性分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度,单位都是厘米。根据这 4 个属性,可以将其分为 3 类。Iris 数据集被广泛用于分类算法的测试和评估。
## 聚类模型
我们将使用 K-Means 算法来对 Iris 数据集进行聚类。K-Means 算法是一种常用的聚类算法,它的基本思想是将数据集划分为 K 个不同的簇,使得簇内数据的相似度最大化,簇间数据的相似度最小化。
## 聚类分析
接下来,让我们来进行聚类分析。我们将聚类数设置为 3,使用常用性能度量方法对聚类效果进行评价,并给出聚类可视化效果图。
### 导入数据集
首先,我们需要导入数据集。我们可以使用 scikit-learn 库中的 load_iris() 函数来加载 Iris 数据集。代码如下:
```python
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
```
### 数据预处理
在进行聚类之前,我们需要对数据进行预处理。由于 K-Means 算法是基于距离计算的,因此我们需要对数据进行标准化,使得每个属性都具有相同的重要性。我们可以使用 StandardScaler 类来对数据进行标准化。代码如下:
```python
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
```
### 聚类分析
接下来,我们将使用 K-Means 算法对数据进行聚类。我们将聚类数设置为 3,并使用 Silhouette Coefficient 和 Calinski-Harabasz Index 两种方法来评价聚类效果。
```python
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score, calinski_harabasz_score
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X_scaled)
y_pred = kmeans.predict(X_scaled)
silhouette_score = silhouette_score(X_scaled, y_pred)
calinski_harabasz_score = calinski_harabasz_score(X_scaled, y_pred)
print("Silhouette Coefficient:", silhouette_score)
print("Calinski-Harabasz Index:", calinski_harabasz_score)
```
输出结果为:
```
Silhouette Coefficient: 0.45994823920518635
Calinski-Harabasz Index: 561.62775662962
```
Silhouette Coefficient 的取值范围为 [-1, 1],越接近 1 表示聚类效果越好。Calinski-Harabasz Index 的取值范围没有上限,越大表示聚类效果越好。
### 聚类可视化
最后,让我们将聚类结果可视化展示。我们可以使用 Matplotlib 库来绘制散点图,并使用不同的颜色来表示不同的簇。代码如下:
```python
import matplotlib.pyplot as plt
plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=y_pred)
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.show()
```
输出的可视化效果图如下所示:
![Iris 数据集聚类可视化效果图](https://img-blog.csdnimg.cn/20211008092723519.png)
可以看出,K-Means 算法成功将 Iris 数据集划分为 3 类,并且聚类效果良好。
阅读全文