使用python实现wkmeans算法
时间: 2024-01-01 09:06:45 浏览: 109
以下是使用 Python 实现 Weighted K-Means 算法的示例代码:
```python
import numpy as np
def weighted_kmeans(X, k, w, max_iter=100):
"""
X: 数据集,每一行代表一个样本
k: 聚类簇数
w: 样本权重
max_iter: 最大迭代次数
"""
n_samples, n_features = X.shape
centroids = X[np.random.choice(n_samples, k, replace=False)] # 随机初始化聚类中心
for i in range(max_iter):
# 计算每个样本到每个聚类中心的距离
distances = np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2))
# 计算样本权重与距离的乘积
weighted_distances = distances * w[:, np.newaxis]
# 将每个样本分配到距离最近的聚类中心
labels = np.argmin(weighted_distances, axis=0)
# 更新聚类中心
for j in range(k):
centroids[j] = np.average(X[labels == j], axis=0, weights=w[labels == j])
return centroids, labels
```
其中 `X` 表示数据集,每一行代表一个样本。`k` 表示聚类簇数,`w` 表示样本权重。`max_iter` 表示最大迭代次数。函数返回聚类中心和每个样本的类别标签。
阅读全文