修改k-Means聚类算法的randCents函数,使其能从全部数据集中随机选取k个数据点作为初始的聚类中心。
时间: 2023-03-27 22:00:27 浏览: 56
K-Means算法的初始聚类中心的优化
4星 · 用户满意度95%
可以回答这个问题。可以通过以下代码实现:
```
def randCents(dataSet, k):
n = shape(dataSet)[1]
centroids = mat(zeros((k,n)))
for j in range(n):
minJ = min(dataSet[:,j])
rangeJ = float(max(dataSet[:,j]) - minJ)
centroids[:,j] = mat(minJ + rangeJ * random.rand(k,1))
return centroids
```
其中,random.rand(k,1) 会从 到 1 之间随机生成 k 个数,乘以 rangeJ 后加上 minJ,即可得到 k 个随机的聚类中心。
阅读全文