Advertisement
Sax

K-Means LoL

Sax
May 2nd, 2012
369
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.93 KB | None | 0 0
  1. import math
  2.  
  3. # Lista Champs #
  4. champs = []
  5.  
  6. Ahri=[3,6,2,2,2,2,2, 'Ahri']
  7. Akali=[6,3,1,2,0,1,3, 'Akali']
  8. Alistar=[1,2,3,2,2,1,1, 'Alistar']
  9. Amumu=[5,2,1,2,2,1,1, 'Amumu']
  10. Anivia=[3,3,2,2,2,2,4, 'Anivia']
  11. Annie=[3,3,2,2,2,2,1, 'Annie']
  12. Ashe=[4,4,3,1,2,2,1, 'Ashe']
  13. Blitzcrank=[1,1,3,1,2,1,2, 'Blitzcrank']
  14. Brand=[3,3,2,2,2,2,1, 'Brand']
  15. Caitlyn=[4,4,3,1,1,2,1, 'Caitlyn']
  16. Cassiopeia=[3,3,2,2,2,2,3, 'Cassiopeia']
  17. Chogath=[2,3,1,2,2,1,1, 'Cho\'Gath']
  18. Corki=[4,4,3,1,0,2,1, 'Corki']
  19. Mundo=[5,2,1,2,1,1,2, 'Dr. Mundo']
  20. Evelynn=[6,6,1,2,1,1,3, 'Evelynn']
  21. Ezreal=[4,4,3,1,0,2,3, 'Ezreal']
  22. Fiddlesticks=[5,5,2,2,2,2,2, 'Fiddlesticks']
  23. Fiora=[6,6,1,1,0,1,2, 'Fiora']
  24. Fizz=[6,3,2,2,1,1,2, 'Fizz']
  25. Galio=[3,2,2,2,2,1,1, 'Galio']
  26. Gangplank=[2,5,1,1,1,1,2, 'Gangplank']
  27. Garen=[2,2,1,1,1,1,1, 'Garen']
  28. Gragas=[3,2,2,2,2,1,2, 'Gragas']
  29. Graves=[4,4,3,1,1,2,1, 'Graves']
  30. Hecarim=[2,5,1,1,2,1,2, 'Hecarim']
  31. Heimer=[3,3,2,2,2,2,2, 'Heimerdinger']
  32. Irelia=[2,5,1,1,2,1,2, 'Irelia']
  33. Janna=[1,3,3,2,2,2,2, 'Janna']
  34. Jarvan=[2,5,1,1,2,1,2, 'Jarvan']
  35. Jax=[2,2,1,2,2,1,1, 'Jax']
  36. Karma=[1,3,3,2,1,2,1, 'Karma']
  37. Karthus=[3,3,2,2,1,2,1, 'Karthus']
  38. Kassadin=[3,6,2,2,1,1,3, 'Kassadin']
  39. Katarina=[3,6,2,2,0,1,2, 'Katarina']
  40. Kayle=[1,1,3,2,1,1,1, 'Kayle']
  41. Kennen=[3,3,2,2,2,2,2, 'Kennen']
  42. Kogmaw=[4,3,3,1,1,2,3, 'Kog\'Maw']
  43. LeBlanc=[3,6,2,2,1,2,3, 'LeBlanc']
  44. Leesin=[5,6,1,1,2,1,3, 'Lee Sin']
  45. Leona=[1,2,3,2,2,1,2, 'Leona']
  46. Lulu=[1,3,3,2,2,2,2, 'Lulu']
  47. Lux=[3,1,2,2,2,2,2, 'Lux']
  48. Malphite=[2,5,1,2,2,1,1, 'Malphite']
  49. Malzahar=[3,3,2,2,2,2,1, 'Malzahar']
  50. Maokai=[5,2,3,2,2,1,1, 'Maokai']
  51. MasterYi=[4,5,1,1,0,1,1, 'Master Yi']
  52. MissFortune=[4,4,3,1,1,2,1, 'Miss Fortune']
  53. Mordekaiser=[3,2,2,2,0,1,2, 'Mordekaiser']
  54. Morgana=[3,1,2,2,2,2,1, 'Morgana']
  55. Nasus=[2,2,1,1,1,1,1, 'Nasus']
  56. Nautilus=[5,2,1,1,2,1,2, 'Nautilus']
  57. Nidalee=[3,2,1,2,0,2,2, 'Nidalee']
  58. Nunu=[1,5,3,2,1,1,2, 'Nunu']
  59. Olaf=[5,2,1,1,1,1,2, 'Olaf']
  60. Orianna=[3,3,2,2,2,2,3, 'Orianna']
  61. Pantheon=[2,5,1,1,2,1,1, 'Pantheon']
  62. Poppy=[2,6,1,1,1,1,2, 'Poppy']
  63. Rammus=[5,2,1,1,2,1,2, 'Rammus']
  64. Renekton=[2,2,1,1,2,1,2, 'Renekton']
  65. Riven=[2,5,1,1,2,1,2, 'Riven']
  66. Rumble=[3,3,1,2,1,1,2, 'Rumble']
  67. Ryze=[3,3,2,2,2,2,2, 'Ryze']
  68. Sejuani=[2,5,1,2,2,1,2, 'Sejuani']
  69. Shaco=[6,5,1,1,1,1,4, 'Shaco']
  70. Shen=[2,5,1,2,2,1,2, 'Shen']
  71. Shyvana=[2,5,1,1,0,1,1, 'Shyvana']
  72. Singed=[2,2,1,2,2,1,2, 'Singed']
  73. Sion=[3,2,1,2,2,1,2, 'Sion']
  74. Sivir=[4,0,3,1,0,2,1, 'Sivir']
  75. Skarner=[5,2,1,2,2,1,2, 'Skarner']
  76. Sona=[1,1,3,2,2,2,1, 'Sona']
  77. Soraka=[1,3,3,2,1,2,1, 'Soraka']
  78. Swain=[3,3,2,2,2,2,2, 'Swain']
  79. Talon=[6,6,1,1,1,1,1, 'Talon']
  80. Taric=[1,2,3,2,2,1,1, 'Taric']
  81. Teemo=[4,4,1,2,1,2,1, 'Teemo']
  82. Tristana=[4,4,3,1,1,2,1, 'Tristana']
  83. Trundle=[4,2,1,1,1,1,2, 'Trundle']
  84. Tryndamere=[4,4,1,1,1,1,1, 'Tryndamere']
  85. TwistedFate=[3,6,2,2,2,2,3, 'Twisted Fate']
  86. Twitch=[4,6,3,1,1,2,3, 'Twitch']
  87. Udyr=[2,5,1,1,2,1,3, 'Udyr']
  88. Urgot=[4,2,3,1,2,2,2, 'Urgot']
  89. Vayne=[4,4,3,1,1,2,2, 'Vayne']
  90. Veigar=[3,3,2,2,2,2,2, 'Veigar']
  91. Viktor=[3,3,2,2,2,2,3, 'Viktor']
  92. Vladimir=[3,3,1,2,1,2,2, 'Vladimir']
  93. Volibear=[2,5,1,1,2,1,2, 'Volibear']
  94. Warwick=[5,2,1,1,2,1,1, 'Warwick']
  95. Wukong=[2,5,1,1,2,1,3, 'Wukong']
  96. Xerath=[3,3,2,2,2,2,3, 'Xerath']
  97. XinZhao=[6,4,1,1,1,1,1, 'Xin Zhao']
  98. Yorick=[2,3,1,2,1,1,1, 'Yorick']
  99. Ziggs=[3,3,2,2,1,2,2, 'Ziggs']
  100. Zilean=[3,1,3,2,1,2,1, 'Zilean']
  101.  
  102.  
  103. champs.append(Ahri)
  104. champs.append(Akali)
  105. champs.append(Alistar)
  106. champs.append(Amumu)
  107. champs.append(Anivia)
  108. champs.append(Annie)
  109. champs.append(Ashe)
  110. champs.append(Blitzcrank)
  111. champs.append(Brand)
  112. champs.append(Caitlyn)
  113. champs.append(Cassiopeia)
  114. champs.append(Chogath)
  115. champs.append(Corki)
  116. champs.append(Mundo)
  117. champs.append(Evelynn)
  118. champs.append(Ezreal)
  119. champs.append(Fiddlesticks)
  120. champs.append(Fiora)
  121. champs.append(Fizz)
  122. champs.append(Galio)
  123. champs.append(Gangplank)
  124. champs.append(Garen)
  125. champs.append(Gragas)
  126. champs.append(Graves)
  127. champs.append(Hecarim)
  128. champs.append(Heimer)
  129. champs.append(Irelia)
  130. champs.append(Janna)
  131. champs.append(Jarvan)
  132. champs.append(Jax)
  133. champs.append(Karma)
  134. champs.append(Karthus)
  135. champs.append(Kassadin)
  136. champs.append(Katarina)
  137. champs.append(Kayle)
  138. champs.append(Kennen)
  139. champs.append(Kogmaw)
  140. champs.append(LeBlanc)
  141. champs.append(Leesin)
  142. champs.append(Leona)
  143. champs.append(Lulu)
  144. champs.append(Lux)
  145. champs.append(Malphite)
  146. champs.append(Malzahar)
  147. champs.append(Maokai)
  148. champs.append(MasterYi)
  149. champs.append(MissFortune)
  150. champs.append(Mordekaiser)
  151. champs.append(Morgana)
  152. champs.append(Nasus)
  153. champs.append(Nautilus)
  154. champs.append(Nidalee)
  155. champs.append(Nunu)
  156. champs.append(Olaf)
  157. champs.append(Orianna)
  158. champs.append(Pantheon)
  159. champs.append(Poppy)
  160. champs.append(Rammus)
  161. champs.append(Renekton)
  162. champs.append(Riven)
  163. champs.append(Rumble)
  164. champs.append(Ryze)
  165. champs.append(Sejuani)
  166. champs.append(Shaco)
  167. champs.append(Shen)
  168. champs.append(Shyvana)
  169. champs.append(Singed)
  170. champs.append(Sion)
  171. champs.append(Sivir)
  172. champs.append(Skarner)
  173. champs.append(Sona)
  174. champs.append(Soraka)
  175. champs.append(Swain)
  176. champs.append(Talon)
  177. champs.append(Taric)
  178. champs.append(Teemo)
  179. champs.append(Tristana)
  180. champs.append(Trundle)
  181. champs.append(Tryndamere)
  182. champs.append(TwistedFate)
  183. champs.append(Twitch)
  184. champs.append(Udyr)
  185. champs.append(Urgot)
  186. champs.append(Vayne)
  187. champs.append(Veigar)
  188. champs.append(Viktor)
  189. champs.append(Vladimir)
  190. champs.append(Volibear)
  191. champs.append(Warwick)
  192. champs.append(Wukong)
  193. champs.append(Xerath)
  194. champs.append(XinZhao)
  195. champs.append(Yorick)
  196. champs.append(Ziggs)
  197. champs.append(Zilean)
  198.  
  199.  
  200.  
  201. def similitud(p, c):
  202.     """ Devuelve la similitud de coseno entre un punto p y el centroide c """
  203.  
  204.     champ1 = p
  205.     champ2 = c
  206.     producto_escalar = 0
  207.     suma_champ1 = 0
  208.     suma_champ2 = 0
  209.  
  210.     for i in range(len(p)-1):
  211.         producto_escalar = producto_escalar + champ1[i] * champ2[i]
  212.         suma_champ1 = suma_champ1 + math.pow(champ1[i], 2)
  213.         suma_champ2 = suma_champ2 + math.pow(champ2[i], 2)
  214.  
  215.     return producto_escalar / math.sqrt(suma_champ1 * suma_champ2)
  216.  
  217. def nuevo_centroide(grupo):
  218.  
  219.     centroide = []
  220.        
  221.     centroide.append(moda(grupo,0))
  222.     centroide.append(moda(grupo,1))
  223.     centroide.append(moda(grupo,2))
  224.     centroide.append(moda(grupo,3))
  225.     centroide.append(moda(grupo,4))
  226.     centroide.append(moda(grupo,5))
  227.     centroide.append(moda(grupo,6))
  228.  
  229.     return centroide
  230.  
  231. def printuh(grupo):
  232.     for i in range(len(grupo)):
  233.         print (grupo[i][7]),
  234.  
  235. def moda(lista, index):
  236.     temp = []
  237.     for i in range(len(lista)):
  238.         temp.append(lista[i][index])
  239.  
  240.     mientras = [0,0]
  241.  
  242.     for i in range(10):
  243.         meh = temp.count(i)
  244.         if meh > mientras[1]:
  245.             mientras[0] = i #el valor
  246.             mientras[1] = meh #repeticiones
  247.  
  248.     return mientras[0]
  249.    
  250.  
  251. #Grupos por defecto
  252. supports = []
  253. tanks = []
  254. casters = []
  255. carries = []
  256. junglers = []
  257.  
  258. #Centroides por defecto
  259. support = Janna
  260. tank = Chogath
  261. caster = Annie
  262. carry = Ashe
  263. jungler = Leesin
  264.  
  265.  
  266. iteraciones = 1
  267.  
  268. for it in range(iteraciones):
  269.    
  270.         for i in range(len(champs)):
  271.             if similitud(champs[i], support) > similitud(champs[i], tank):
  272.                 supports.append(champs[i])
  273.             elif similitud(champs[i], tank) > similitud(champs[i], caster):
  274.                 tanks.append(champs[i])
  275.             elif similitud(champs[i], caster) > similitud(champs[i], carry):
  276.                 casters.append(champs[i])
  277.             elif similitud(champs[i], carry) > similitud(champs[i], jungler):
  278.                 carries.append(champs[i])
  279.             else:
  280.                 junglers.append(champs[i])
  281.                
  282.         print "\n\n----------------------\Iteracion #" + str(it+1)
  283.  
  284.         print "\n\nLos centroides son:"
  285.  
  286.         print support
  287.         print tank
  288.         print caster
  289.         print carry
  290.         print jungler
  291.  
  292.        
  293.         print "\n\nEl grupo de supports quedo asi:"
  294.         printuh(supports)
  295.         print "\n\nEl grupo de tanks quedo asi:"
  296.         printuh(tanks)
  297.         print "\n\nEl grupo de casters quedo asi:"
  298.         printuh(casters)
  299.         print "\n\nEl grupo de carries quedo asi:"
  300.         printuh(carries)
  301.         print "\n\nEl grupo de junglers quedo asi:"
  302.         printuh(junglers)
  303.  
  304.         del supports[:]
  305.         del tanks[:]
  306.         del casters[:]
  307.         del carries[:]
  308.         del junglers[:]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement