Python擬合曲線怎么做?三種回歸方法代碼示例詳解
1. 簡單線性回歸
使用回歸分析繪制擬合曲線是一種常見的方法,簡單線性回歸就是其中的一種。
簡單線性回歸可以通過最小二乘法來計(jì)算回歸系數(shù)。
以下是一個(gè)使用簡單線性回歸來擬合數(shù)據(jù)的代碼示例:
import numpy as np import matplotlib.pyplot as plt x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) y = np.array([2.5, 4.5, 4.8, 5.5, 6.0, 7.0, 7.8, 8.0, 9.0, 9.5]) # 計(jì)算回歸系數(shù) slope, intercept = np.polyfit(x, y, 1) # 繪制擬合曲線 plt.scatter(x, y) plt.plot(x, slope * x + intercept, color='red') plt.show()

在該代碼中:
np.polyfit函數(shù)可以用來計(jì)算簡單線性回歸的回歸系數(shù)。plot函數(shù)用來繪制擬合曲線,scatter函數(shù)繪制原始數(shù)據(jù)點(diǎn)。
2. 多項(xiàng)式回歸
使用多項(xiàng)式回歸是一種常用方法,它可以用來擬合更加復(fù)雜的數(shù)據(jù)集。
以下是一個(gè)使用多項(xiàng)式回歸來擬合數(shù)據(jù)的代碼示例:
import numpy as np import matplotlib.pyplot as plt x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) y = np.array([2.5, 4.5, 4.8, 5.5, 6.0, 7.0, 7.8, 8.0, 9.0, 9.5]) # 計(jì)算多項(xiàng)式回歸系數(shù) coefs = np.polyfit(x, y, 3) # 使用np.poly1d函數(shù)來生成一個(gè)多項(xiàng)式擬合對象 poly = np.poly1d(coefs) # 生成新的橫坐標(biāo),使得擬合曲線更加平滑 new_x = np.linspace(min(x), max(x), 1000) # 繪制擬合曲線 plt.scatter(x, y) plt.plot(new_x, poly(new_x), color='red') plt.show()

與簡單線性回歸不同,多項(xiàng)式回歸可以擬合更加復(fù)雜的數(shù)據(jù)集。
在該代碼中,np.polyfit函數(shù)計(jì)算多項(xiàng)式回歸系數(shù),np.poly1d函數(shù)生成一個(gè)多項(xiàng)式擬合對象。plot函數(shù)用來繪制擬合曲線,scatter函數(shù)繪制原始數(shù)據(jù)點(diǎn)。
3. 非線性回歸
使用非線性回歸是一種更加復(fù)雜的擬合方法,在實(shí)際應(yīng)用中可以用來擬合更加復(fù)雜的非線性數(shù)據(jù)。
以下是一個(gè)使用非線性回歸來擬合數(shù)據(jù)的代碼示例:
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
def func(x, a, b, c):
return a * np.exp(-b * x) + c
# 生成模擬數(shù)據(jù)
x_data = np.linspace(0, 4, 50)
y_data = func(x_data, 2.5, 1.3, 0.5) + 0.2 * np.random.normal(size=len(x_data))
# 使用curve_fit函數(shù)來擬合非線性數(shù)據(jù)
popt, pcov = curve_fit(func, x_data, y_data)
# 畫出原始數(shù)據(jù)和擬合曲線
plt.scatter(x_data, y_data, label="Data")
plt.plot(x_data, func(x_data, *popt), color='red', label="Fitted curve")
plt.legend()
plt.show()
在該代碼中,使用了Scipy庫中的curve_fit函數(shù)來擬合非線性數(shù)據(jù)。curve_fit函數(shù)中第一個(gè)參數(shù)是非線性函數(shù),第二個(gè)參數(shù)是擬合數(shù)據(jù)的橫坐標(biāo),第三個(gè)參數(shù)是擬合數(shù)據(jù)的縱坐標(biāo)。

總結(jié)
以上是Python中的三種常用擬合曲線方法。
簡單線性回歸可以擬合線性關(guān)系的數(shù)據(jù),多項(xiàng)式回歸可以擬合更加復(fù)雜的數(shù)據(jù),而非線性回歸則可以用來擬合非線性數(shù)據(jù)。
我們可以根據(jù)實(shí)際需要選擇不同的方法來擬合數(shù)據(jù)。
這些僅為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python編程根據(jù)字典列表相同鍵的值進(jìn)行合并
這篇文章主要介紹了來學(xué)習(xí)Python字典列表根據(jù)相同鍵的值進(jìn)行合并的操作方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10
PyQt5實(shí)現(xiàn)暗黑風(fēng)格的計(jì)時(shí)器
這篇文章主要為大家詳細(xì)介紹了PyQt5實(shí)現(xiàn)暗黑風(fēng)格的計(jì)時(shí)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
Python如何實(shí)現(xiàn)大型數(shù)組運(yùn)算(使用NumPy)
這篇文章主要介紹了Python如何實(shí)現(xiàn)大型數(shù)組運(yùn)算,文中講解非常細(xì)致,幫助大家更好的了解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07
python3+PyQt5圖形項(xiàng)的自定義和交互 python3實(shí)現(xiàn)page Designer應(yīng)用程序
這篇文章主要為大家詳細(xì)介紹了python3+PyQt5圖形項(xiàng)的自定義和交互,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
python批量檢查兩個(gè)對應(yīng)的txt文件的行數(shù)是否一致的實(shí)例代碼
這篇文章主要介紹了python批量檢查兩個(gè)對應(yīng)的txt文件的行數(shù)是否一致,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
C站最全Python標(biāo)準(zhǔn)庫總結(jié),你想要的都在這里
這篇文章主要介紹了C站最全的Python標(biāo)準(zhǔn)庫,總共包含10個(gè)類型,希望能對大家有幫助,看完不虧系列2021-07-07

