데이터를 fitting 할 일이 생겼다.
기존에는 gnuplot에 내장되어 있는 fitting method를 사용하였는데,
gaussian function에 대해서는 solution이 initial guessing parameter에 대해서 매우 sensitive하고,
그 결과가 unstable해서 적절한 것 같지 않았다.
또한, fitting 할 set이 그 수가 많아서 gnuplot으로 하기엔 양이 많았다.
googling을 통해 찾아본 결과!
scipy 라는 scientific python module을 사용하면 쉽게 할 수 있다고 해서 이에 도저언~~~
1. SciPy Installation
http://www.scipy.org/Installing_SciPy/Linux
여기에 뭐라뭐라 나와있는데,
ubuntu에서는 정말 간단하다.
# sudo apt-get install python-scipy
혹시, numpy가 설치되어있지 않다면,
# sudo apt-get install python-numpy python-scipy
이걸로 끝!
2. Fitting data using scipy
http://www.scipy.org/Cookbook/FittingData
이 module은 친절하게 사용법을 하나하나 알려준다. :)
residual function, initial guessing parameter, data
이렇게 세 개의 요소만 있으면 fitting 완료!
단, data가 numpy에서 사용하는 array형태로 들어가야 한다. (여기서 삽질좀..;;)
#!/usr/bin/python
from numpy import *
from scipy.optimize import *
res = lambda p,x,y: y - (p[0]*x + p[1]) # Residual function
p0 = [1.0,0.0] # Initial guessing parameter
x = array([1,2,3])
y = array([1.1,1.8,2.7])
p1 = leastsq(res,p0,args=(x,y))
print p1[0]
>> [0.85 0.23333334]
from numpy import *
from scipy.optimize import *
res = lambda p,x,y: y - (p[0]*x + p[1]) # Residual function
p0 = [1.0,0.0] # Initial guessing parameter
x = array([1,2,3])
y = array([1.1,1.8,2.7])
p1 = leastsq(res,p0,args=(x,y))
print p1[0]
>> [0.85 0.23333334]
'Study' 카테고리의 다른 글
| 2012 단백질 겨울학교 강의 자료들 (1) | 2012/01/17 |
|---|---|
| Python으로 fitting하기! (0) | 2011/06/14 |
| 생물물리학 기말 발표 자료 (0) | 2011/06/11 |
| 첫 발표... (0) | 2010/02/18 |
| 전산물리 기말고사 종료 (1) | 2009/12/21 |
| 전산물리 기말고사 푸는 중... (0) | 2009/12/19 |



