(dataSet, k)
| 28 | |
| 29 | # 为给定数据集构建一个包含 k 个随机质心的集合。随机质心必须要在整个数据集的边界之内,这可以通过找到数据集每一维的最小和最大值来完成。然后生成 0~1.0 之间的随机数并通过取值范围和最小值,以便确保随机点在数据的边界之内。 |
| 30 | def randCent(dataSet, k): |
| 31 | n = shape(dataSet)[1] # 列的数量 |
| 32 | centroids = mat(zeros((k,n))) # 创建k个质心矩阵 |
| 33 | for j in range(n): # 创建随机簇质心,并且在每一维的边界内 |
| 34 | minJ = min(dataSet[:,j]) # 最小值 |
| 35 | rangeJ = float(max(dataSet[:,j]) - minJ) # 范围 = 最大值 - 最小值 |
| 36 | centroids[:,j] = mat(minJ + rangeJ * random.rand(k,1)) # 随机生成 |
| 37 | return centroids |
| 38 | |
| 39 | |
| 40 | # k-means 聚类算法 |