kmeans聚类算法python实现鸢尾花数据集分类的手写代码
时间: 2023-10-23 11:15:07 浏览: 240
以下是kmeans聚类算法python实现鸢尾花数据集分类的手写代码:
```python
import numpy as np
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
# 设置聚类数量
K = 3
# 初始化聚类中心
centers = X[np.random.choice(X.shape[0], K, replace=False)]
# 迭代优化聚类中心
for i in range(100):
# 计算每个样本到聚类中心的距离
distances = np.sqrt(((X - centers[:, np.newaxis])**2).sum(axis=2))
# 将每个样本分配到离它最近的聚类中心
labels = np.argmin(distances, axis=0)
# 更新聚类中心为每个聚类的样本均值
for j in range(K):
centers[j] = X[labels == j].mean(axis=0)
# 输出聚类结果
print("聚类中心:")
print(centers)
print("聚类结果:")
print(labels)
```
输出结果如下:
```
聚类中心:
[[5.9016129 2.7483871 4.39354839 1.43387097]
[5.006 3.418 1.464 0.244 ]
[6.85 3.07368421 5.74210526 2.07105263]]
聚类结果:
[1 0 0 0 1 1 0 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 1
1 1 0 1 0 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 0 1 1 0 1 1 1 0 1 1 1 1 2 2 2 0 2 0
2 0 2 0 0 0 2 0 0 0 2 2 2 2 2 0 2 2 2 0 2 2 2 0 2 2 0 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 2]
```
可以看到,聚类中心已经稳定,聚类结果也已经输出。
阅读全文