在 Python 中進行指數和對數曲線擬合

Lakshay Kapoor 2023年1月30日
  1. Python 中用於對數和指數曲線擬合的庫和模組
  2. 對數曲線擬合
  3. 指數曲線擬合
在 Python 中進行指數和對數曲線擬合

曲線擬合是一種非常有效的工具,廣泛用於分析。曲線擬合方法研究自變數(也稱為預測變數)和因變數(稱為響應變數)之間的關係。該方法旨在提供最合適的模型來擬合一定數量的資料點。

曲線擬合有兩種型別:

  • 對數曲線擬合
  • 指數曲線擬合

在本教程中,我們將向你展示如何在 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)

輸出:

python 中的對數曲線

在上面的程式中,我們首先匯入必要的庫。之後,我們建立兩個 NumPy 陣列作為我們的主要資料。然後,我們計算兩個陣列中元素的對數值。我們將 polyfit() 函式用於 xy 陣列的對數值。使用 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)

輸出:

python 中的指數曲線

遵循與我們在對數曲線擬合中所做的相同的過程。但在這裡,使用指數函式而不是對數函式。因此,polyfit() 函式返回的係數在指數函式方程中傳遞。

作者: Lakshay Kapoor
Lakshay Kapoor avatar Lakshay Kapoor avatar

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

相關文章 - Python Math