基于python利用kmeans算法进行聚类分析,不用sklearn
时间: 2023-06-13 16:02:18 浏览: 138
python实现kmeans聚类算法
5星 · 资源好评率100%
可以使用Python中的numpy库实现K-means算法进行聚类分析。下面是一个简单的实现:
```python
import numpy as np
import random
def kmeans(X, k, max_iterations=100):
"""
X: 输入数据,N * D 的矩阵,N 表示样本数量,D 表示特征数量
k: 聚类数量
max_iterations: 最大迭代次数
return: 聚类中心和每个样本所属的类别
"""
N, D = X.shape
# 随机初始化聚类中心
centers = np.array([X[random.randint(0, N-1)] for _ in range(k)])
for i in range(max_iterations):
# 计算每个样本到聚类中心的距离
distances = np.linalg.norm(X[:, np.newaxis, :] - centers, axis=-1)
# 将每个样本分配到距离最近的聚类中心
labels = np.argmin(distances, axis=-1)
# 更新聚类中心
for j in range(k):
centers[j] = np.mean(X[labels == j], axis=0)
return centers, labels
```
使用方法:
```python
import numpy as np
# 生成随机数据
X = np.random.rand(100, 2)
# 聚类数量
k = 3
# 聚类分析
centers, labels = kmeans(X, k)
```
其中,`centers`是聚类中心,`labels`是每个样本所属的类别。
阅读全文