设为首页收藏本站
开启辅助访问
切换到窄版

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1440|回复: 0

多维数组的K-均值聚类的python代码

[复制链接]
发表于 2012-5-7 10:05:13 | 显示全部楼层 |阅读模式
  1. import math
  2. def KM(lst_x,lst_y,x1,y1,x2,y2):
  3.       k_list_1_x=[]
  4.       k_list_1_y=[]
  5.       k_list_2_x=[]
  6.       k_list_2_y=[]
  7.       for i in range(len(lst_x)):
  8.             distacne=((lst_x[i]-x1)**2+(lst_y[i]-y1)**2)**(1/2.0)-((lst_x[i]-x2)**2+(lst_y[i]-y2)**2)**(1/2.0)
  9.             if distacne>0:
  10.                   k_list_1_x.append(lst_x[i])
  11.                   k_list_1_y.append(lst_y[i])
  12.                   #k_list_1.append(value)
  13.                   #print k_list_1
  14.             else:
  15.                   k_list_2_x.append(lst_x[i])
  16.                   k_list_2_y.append(lst_y[i])
  17.                   #k_list_2.append(value)
  18.                   #print k_list_2

  19.       #print k_list_1
  20.       #print k_list_2
  21.       kx1=sum(k_list_1_x)/float(len(k_list_1_x))
  22.       kx2=sum(k_list_2_x)/float(len(k_list_2_x))
  23.       ky1=sum(k_list_1_y)/float(len(k_list_1_y))
  24.       ky2=sum(k_list_2_y)/float(len(k_list_2_y))
  25.       if (kx1==x1 and ky1==y1 and kx2==x2 and ky2==y2) or (kx1==x2 and ky1==y2 and kx2==x1 and ky2==y1):
  26.             return k_list_1_x,k_list_1_y,k_list_2_x,k_list_2_y,kx1,ky1,kx2,ky2
  27.       else:
  28.             return KM(lst_x,lst_y,kx1,ky1,kx2,ky2)



  29. n1=[12,21,59,32,10,25,69,54,15,84,56,21,45,96,41,25,3,1,84,56,21,45,96,41,25,3,1,84,56,21,45,96,41,25,3,1,84,56,21,45,96,41,25,3,1]
  30. n2=[84,56,21,45,96,41,25,3,1,12,21,59,32,10,25,69,54,15,84,56,21,45,96,41,25,12,21,59,32,10,25,69,54,15,84,56,21,45,96,41,25,12,21,59,32,10,25,69,54,15,84,56,21,45,96,41,25]
  31. print KM(n1,n2,10,20,30,40)
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|生物信息学论坛 ( 蜀ICP备09031721号  

GMT+8, 2017-2-22 16:41 , Processed in 0.118060 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表