写一个完整的代码介绍一下k-means聚类算法
时间: 2023-09-29 19:10:08 浏览: 72
k-means聚类算法简介
5星 · 资源好评率100%
当然,我很乐意介绍一下k-means聚类算法。
k-means聚类算法是一种基于距离的无监督机器学习算法,常用于将数据集中的数据点划分为多个类别。以下是一个完整的k-means聚类算法代码实现:
```
import numpy as np
# 定义k-means聚类算法函数
def kmeans(X, k):
m, n = X.shape
# 随机初始化聚类中心
centroids = np.random.rand(k, n)
# 初始化聚类结果矩阵和误差
clusters = np.zeros(m)
error = float('inf')
while True:
# 计算每个样本距离聚类中心的距离
distances = np.sqrt(np.sum((X - centroids[:, np.newaxis])**2, axis=2))
# 计算每个样本所属的聚类
new_clusters = np.argmin(distances, axis=0)
# 计算误差
new_error = np.sum(distances[new_clusters, np.arange(m)])
# 判断是否收敛
if new_error >= error:
break
# 更新聚类结果和聚类中心
clusters = new_clusters
error = new_error
for i in range(k):
centroids[i] = np.mean(X[clusters == i], axis=0)
return clusters, centroids
```
其中,`X`是一个`m x n`的数据矩阵,表示有`m`个样本,每个样本有`n`个特征。`k`表示要划分为`k`个聚类。函数返回一个`m`维向量`clusters`,表示每个样本所属的聚类,以及一个`k x n`的矩阵`centroids`,表示每个聚类的中心。
以上就是k-means聚类算法的完整代码介绍。如果您有其他问题,欢迎继续向我提问!
阅读全文