Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. class Rneuronal(object):
  2.  
  3. def __init__(self, peso=None, umbral=0.5):
  4. self.umbral = umbral
  5. self.peso = peso
  6. self.verbose = False
  7.  
  8. def salidas(self, vector1):
  9. if self.total(vector1) < self.umbral:
  10. return 0
  11. else:
  12. return 1
  13.  
  14. def entrenador(self, entrenar, alpha=0.1, despues=100):
  15. if self.peso is None:
  16. self.peso = [0 for _ in range(len(entrenar.keys()[0]))]
  17. n = 0
  18. actua = True
  19. while(actua):
  20. n += 1
  21. actua = False
  22. for xy, a in entrenar.items():
  23. y = self.salidas(xy)
  24. if(y != a):
  25. self.Apeso(alpha, a, y, xy)
  26. self.A_umbral(alpha, a, y)
  27. actua = True
  28. if despues is not None and n >= despues:
  29. break
  30. return n
  31.  
  32. def prueba(self, entrenar):
  33. for xy, a in entrenar.items():
  34. if(self.salidas(xy) != a):
  35. return False
  36. return True
  37.  
  38. def total(self,vector1):
  39. total = 0
  40. for y,x in zip(self.peso, vector1):
  41. total += (y * x)
  42. return total
  43.  
  44. def Apeso(self, alfa, a, y, xy):
  45. for i in range(len(self.peso)):
  46. self.peso[i] = (alfa * (a - y) * xy[i]) + self.peso[i]
  47.  
  48. def A_umbral(self, alfa, a, y):
  49. self.umbral = (alfa * (a - y) * -1) + self.umbral
  50. negacion= {
  51. (0,0): 1,
  52. (0,1): 1,
  53. (1,0): 1,
  54. (1,1): 0
  55. }