Advertisement
Guest User

Untitled

a guest
Mar 24th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.04 KB | None | 0 0
  1. import pandas
  2. from numpy import sqrt
  3.  
  4. training = []
  5. test = []
  6.  
  7.  
  8. def init():
  9. dataPanda = pandas.read_csv("data//train.csv")
  10. testPanda = pandas.read_csv("data//test_preview.csv")
  11.  
  12. # // 4 * 3
  13. training_index = len(dataPanda.index)
  14. x, y = [], []
  15. for i in range(0, len(dataPanda.index)):
  16. x1 = dataPanda.loc[i][0]
  17. y1 = dataPanda.loc[i][1]
  18. if (x1 < 3100 and y1 > 1400) or (x1 > 4400 and y1 < 1100) or x1 > 4800:
  19. continue
  20. x.append(x1)
  21. y.append(y1)
  22.  
  23. maxx = max(x)
  24. minx = min(x)
  25. maxy = max(y)
  26. miny = min(y)
  27.  
  28. for i in range(0, len(x)):
  29.  
  30. x1 = normalize(x[i], minx, maxx)
  31. y1 = normalize(y[i], miny, maxy)
  32.  
  33. training.append([x1, y1])
  34. # else: # test.append([x1, y1])
  35. for i in range(0, len(testPanda.index)):
  36. x1 = normalize(testPanda.loc[i][0], minx, maxx)
  37. y1 = normalize(testPanda.loc[i][1], miny, maxy)
  38. test.append([x1,y1])
  39. print(test)
  40.  
  41. return minx, maxx, miny, maxy
  42.  
  43.  
  44. def stepGradient(b_current, m_current, points, learningRate):
  45. b_gradient = 0
  46. m_gradient = 0
  47. N = float(len(training))
  48. for i in range(0, len(training)):
  49. # b_gradient += -(2 / N) * (points[i][1] - ((m_current * points[i][0]) + b_current))
  50. # m_gradient += -(2 / N) * points[i][0] * (points[i][1] - ((m_current * points[i][0]) + b_current))
  51.  
  52. # b_gradient -= points[i][1] - ((m_current * points[i][0]) + b_current)
  53. # m_gradient -= points[i][0] * (points[i][1] - ((m_current * points[i][0]) + b_current))
  54.  
  55. #
  56. b_gradient += ((m_current * points[i][0]) + b_current) - points[i][1]
  57. m_gradient += points[i][0] * (((m_current * points[i][0]) + b_current) - points[i][1])
  58.  
  59. # b_gradient *= 2 / N
  60. # m_gradient *= 2 / N
  61. new_b = b_current - (learningRate * b_gradient / N)
  62. # new_b /= N
  63. new_m = m_current - (learningRate * m_gradient / N)
  64. # new_m /= N
  65. return [new_b, new_m]
  66.  
  67.  
  68. def normalize(value, min, max):
  69. return (value - min) / (max - min)
  70.  
  71.  
  72. def denormalize(value_prim, min, max):
  73. return min + value_prim * (max - min)
  74.  
  75.  
  76. def calculateError(k, n, minx, maxx, miny, maxy):
  77. sumE = 0
  78. for i in range(0, len(test)):
  79. predicted = k * test[i][0] + n
  80. predicted = denormalize(predicted, miny, maxy)
  81. actual = denormalize(test[i][1], miny, maxy)
  82. # actual = test[i][1]
  83. # print(str(predicted) + " " + str(actual))
  84. sumE += (predicted - actual) ** 2
  85. sumE /= float(len(test))
  86. sumE = sqrt(sumE)
  87. return sumE
  88.  
  89.  
  90. if __name__ == '__main__':
  91.  
  92. minx, maxx, miny, maxy = init()
  93.  
  94. n, k = 242.86, 0.29
  95. # n,k = 0.2, 240
  96. # n, k = 0, 0
  97. for i in range(0, 1000):
  98. n, k = stepGradient(n, k, training, 0.01)
  99. err = calculateError(k, n, minx, maxx, miny, maxy)
  100. print("ERR: " + str(err))
  101.  
  102. print(n)
  103. print(k)
  104.  
  105. rmse = calculateError(k, n, minx, maxx, miny, maxy)
  106. print(rmse)
  107.  
  108. print(k)
  109. print(n)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement