「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python で指数関数および対数曲線フィッティングを実行するにはどうすればよいですか?

Python で指数関数および対数曲線フィッティングを実行するにはどうすればよいですか?

2024 年 11 月 8 日に公開
ブラウズ:373

How can I perform exponential and logarithmic curve fitting in Python?

曲線近似: Python での指数関数と対数のアプローチ

Python では、polyfit() を使用して多項式曲線近似を簡単に利用できますが、このガイドでは指数曲線と対数曲線の方法について説明します。 Fitting.

対数フィッティング

フォームの線をフィットさせるにはy = A B log x、単に log x に対して y の多項式近似を実行します。

import numpy as np

x = np.array([1, 7, 20, 50, 79])
y = np.array([10, 19, 30, 35, 51])

coeffs = np.polyfit(np.log(x), y, 1)
print("y ≈", coeffs[1], "log(x)  ", coeffs[0])  # y ≈ 8.46 log(x)   6.62

指数近似

y = Ae^{Bx} の形式の行、両辺の対数を取り、log の多項式近似を実行します。 y 対 x.

x = np.array([10, 19, 30, 35, 51])
y = np.array([1, 7, 20, 50, 79])

coeffs = np.polyfit(x, np.log(y), 1)
print("y ≈ exp(", coeffs[1], ") * exp(", coeffs[0], " * x) = 0.670 * exp(0.105 * x)")

精度を高めるため、polyfit().

coeffs = np.polyfit(x, np.log(y), 1, w=np.sqrt(y))
print("y ≈ exp(", coeffs[1], ") * exp(", coeffs[0], " * x) = 4.12 * exp(0.0601 * x)")

ほとんどのスプレッドシートおよび関数電卓アプリケーションは、指数回帰に重み付けされていない式を使用するため、互換性が確保されていない場合は重み付けを避けてください。

scipy.optimize.curve_fit の使用

scipy が利用可能な場合は、変換なしでモデルをフィッティングするために Curve_fit を使用します。

from scipy.optimize import curve_fit

# Logarithmic fitting
coeffs, _ = curve_fit(lambda t, a, b: a   b * np.log(t), x, y)
print("y ≈", coeffs[1], "log(x)  ", coeffs[0])  # y ≈ 6.62   8.46 log(x)

# Exponential fitting with initial guess
coeffs, _ = curve_fit(lambda t, a, b: a * np.exp(b * t), x, y, p0=(4, 0.1))
print("y ≈", coeffs[0], "exp(", coeffs[1], " * x) = 4.88 exp(0.0553 x)")

初期推測を提供することで、curve_fit は次の値に達します。指数関数近似に必要な極小値。変換されたポリフィット法よりも正確な近似が得られます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3