Python で指数曲線と対数曲線のフィッティングを行う
カーブフィッティングは、分析に広く使用されている非常に効率的なツールです。カーブフィッティング法は、予測変数としても知られている独立変数と応答変数として知られている従属変数の間の関係を研究します。この方法は、特定の量のデータポイントに適合する最適なモデルを提供することを目的としています。
カーブフィッティングには 2つのタイプがあります。
- 対数カーブフィッティング
- 指数カーブフィッティング
このチュートリアルでは、Python で対数カーブフィッティングと指数カーブフィッティングを行う方法を紹介します。
Python で対数および指数カーブフィッティングに使用されるライブラリとモジュール
プログラムの実行に使用できる可能性のあるライブラリとモジュールについて説明しましょう。
NumPy ライブラリ
NumPy
ライブラリから使用する関数は次のとおりです。
array()
- この関数は、同じタイプの値のセットであり、タプルの形式のインデックス値を持つNumPy
配列を作成するために使用されます。log()
- この関数は、数値の自然対数を計算するのに役立つ数学演算です。その番号は、入力配列の要素の一部です。exp()
- この関数は、入力NumPy
配列に存在する要素の指数を計算するために使用される数学演算でもあります。polyfit()
- この関数は、任意のデータを多項式関数に適合させるのに役立ちます。多項式フィットを最小二乗します。
Matplotlib ライブラリ
Matplotlib
ライブラリは、主に Python でのプロットに使用されます。このライブラリは通常、Python で視覚化を作成するために使用されます。このチュートリアルでは、pyplot
モジュールと呼ばれるこのライブラリのモジュールを使用します。
Matplotlib
ライブラリの pyplot
モジュールは、Matplotlib
ライブラリを MATLAB のように機能させるのに役立つオープンソースモジュールです。このモジュールには、プロット領域の作成、プロット上のラベルの作成などの操作を実行するのに役立つ多くの機能があります。
対数カーブフィッティング
名前が示すように、対数方程式がここにプロットされます。Python で対数カーブフィッティングを行うコードに直接ジャンプしてみましょう。
import numpy as np
x = np.array([5, 10, 15, 20, 25])
y = np.array([3, 6, 9, 12, 15])
log_x = np.log(x)
log_y = np.log(y)
coefficients = np.polyfit(log_x, y, 1)
print(coefficients)
出力:
[ 7.2647162 -9.64806344]
プロットについては、このプログラムに従ってください。
import matplotlib.pyplot as plt
c = 7.26 * log_x - 9.64
plt.plot(log_x, y, "o")
plt.plot(log_x, c)
出力:
上記のプログラムでは、最初に必要なライブラリをインポートします。その後、プライマリデータとして 2つの NumPy
配列を作成します。次に、両方の配列の要素の対数値を計算します。x
配列と y
配列の両方の対数値に polyfit()
関数を使用します。polyfit()
関数を使用して、対数方程式の係数が返されます。
- 係数を取得した後、曲線をプロットするために対数方程式でそれらの係数を使用します。
- 最後に、
Matplotlib
ライブラリのpyplot
モジュールのplot()
関数を使用してグラフをプロットします。
指数カーブフィッティング
名前が示すように、指数方程式がここにプロットされます。Python で指数カーブフィッティングを行うコードに直接ジャンプしてみましょう。
import numpy as np
a = np.array([6, 12, 18, 24, 30])
b = np.array([4, 8, 12, 16, 20])
log_a = np.log(a)
log_b = np.log(b)
coefficients = np.polyfit(a, log_b, 1)
print(coefficients)
出力:
[0.06520038 1.17018581]
プロットについては、次のコードスニペットをたどることができます。
c = np.exp(1.17) * np.exp(0.06 * a)
plt.plot(a, b, "o")
plt.plot(a, c)
出力:
対数カーブフィッティングで行ったのと同じ手順に従います。ただし、ここでは、対数関数の代わりに指数関数が使用されています。したがって、polyfit()
関数によって返される係数は、指数関数方程式で渡されます。
Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.
LinkedIn