今回は、Pythonで多項式近似や対数近似などの近似式を計算する方法について、ご紹介します。

本記事は「ある程度他のプログラミング言語の経験はあるけど、あまりPythonは使ったことがない人を対象としたチートシート」です。私自身の備忘録的な感じでまとめています。
他にもPythonのおすすめ記事をこちらにまとめました。

星の数は記事で紹介しているプログラミングの難易度を示しているよ。自分のレベルに合わせて読んでみてね。
Pythonおすすめ記事
また、Pythonなどのプログラミングを本格的に勉強したのであれば、オンラインでも受講可能な「TECH ACADEMY」がオススメです。
専属のアドバイザーがついてくれるので、短期集中で必要なプログラミング技術を身に着けることができます。

「TECH ACADEMY」よるスキルアップで、もう一段上のエンジニアへステップアップしましょう!

また、AI開発や人工知能アプリに特化してもっと勉強したい人、AIエンジニアの資格取得や転職にチャレンジしてみたいという方には、Aidemyがおすすめです。こちらの記事で詳しく解説しています。

また、AIで転職したい人はこちらの記事もおすすめです。


多項式近似
import numpy as np
from scipy import optimize
model_1 = lambda t,a,b : a*t + b
popt, pcov = optimize.curve_fit(model_1, x, y)

xに入力、yに結果を入れます。
poptが最適推定値、pcovが共分散を示します。

1次式の定義はdefで定義することもできますが、上記のようにlambda式を使うことでシンプルにコーディングできます。
また、importはscipy.optimizeのcurve_fitだけでもOKです。
6次式だとこんな感じです。
import numpy as np
from scipy import optimize
model_6 = lambda t,a,b,c,d,e,f,g: a*t**6 + b*t**5 + c*t**4 + d*t**3 + e*t**2 + f*t + g
popt, pcov = optimize.curve_fit(model_6, x, y)

少しlambda式が複雑になっただけで、やっていることは同じです。
対数近似
対数で近似する場合はこんなかんじです。
import numpy as np
from scipy import optimize
def f(t, a, b):
return a + b * np.log(t)
popt, pcov = optimize.curve_fit(f, x, y)

今回はlambda式ではなく、対数関数を定義してみました。
指数近似
指数で近似する場合はこんな感じです。
import numpy as np
from scipy import optimize
def f(t, a, b, c):
return a * np.exp(b * t) + c
popt, pcov = optimize.curve_fit(f, x, y)

関数の定義以外は対数の場合と同じですね。
まとめ
今回は、Pythonで多項式近似や対数近似などの近似式を計算する方法についてご紹介しました。

Excelでやっている対数近似や多項式近似を、Pythonでももちろん計算して描画することができます。みなさんもぜひやってみてください。
コメント