글
최소 자승법(제곱법) 을 이용하여 데이터를 근사하는 방법에 대해 알아보려고 한다.
여기서는 각각의 데이터들이 일차함수 y=ax+b의 형태로 나타낼 수 있음을
알고 있다고 가정했을 때이다.
최소제곱법을 이용한 함수의 근사 (1)
위의 페이지에 최소자승법에 대한 설명이 자세히 나와있어
더 이상의 설명은 하지 않는다.
위의 페이지에는 파이썬으로 구현된 코드도 있는데 a와b를 구하는 방법이 생략되었다.
그래서 그 부분을 추가시켰다.
~\Downloads\LSM.py.html
여기서는 각각의 데이터들이 일차함수 y=ax+b의 형태로 나타낼 수 있음을
알고 있다고 가정했을 때이다.
최소제곱법을 이용한 함수의 근사 (1)
위의 페이지에 최소자승법에 대한 설명이 자세히 나와있어
더 이상의 설명은 하지 않는다.
위의 페이지에는 파이썬으로 구현된 코드도 있는데 a와b를 구하는 방법이 생략되었다.
그래서 그 부분을 추가시켰다.
1 import numpy as np 2 import matplotlib.pyplot as plt 3 from scipy import linalg 4 5 x=[0.0,0.1,0.2,0.3,0.4] 6 y=[2.50,5.68,9.00,12.2,15.0] 7 8 xp=np.arange(-0.1,0.5,0.05) 9 10 a11=sum([xx**2 for xx in x]) 11 a12=sum([xx for xx in x]) 12 a21=sum([xx for xx in x]) 13 a22=sum([1 for xx in x]) 14 b2=sum([yy for yy in y]) 15 b1=0.0 16 for ii in range(len(x)): 17 b1=b1+x[ii]*y[ii] 18 19 A=np.array(((a11,a12),(a21,a22))) 20 b=np.reshape(np.array((b1,b2)),(2,1)) 21 22 X=np.linalg.solve(A,b) 23 24 print X[0], X[1] 25 26 #a=31.54 27 #b=2.57 28 29 yp=[X[0]*xx+X[1] for xx in xp] 30 fig=plt.figure(0) 31 ax=fig.add_subplot(111) 32 plt.plot(x,y,'o',xp,yp) 33 ax.axis([-0.1,0.45,-0.5,15.5]) 34 plt.show()
'Python' 카테고리의 다른 글
| Python에서 오픈소스 통계 프로그래밍 언어 R 사용하기 (0) | 2013.02.18 |
|---|---|
| 파이썬 모듈 소개 visvis (0) | 2012.11.26 |
| 소스코드를 syntax highlight된 형태로 보여주고 싶을 때 (0) | 2012.11.24 |
RECENT COMMENT