Advertisement
Sax

Kmeans-OrientaUANL

Sax
Nov 3rd, 2014
470
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.91 KB | None | 0 0
  1. import math
  2. import csv
  3.  
  4. archivo = open("datafagget.csv")
  5. reader = csv.reader(archivo, delimiter=',')
  6. data = []
  7.  
  8.  
  9. for row in reader:
  10.     data.append(row)
  11.  
  12. print "Ready"
  13.  
  14. def similitud(p, c):
  15.     """ Devuelve la similitud de coseno entre un punto p y el centroide c """
  16.  
  17.     q1 = p
  18.     q2 = c
  19.     producto_escalar = 0
  20.     suma_q1 = 0
  21.     suma_q2 = 0
  22.  
  23.     for i in range(10):
  24.         producto_escalar = producto_escalar + float(q1[i]) * float(q2[i])
  25.         suma_q1 = suma_q1 + math.pow(float(q1[i]), 2)
  26.         suma_q2 = suma_q2 + math.pow(float(q2[i]), 2)
  27.  
  28.     return producto_escalar / math.sqrt(suma_q1 * suma_q2)
  29.  
  30. def nuevo_centroide(grupo):
  31.  
  32.     centroide = []
  33.        
  34.     centroide.append(moda(grupo,0))
  35.     centroide.append(moda(grupo,1))
  36.     centroide.append(moda(grupo,2))
  37.     centroide.append(moda(grupo,3))
  38.     centroide.append(moda(grupo,4))
  39.     centroide.append(moda(grupo,5))
  40.     centroide.append(moda(grupo,6))
  41.  
  42.     return centroide
  43.  
  44. def printuh(grupo):
  45.     for i in range(len(grupo)):
  46.         print (grupo[i][10]),
  47.  
  48. def moda(lista, index):
  49.     temp = []
  50.     for i in range(len(lista)):
  51.         temp.append(lista[i][index])
  52.  
  53.     mientras = [0,0]
  54.  
  55.     for i in range(10):
  56.         meh = temp.count(i)
  57.         if meh > mientras[1]:
  58.             mientras[0] = i #el valor
  59.             mientras[1] = meh #repeticiones
  60.  
  61.     return mientras[0]
  62.    
  63.  
  64. #Grupos por defecto
  65. grupo01 = []
  66. grupo02 = []
  67. grupo03 = []
  68. grupo04 = []
  69. grupo05 = []
  70.  
  71. #Centroides por defecto
  72. uno = data[1]
  73. dos = data[51]
  74. tres = data[76]
  75. cuatro = data[89]
  76. cinco = data[140]
  77.  
  78.  
  79. iteraciones = 1
  80.  
  81. for it in range(iteraciones):
  82.    
  83.         for i in range(len(data)):
  84.             if similitud(data[i], uno) > similitud(data[i], dos):
  85.                 grupo01.append(data[i])
  86.             elif similitud(data[i], dos) > similitud(data[i], tres):
  87.                 grupo02.append(data[i])
  88.             elif similitud(data[i], tres) > similitud(data[i], cuatro):
  89.                 grupo03.append(data[i])
  90.             elif similitud(data[i], cuatro) > similitud(data[i], cinco):
  91.                 grupo04.append(data[i])
  92.             else:
  93.                 grupo05.append(data[i])
  94.                
  95.         print "\n\n----------------------\Iteracion #" + str(it+1)
  96.  
  97.         print "\n\nLos centroides son:"
  98.  
  99.         print uno
  100.         print dos
  101.         print tres
  102.         print cuatro
  103.         print cinco
  104.  
  105.        
  106.         print "\n\nEl grupo de grupo01 quedo asi:"
  107.         printuh(grupo01)
  108.         print "\n\nEl grupo de grupo02 quedo asi:"
  109.         printuh(grupo02)
  110.         print "\n\nEl grupo de grupo03 quedo asi:"
  111.         printuh(grupo03)
  112.         print "\n\nEl grupo de grupo04 quedo asi:"
  113.         printuh(grupo04)
  114.         print "\n\nEl grupo de grupo05 quedo asi:"
  115.         printuh(grupo05)
  116.  
  117.         del grupo01[:]
  118.         del grupo02[:]
  119.         del grupo03[:]
  120.         del grupo04[:]
  121.         del grupo05[:]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement