Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. from math import exp, log
  2. from random import random
  3.  
  4. def sigmoid(x):
  5. return 1/(1+exp(-x))
  6.  
  7. def predict(coef, x):
  8. y = 0
  9. for i in range(len(coef)):
  10. y = y + coef[i]*x[i]
  11. return y
  12.  
  13. def update_coef(coef, x, y, learningRate):
  14. yguess = []
  15. for i in range(len(x)):
  16. yguess.append(sigmoid(predict(coef, x[i])))
  17. for i in range(len(coef)):
  18. gradient = 0
  19. for j in range(len(x)):
  20. eroare = yguess[i] - y[i]
  21. gradient = gradient + (eroare * x[j][i])
  22. coef[i] = coef[i] - (learningRate * gradient)
  23. return coef
  24.  
  25. def cost(x, y, coef):
  26. c = 0
  27. for i in range(len(x)):
  28. yguess = sigmoid(predict(coef, x[i]))
  29. t1 = y[i] - log(yguess)
  30. t2 = (1 - y[i]) * log(1-yguess)
  31. c = c - t1 - t2
  32. return c / len(x)
  33.  
  34. def label(x, coef):
  35. if sigmoid(predict(coef, x)) < 0.5:
  36. return 0
  37. return 1
  38.  
  39. def train(x, y, learningRate, numarEpoci, eroareMinima):
  40. coef = [random() for i in range(len(x[0]))]
  41. costCurent = cost(x, y, coef)
  42. while costCurent > eroareMinima and numarEpoci > 0:
  43. update_coef(coef, x, y, learningRate)
  44. costCurent = cost(x, y, coef)
  45. numarEpoci = numarEpoci - 1
  46. return coef
  47.  
  48. def accuracy(x, y, coef):
  49. suma = 0
  50. for i in range(len(x)):
  51. yguess = label(x[i], coef)
  52. if yguess == y[i]:
  53. suma = suma + 1
  54. return suma / len(x)
  55.  
  56. if __name__ == '__main__':
  57. #x = [[-1.11,-0.77], [-0.76, -1.25], [-0.06, 0.19], [0.62, 1.15], [1.32, 0.67]]
  58. x = [[1.0, 0.00662, 3.38e-05], [1.0, 0.0081, 6.375e-05], [1.0, 0.00273, 1.57e-05], [1.0, 0.00382, 3.005e-05], [1.0, 0.00501, 3.648e-05], [1.0, 0.00453, 3.481e-05], [1.0, 0.00526, 6.016e-05], [1.0, 0.0087, 4.743e-05], [1.0, 0.0124, 0.00011434], [1.0, 0.00476, 4.216e-05]]
  59. #y = [0,0,1,1,1]
  60. y = [28.199, 11.218, 23.856, 11.27, 31.0, 27.729, 16.816, 18.169, 17.0, 12.0]
  61. coef = train(x, y, 0.0005, 100000, 0.5)
  62. #yout = label([-0.41, -0.28], coef)
  63. yout = sigmoid(predict(coef, [[1.0, 0.00355, 2.694e-05], [1.0, 0.00644, 4.285e-05], [1.0, 0.00495, 2.524e-05]]))
  64. print(yout)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement