0
왜이 간단한 문제는 해결되지 않습니까?왜 curve_fit은 두 점에서만 작동하지 않습니까?
import numpy as np
from scipy.optimize import curve_fit
exponential = lambda x, a, b: np.exp(a * x + b)
popt, pcov = curve_fit(f = exponential, xdata = [350, 380], ydata = [48, 17], p0 = [-1, 1])
print("a =", popt[0])
print("b =", popt[1])
오류 메시지는 다음과 같습니다
python-3.4.4\lib\site-packages\scipy\optimize\minpack.py:715:
OptimizeWarning: Covariance of the parameters could not be estimated
category=OptimizeWarning)
그리고 a
및 b
에 대한 해결책을 찾을 수있다. 출력은 다음과 같습니다
a = -1.0
b = 1.0
(나는 a
및 b
의 대수 솔루션 알고 있어요 - 내가 이해하지 않기 때문에 curve_fit
이 작동하지 않는 이유, 난 그냥이 질문에 대한 답을 찾고 있어요 .)
편집
좋아, @Shobeir 덕분에 내가 발견 :
p0
에 대한 초기 값은curve_fit
이 작동하기에 충분하지 않았습니다.p0 = [-0.01, 1]
을 사용하면a
및b
에 대해 매우 좋은 값이 발견됩니다. 따라서curve_fit
의 첫 부분 (popt
의 계산에 관한 부분)은 잘 작동합니다.OptimizeWarning
은pcov
의 계산으로 인해 발생합니다. 이것은 또 다른 질문 인 것 같습니다. 그래서 나는 새 질문을 올렸습니다. 사람이 다른 질문에 대한 솔루션을 찾고이 게시물을 발견하면, 여기 링크의 : Why isn't `curve_fit` able to estimate the covariance of the parameter if the parameter fits exactly?
답장을 보내 주셔서 감사합니다. 그러나, 나는 이해하지 못한다. .. 경고를 없애기 위해 나는 무엇을 할 수 있냐? 또한 질문 텍스트를 약간 업데이트했습니다. – Jayjayyy
더 많은 포인트를 측정하십시오 :) – Jannick
@ Jannick 당신 말이 맞아요, 더 많은 포인트들이 도움이되고'OptimizeWarning'가 사라집니다. 하지만 왜? 야 코비 행렬에 어떤 영향이 있습니까? (새로운 질문을 게시해야합니까?) – Jayjayyy