【Pythonチートシート】多項式近似、対数近似など近似式の求め方

スポンサーリンク
この記事は 約4 分で読めます。

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

なつめ
なつめ

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

他にもPythonのおすすめ記事をこちらにまとめました。

なつめ黒猫
なつめ黒猫

星の数は記事で紹介しているプログラミングの難易度を示しているよ。自分のレベルに合わせて読んでみてね。

また、Pythonなどのプログラミングを本格的に勉強したのであれば、オンラインでも受講可能な「TECH  ACADEMY」がオススメです。

専属のアドバイザーがついてくれるので、短期集中で必要なプログラミング技術を身に着けることができます。

なつめ黒猫
なつめ黒猫

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

理系王子
理系王子

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

 

人工知能AIやpythonプログラミングを初心者でも学べるオンライン学習Aidemyの評判
人工知能AIに特化したオンラインのプログラミングスクール「Aidemy」プレミアムの評判や口コミ、Python言語を使った学習内容や実際に作るAIアプリ例、他のスクールとの受講料や期間を比較して、分かりやすくご紹介します。

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

高収入なAIエンジニアに転職するならPythonが有利な4つの理由
AIエンジニアに転職するならプログラミング言語「Python」を勉強した方が有利な理由をご紹介しています。
AIエンジニアの求人がさらに好待遇になる4つの理由
AIエンジニアが好待遇で求人される理由についてご紹介します。
スポンサーリンク

多項式近似

まずは簡単な1次式の近似式の求め方です。
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でももちろん計算して描画することができます。みなさんもぜひやってみてください。

Pocket

コメント