鸢尾花数据集分裂聚类可视化
时间: 2023-07-24 17:21:26 浏览: 93
以下是使用分裂聚类对鸢尾花数据集进行聚类,并将聚类结果可视化的Python示例代码:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris = load_iris()
data = iris.data
# 定义分裂聚类函数
def split_cluster(data):
# 计算聚类中心
center = np.mean(data, axis=0)
# 计算所有数据点到聚类中心的距离
dist = np.linalg.norm(data - center, axis=1)
# 将距离聚类中心较近的一组作为一个子类,距离较远的一组作为另一个子类
cluster1 = data[dist < np.median(dist)]
cluster2 = data[dist >= np.median(dist)]
# 如果聚类中心距离所有数据点都较远,直接返回一个聚类
if len(cluster1) == 0 or len(cluster2) == 0:
return [data]
# 否则,对两个子类分别进行递归聚类
else:
return split_cluster(cluster1) + split_cluster(cluster2)
# 将数据分裂成多个聚类
clusters = split_cluster(data)
# 绘制聚类结果
colors = ['r', 'g', 'b', 'c', 'm', 'y', 'k']
markers = ['o', 's', 'v', 'p', 'h', 'x', '+', 'D']
for i, cluster in enumerate(clusters):
plt.scatter(cluster[:, 0], cluster[:, 1], c=colors[i % len(colors)], marker=markers[i % len(markers)], label=f"Cluster {i+1}")
plt.xlabel(iris.feature_names[0])
plt.ylabel(iris.feature_names[1])
plt.legend()
plt.show()
```
在这个示例代码中,我们使用了numpy库、pandas库和matplotlib库。首先,我们使用scikit-learn库加载了鸢尾花数据集,并获取数据。然后,我们定义了一个递归的分裂聚类函数,将数据分成两个子类,并对每个子类递归地进行聚类,直到满足聚类的终止条件。接着,我们将分裂聚类得到的聚类加入到聚类列表中。最后,我们使用matplotlib库将聚类结果可视化,将每个聚类用不同颜色和形状的点进行表示,方便查看聚类结果。可以根据需要调整聚类的参数和终止条件,以获得更好的聚类效果。
阅读全文