环境 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---'