私が知っているいくつかの設定点、xとyに当てはまる曲線を見つけてプロットしたいと思います。Pythonの非線形曲線適合プログラム
私はscipy.optimizeとcurve_fitを使って実験を始めましたが、リファレンスガイドでは、代わりにデータにフィットする関数を使用し、ydata = f(xdata、* params)+ epsと仮定していました。
だから私の質問はこれです:私は私のセットポイントを使用して曲線の関数を見つけることcurve_fitまたは他のライブラリを使用するために自分のコードに変更することは何がありますか? (注:関数についても知りたいので、後でプロジェクトに統合してプロットすることができます)。私はそれが減衰する指数関数になることは知っていますが、正確なパラメータは分かりません。これは自分のプログラムで試したものです:
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
def func(x, a, b, c):
return a * np.exp(-b * x) + c
xdata = np.array([0.2, 0.5, 0.8, 1])
ydata = np.array([6, 1, 0.5, 0.2])
plt.plot(xdata, ydata, 'b-', label='data')
popt, pcov = curve_fit(func, xdata, ydata)
plt.plot(xdata, func(xdata, *popt), 'r-', label='fit')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()
このプロジェクトは、現在何か変更があった場合、Raspberry Piで開発中です。そして、最小二乗法を使用したいのは、偉大で正確ですが、うまくいく他の方法は大歓迎です。 これも、scipyライブラリのリファレンスガイドに基づいています。また、私も曲線ではない以下のグラフを取得:セットポイントに基づいて、グラフや曲線
はすべてがあなたのプロットを除いて、OKです: 'X =あなたのフィット関数を評価したいので、np.arange(0、1、0.01) 'と' plt.plot(x、func(x、* popt)、 'r-'、label = 'fit'より多くのポイントで、滑らかな結果を見ることができます。適合したパラメータに関しては、それらはpopt配列にあります。 –
実際にあなたは既存のコードで何が問題になっていますか?編集:@MauroLacyは私が疑っていたものを確認しました。 –