传说数界高大人公牍之余发现反算直线程系数的最小二乘君一枚(发现实用型人才)但是坊间传言是皮大人先举荐最小二乘君的啊(此君于野是专职算星星的。。。
# -*- coding: utf-8 -*-
"""
Created on Thu Sep 18 10:43:37 2014
@author: aminic
"""
import numpy as np
import pylab as pl
#样本点
d=[[1,2],[2,3],[3,4],[2.5,3],[4,3],[8,4]]
d=np.array(d)
#算最小二乘公式计算因子
avg_x=average(d[:,0])
avg_y=average(d[:,1])
avg_xy=average(d[:,0]*d[:,1])
avg_x2=average(d[:,0]**2)
#算直线方程系数,形式为y=w0+w1*x
#算斜率
w1=(avg_xy-avg_x*avg_y)/(avg_x2-avg_x**2)
#算截距
w0=avg_y-w1*avg_x
#show方程
symbol=('+' if w1>=0 else '-')
equation_show='y = {0} {1} {2}x'.format(w0,symbol,w1)
print equation_show
#绘出样本点
for dot in d:
pl.plot(dot[0],dot[1],'ro')
#绘出方程直线
testx=np.array(range(0,10))
testy=w0+w1*testx
pl.plot(testx,testy,'g--')
pl.show()