源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

python实现k均值算法示例(k均值聚类算法)

  • 时间:2020-03-17 03:56 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:python实现k均值算法示例(k均值聚类算法)
简单实现平面的点K均值分析,使用欧几里得距离,并用pylab展示。
[u]复制代码[/u] 代码如下:
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)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部