python 层次聚类图 六个类别用不同颜色
时间: 2023-07-20 08:15:53 浏览: 150
python 颜色分类
要在Python中绘制层次聚类图并用不同颜色表示六个聚类簇,可以使用`scipy.cluster.hierarchy`库中的`linkage`函数进行层次聚类,然后使用`scipy.cluster.hierarchy`库中的`dendrogram`函数绘制聚类树,并使用`matplotlib.pyplot`库中的`plt`函数进行可视化。具体步骤如下:
1. 导入需要的库:
```python
import numpy as np
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt
```
2. 生成数据
```python
np.random.seed(4711)
a = np.random.multivariate_normal([10, 0], [[3, 1], [1, 4]], size=[100,])
b = np.random.multivariate_normal([0, 20], [[3, 1], [1, 4]], size=[50,])
c = np.random.multivariate_normal([10, 20], [[3, 1], [1, 4]], size=[25,])
d = np.random.multivariate_normal([20, 20], [[3, 1], [1, 4]], size=[25,])
e = np.random.multivariate_normal([20, 0], [[3, 1], [1, 4]], size=[25,])
f = np.random.multivariate_normal([30, 10], [[3, 1], [1, 4]], size=[25,])
X = np.concatenate((a, b, c, d, e, f),)
```
3. 进行层次聚类
```python
Z = linkage(X, 'ward')
```
其中,'ward'表示使用Ward方差最小化算法进行聚类。
4. 绘制层次聚类图,并用不同颜色表示六个聚类簇
```python
plt.figure(figsize=(10, 5))
dendrogram(Z, color_threshold=[150, 100, 50, 30, 20], labels=None)
plt.show()
```
其中,`color_threshold`参数指定了每个聚类簇的颜色阈值,从而用不同颜色表示六个聚类簇。
完整代码如下:
```python
import numpy as np
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt
# 生成数据
np.random.seed(4711)
a = np.random.multivariate_normal([10, 0], [[3, 1], [1, 4]], size=[100,])
b = np.random.multivariate_normal([0, 20], [[3, 1], [1, 4]], size=[50,])
c = np.random.multivariate_normal([10, 20], [[3, 1], [1, 4]], size=[25,])
d = np.random.multivariate_normal([20, 20], [[3, 1], [1, 4]], size=[25,])
e = np.random.multivariate_normal([20, 0], [[3, 1], [1, 4]], size=[25,])
f = np.random.multivariate_normal([30, 10], [[3, 1], [1, 4]], size=[25,])
X = np.concatenate((a, b, c, d, e, f),)
# 进行层次聚类
Z = linkage(X, 'ward')
# 绘制层次聚类图,并用不同颜色表示六个聚类簇
plt.figure(figsize=(10, 5))
dendrogram(Z, color_threshold=[150, 100, 50, 30, 20], labels=None)
plt.show()
```
阅读全文