티스토리 툴바



데이터를 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]



 



 
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

'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
Posted by Charmm Lim Heo