python - 为什么 k-means 聚类在使用不同的质心初始化时会给我不同的答案?
问题描述
我按照 k-means 聚类的伪代码编写了这段代码。当使用不同的值初始化集群的质心时,此代码给出不同的答案,并且这些答案都不正确。你能帮我吗?我用 15 个节点进行了测试,公差 = 0.00001 和迭代 = 100000 在此先感谢。
class kMeans:
def __init__(self, coordinates, tolerance, iter, nof):
self.grid = coordinates
self.N = coordinates.shape[0]
self.t = tolerance
self.nof = nof
self.f = None
def kMeans(self, nof):
assign = [0]*self.N
self.fac = np.empty([nof,2])
for i in range(nof):
for j in range(2):
self.fac[i,j] = self.grid[i+10,j]
for itr in range(iter):
for n in range(self.N):
distance = [0]*nof
for f in range(nof):
distance[f] = math.sqrt((self.grid[n,0]-self.fac[f,0])**2 + (self.grid[n,1]-self.fac[f,1])**2 )
assign[n] = np.argmin(distance)
for fa in range(nof):
l = []
x,y = 0,0
for asg in range(self.N):
if fa == assign[asg]:
l.append(asg)
x = np.mean(self.grid[l,0])
y = np.mean(self.grid[l,1])
if abs(x-self.fac[fa,0]) >= self.t:
self.fac[fa,0] = x
if abs(y-self.fac[fa,1]) >= self.t:
self.fac[fa,1] = y
continue
print('dist:',distance)
print('assign:',assign)
print('fac:',self.fac)
print('locate:', self.grid[l,1])
self.f = self.fac
return self.fac
'''
解决方案
推荐阅读
- python - DataFrame 是否可以在同一个数据帧中抓取/查找密钥?
- html - 如何更改unicode字体颜色
- reactjs - React 样式组件的设置
- testing - 测试实现为 Map 的状态机转换
- c# - 根据条件从 DataTable 中选择行
- android - 为什么当我锁定手机时位置服务停止发送位置更新
- node.js - 打字稿 | 无法安装类型脚本
- javascript - 将 mongoDB 文档数据存储为变量
- ruby - 为什么 'USER INSTALLATION DIRECTORY' 与 Ruby 版本不匹配?
- r - 使用colMeans合并R中的数据框行?