-
[Python] curve_fit : data로 그래프 그리고 fitting하기Programming/Python 2022. 7. 19. 14:01
🔼그래프를 쉽게 만들어서 보기 위해 python, numpy를 사용합니다.
그래프를 보여주기 위해 pyplot도 import해줍니다.
import numpy as np import matplotlib.pyplot as plt
✅txt에 저장되어 있는 데이터를 array로 가져오기
y = np.loadtxt('trajectory.txt', delimiter = ' ',usecols=2, dtype = 'float')
delimiter : 구분자 기호(나의 경우는 띄어쓰기)
usecols : 어떤 열을 쓸 것인지
✅x축을 만들어주기(y값과 길이가 같은 array)
x = np.array(range(y.shape[0])).reshape(1,y.shape[0])
❗주의
이렇게하고 출력하면 [[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]]가 나온다.
curve_fit에 그대로 넣어주면 TypeError: Improper input: N=3 must not exceed M=1 이딴 에러를 발생한다
(이거때문에 한참 고생했는데 구글링해서 발견함)
x = x[0,:]
이렇게 하고 출력하면 [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20] 가 됨.
✅커브피팅
from scipy.optimize import curve_fit #curve_fit을 위해 import def func(x,a,b,c): #curve_fitting에 사용할 함수 사전 정의 return a*x**3+b*x**2+c*x # 3차 함수 #return a*np.exp(-(x-b)**2/(2*c**2)) #gaussian function popt, pcov = curve_fit(func,x,y) cur_y = func(x,popt[0],popt[1],popt[2]) plt.plot(x,cur_y)
popt에 func의 a,b,c가 들어가서 cur_y로 새로운 그래프를 만들게 된다.
원래 데이터와 (초록)
curve_fit 한 그래프 (파랑)
함께 그려준 모습
참고
전산물리학:선형_회귀_분석_linear_regression_analysis [statphys] (pknu.ac.kr)
기록하고 싶은 기록들 :: Python numpy 데이터피팅, 함수의 해 graph (tistory.com)
Graph Plotting in Python | Set 1 - GeeksforGeeks
Numpy array 를 shape로 차원확인 하기 :: 바람이 분다 (tistory.com)
[SciPy. Curve_Fit] 쓰기위해서 배우는 최소한의 curve_fit 함수 (tistory.com)
4.3.2. Optimization - OneBook(Python & Deep Learning) (gitbook.io)
이거는 적용해보진 않았는데 나중에 참고용..
Numpy의 polyfit과 poly1d의 사용법 - 최소제곱법과 polynomial class (pinkwink.kr)
'Programming > Python' 카테고리의 다른 글
[Python] File / Exception / Log (0) 2023.08.29 [Python] String, Function, Scoping rule, 함수 작성 가이드라인 (0) 2023.08.15 [Python] outlier 찾기, 마할라노비스 거리 계산 (실전) (0) 2022.12.28 [Python] Outlier(이상치) 찾기 , 마할라노비스 거리 (이론) (0) 2022.12.28 [Python] print .format 자릿수 맞추기, 오른정렬, 소수점 출력 (0) 2022.09.02