가중치가 최소 인 사각형을 최소화하는 자연스러운 스플라인에 맞는 숫자 패키지를 찾으려고합니다.Python Least-Squares Natural Splines
부 자연스러운 스플라인을 원한다면 scipy에 패키지가 있습니다.
import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate, randn
x = np.arange(0,5,1.0/6)
xs = np.arange(0,5,1.0/500)
y = np.sin(x+1) + .2*np.random.rand(len(x)) -.1
knots = np.array([1,2,3,4])
tck = interpolate.splrep(x,y,s=0,k=3,t=knots,task=-1)
ys = interpolate.splev(xs,tck,der=0)
plt.figure()
plt.plot(xs,ys,x,y,'x')
응답 해 주셔서 감사합니다. 지정한 파일은 자연스러운 스플라인으로 모든 데이터를 보간합니다. 즉, 커브는 데이터의 모든 지점을 통과하게됩니다. 데이터가 시끄 럽다면 (내 경우는 그렇다), 이것은 나쁜 일이다. 데이터를 빈 (bin)으로 분리하고 최소 제곱 근사를 수행하면 데이터를 정확하게 보간하지 않는 부드러운 곡선을 얻을 수 있습니다 (잡음이 많은 데이터의 경우 더 낫습니다). 나는 수업을 직접 써야한다고 생각하지만, 그것은 잘못 될 수있는 또 하나의 것 같다. 다시 한번 감사드립니다. – Eldila
나는 내 자신의 코드를 작동 시켰습니다. 또한 pyD3D 패키지를 사용하여 두 번째 옵션을 다시 살펴 보았습니다. 처음에는 보간을했다고 생각했지만 지금은 확신이 없습니다. 어느 쪽이든, 나는 당신의 대답을 인정 된 대답으로 표시 할 것입니다. – Eldila
분명히 밝혀지면 s = 0.0이라고하는 대답은 "자연스러운"스플라인을 생성합니다. 잘못된 말입니다. 자연스러운 스플라인은 끝점에서 2 차 미분에 조건이 있어야합니다. – Noah