python kmeans代码sse_python实现k均值算法示例(k均值聚类算法)

import pylab as pl

#calc Euclid squire

def calc_e_squire(a, b):

return (a[0]- b[0]) ** 2 + (a[1] - b[1]) **2

#init the 20 point

a = [2,4,3,6,7,8,2,3,5,6,12,10,15,16,11,10,19,17,16,13]

b = [5,6,1,4,2,4,3,1,7,9,16,11,19,12,15,14,11,14,11,19]

#define two k_value

k1 = [6,3]

k2 = [6,1]

#defint tow cluster

sse_k1 = []

sse_k2 = []

while True:

sse_k1 = []

sse_k2 = []

for i in range(20):

e_squire1 = calc_e_squire(k1, [a[i], b[i]])

e_squire2 = calc_e_squire(k2, [a[i], b[i]])

if (e_squire1 <= e_squire2):

sse_k1.append(i)

else:

sse_k2.append(i)

#change k_value

k1_x = sum([a[i] for i in sse_k1]) / len(sse_k1)

k1_y = sum([b[i] for i in sse_k1]) / len(sse_k1)

k2_x = sum([a[i] for i in sse_k2]) / len(sse_k2)

k2_y = sum([b[i] for i in sse_k2]) / len(sse_k2)

if k1 != [k1_x, k1_y] or k2 != [k2_x, k2_y]:

k1 = [k1_x, k1_y]

k2 = [k2_x, k2_y]

else:

break

kv1_x = [a[i] for i in sse_k1]

kv1_y = [b[i] for i in sse_k1]

kv2_x = [a[i] for i in sse_k2]

kv2_y = [b[i] for i in sse_k2]

pl.plot(kv1_x, kv1_y, 'o')

pl.plot(kv2_x, kv2_y, 'or')

pl.xlim(1, 20)

pl.ylim(1, 20)

pl.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值