第四章 最小二乗法-「これなら分かる最適化数学」
#二次元データで正規方程式を解く #-*- coding:utf-8 -*- from numpy import * from pylab import * #例題4.2 #x=[4,15,30,100,200] #y=[-17,-4,-7,50,70] #例題4.3 #x=[2.8,2.9,3.0,3.1,3.2,3.2,3.2,3.3,3.4] #y=[30,26,33,31,33,35,37,36,33] #正規方程式 def g(A,B): x_11=np.dot(A,A) x_12=sum(A) x_21=sum(A) x_22=len(A) y_11=np.dot(A,B) y_21=sum(B) A=matrix([[x_11,x_12],[x_21,x_22]]) b=matrix([[y_11],[y_21]]) C=dot(A.I,b) return C[0],C[1] def main(): a,b=g(x,y) plot(x,y,'r*') xlist=matrix(linspace(0,200,1000)) ylist=a*xlist+b plot(xlist,ylist,'b*') show() if __name__=="__main__": main()