123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #!/usr/bin/python
- # -*- coding: UTF-8 -*-
- '''
- 最简单的mse
- '''
- import sys
- reload(sys)
- sys.setdefaultencoding('utf-8')
- import random
- import numpy as np
- from sklearn.linear_model import LinearRegression
- from sklearn import metrics
- from draw import draw_util
- def read_data(path):
- with open(path) as f :
- lines=f.readlines()
- lines=[eval(line.strip()) for line in lines]
- return lines
- def cal_step_pow(data, w, b=3):
- p = [(w*item[0][0] + b - item[1][0])*item[0][0]*2 for item in data]
- sum_p = sum(p)
- return sum_p/len(data)
- def cal_mse(data, w, b=3):
- sum_p = sum([(w * item[0][0] + b - item[1][0]) * (w * item[0][0] + b - item[1][0]) for item in data])
- return sum_p / len(data)
- def train():
- train_data = read_data('train_data')
- w = random.uniform(-50, 50)
- for i in range(10):
- step = cal_step_pow(train_data, w)*0.01
- mse = cal_mse(train_data, w)
- print w, step, mse
- w = w - step
- if __name__ == '__main__':
- train()
|