kmeans聚类算法python实现
以下是使用Python实现k均值(k-means)聚类算法的示例代码:
import numpy as np
def k_means(data, k, max_iterations=100):
# 随机选择k个初始质心
centroids = data[np.random.choice(range(len(data)), k)]
for _ in range(max_iterations):
# 计算每个样本与质心之间的距离
distances = np.linalg.norm(data[:, np.newaxis] - centroids, axis=2)
# 对每个样本,选取距离最近的质心作为其所属类别
labels = np.argmin(distances, axis=1)
# 更新质心位置为所属类别的平均值
new_centroids = np.array([data[labels == i].mean(axis=0) for i in range(k)])
# 如果新的质心位置与旧的质心位置相同,则停止迭代
if np.all(centroids == new_centroids):
break
centroids = new_centroids
return labels, centroids
这个示例代码中的data
是输入的样本数据,每个样本是一个n维向量,其中n
是特征的数量。k
是要聚类的簇数,max_iterations
是最大迭代次数。
函数k_means
返回两个结果,labels
是每个样本所属的聚类簇的标签,centroids
是最终的质心位置。
你可以使用这个示例代码来实现k均值聚类算法。确保在调用函数时将你自己的数据作为参数传递进去。
还没有评论,来说两句吧...