线性回归与梯度下降(gradient descent) python

环境 numpy (1.12.1) + python 2.7

#!/usr/bin/env python 
#coding:utf-8

import numpy as np 

x1 = np.asarray([1,3,5])	# 训练样本
x2 = np.asarray([1,4,4])
y1 = 100
y2 = 150

W = np.zeros(3)				# 初始化参数

def hx(W, X):				# 待拟合的假设函数
	return W.dot(X)

X = [x1, x2]
Y = [y1, y2]

lamda = 0.01				# 学习率

for i in range(1000):
	for x, y in zip(X, Y):
		W = W - lamda * (hx(W, x)-y) * x 	# 参数更新
		print W, hx(W, x)-y 				# 更新后的参数,当前loss


print 'w0,w1,w2 = [4.54545455  43.18181818  -6.81818182]'
print 'w0 is intercept'
print '根据数据 直观的可以看出 y与第2个特征成正比,与第三个特征成反比,而学习到的特征权重正是如此'
print '参数绝对值越大,说明该特征越重要,推广到分类中,参数为正表示该特征为正样本特征(二分类中label为1的类别/多分类中正样本为当前类别)'
print '---end---'


你可能感兴趣的:(ml)