gradient_linear.py 1005 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. '''
  4. 最简单的mse
  5. '''
  6. import sys
  7. reload(sys)
  8. sys.setdefaultencoding('utf-8')
  9. import random
  10. import numpy as np
  11. from sklearn.linear_model import LinearRegression
  12. from sklearn import metrics
  13. from draw import draw_util
  14. def read_data(path):
  15. with open(path) as f :
  16. lines=f.readlines()
  17. lines=[eval(line.strip()) for line in lines]
  18. return lines
  19. def cal_step_pow(data, w, b=3):
  20. p = [(w*item[0][0] + b - item[1][0])*item[0][0]*2 for item in data]
  21. sum_p = sum(p)
  22. return sum_p/len(data)
  23. def cal_mse(data, w, b=3):
  24. sum_p = sum([(w * item[0][0] + b - item[1][0]) * (w * item[0][0] + b - item[1][0]) for item in data])
  25. return sum_p / len(data)
  26. def train():
  27. train_data = read_data('train_data')
  28. w = random.uniform(-50, 50)
  29. for i in range(10):
  30. step = cal_step_pow(train_data, w)*0.01
  31. mse = cal_mse(train_data, w)
  32. print w, step, mse
  33. w = w - step
  34. if __name__ == '__main__':
  35. train()