用python代码绘制鸢尾花数据集iris的热力图和带层次聚类的热力图
时间: 2024-12-31 10:47:36 浏览: 12
在Python中,我们可以使用matplotlib库来绘制数据集的热力图,例如鸢尾花(Iris)数据集。这个数据集通常包含花瓣长度、花瓣宽度等特征。首先,我们需要加载数据并计算相关度矩阵,然后才能创建热力图。对于带层次聚类的热力图,我们将需要使用scikit-learn库进行聚类。
这里是一个简单的示例,展示如何绘制基础的热力图:
```python
import seaborn as sns
from sklearn.datasets import load_iris
import numpy as np
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target
# 计算皮尔逊相关系数作为相似度矩阵
corr_matrix = np.corrcoef(X.T)
# 绘制热力图
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')
plt.title('基础鸢尾花数据集热力图')
plt.show()
```
至于带层次聚类的热力图,我们先对数据进行聚类,然后再创建热力图。假设我们使用了ward链接法(Ward’s method):
```python
from scipy.cluster.hierarchy import ward, dendrogram
import matplotlib.pyplot as plt
# 进行层次聚类
Z = ward(np.array(corr_matrix))
dendrogram(Z, labels=iris.feature_names)
plt.title('层次聚类后的鸢尾花数据集热力图')
plt.xlabel('特征')
plt.ylabel('样本')
plt.show()
# 使用聚类结果更新热力图
clustered_corr = corr_matrix[Z[-1].argsort()]
sns.heatmap(clustered_corr, annot=True, cmap='coolwarm', yticklabels=False)
plt.title('带层次聚类的鸢尾花数据集热力图')
plt.show()
```
阅读全文