k均值算法挑西瓜的代码
时间: 2023-11-11 17:05:53 浏览: 33
以下是使用k均值算法挑选西瓜的代码示例(假设有10个西瓜,每个西瓜有3个属性):
```
import numpy as np
import random
# 定义k均值函数
def k_means(data, k, max_iter):
# 随机初始化k个质心
centroids = [data[i] for i in random.sample(range(len(data)), k)]
# 迭代max_iter次
for iter in range(max_iter):
# 初始化k个簇
clusters = [[] for i in range(k)]
# 将每个样本点分配到距离最近的质心所在的簇
for sample in data:
distances = [np.linalg.norm(sample - centroid) for centroid in centroids]
cluster_index = np.argmin(distances)
clusters[cluster_index].append(sample)
# 计算新的质心
new_centroids = [np.mean(cluster, axis=0) for cluster in clusters]
# 如果新的质心与旧的质心相同,则认为已经收敛,退出迭代
if np.allclose(new_centroids, centroids):
break
centroids = new_centroids
# 返回最终的簇和质心
return clusters, centroids
# 生成随机数据
data = np.random.rand(10, 3)
# 调用k均值函数,k=2,迭代次数为10次
clusters, centroids = k_means(data, 2, 10)
# 打印结果
print('簇1:', clusters[0])
print('簇2:', clusters[1])
print('质心1:', centroids[0])
print('质心2:', centroids[1])
```
以上代码仅为示例,具体应用需要根据实际情况进行调整。