日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
python分段函數(shù)擬合

分段函數(shù)擬合是一種在數(shù)據(jù)建模中常用的技術(shù),它通過將一個復(fù)雜的函數(shù)分解為若干個簡單的函數(shù)來近似地描述數(shù)據(jù),在Python中,我們可以使用SciPy庫中的curve_fit函數(shù)進行分段函數(shù)擬合,下面將詳細介紹如何使用Python進行分段函數(shù)擬合。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、成都小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了崖州免費建站歡迎大家使用!

我們需要安裝SciPy庫,在命令行中輸入以下命令進行安裝:

pip install scipy

接下來,我們定義一個分段函數(shù),假設(shè)我們要擬合的分段函數(shù)如下:

def piecewise_linear(x, x0, y0, k1, k2):
    return np.piecewise(x, [x < x0], [lambda x:k1*x + y0k1*x0, lambda x:k2*x + y0k2*x0])

x0y0是分段點的橫縱坐標,k1k2分別是分段點前后的斜率。

我們需要生成一些模擬數(shù)據(jù),這里我們使用numpy庫生成一組隨機數(shù)據(jù):

import numpy as np
np.random.seed(0)
x_data = np.linspace(0, 4, 50)
y = piecewise_linear(x_data, 2, 3, 1.5, 1.5) + np.random.normal(0, 0.2, len(x_data))

接下來,我們需要編寫一個擬合函數(shù),用于計算分段函數(shù)與實際數(shù)據(jù)的殘差平方和:

def residuals(params, x, y):
    a, b, c, d = params
    y_pred = piecewise_linear(x, a, b, c, d)
    return y y_pred

現(xiàn)在,我們可以使用SciPy庫中的curve_fit函數(shù)進行分段函數(shù)擬合:

from scipy.optimize import curve_fit
p0 = [2, 3, 1.5, 1.5]  # 初始參數(shù)猜測
popt, pcov = curve_fit(residuals, x_data, y, p0=p0)

curve_fit函數(shù)會返回兩個值:popt是擬合得到的最優(yōu)參數(shù),pcov是協(xié)方差矩陣,我們可以使用popt計算擬合后的分段函數(shù):

y_fit = piecewise_linear(x_data, *popt)

我們可以將原始數(shù)據(jù)和擬合結(jié)果可視化:

import matplotlib.pyplot as plt
plt.plot(x_data, y, 'b', label='data')
plt.plot(x_data, y_fit, 'r', label='fit: a=%5.3f, b=%5.3f, c=%5.3f, d=%5.3f' % tuple(popt))
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()

以上就是使用Python進行分段函數(shù)擬合的詳細教程,通過這個過程,你可以學(xué)會如何定義分段函數(shù)、生成模擬數(shù)據(jù)、編寫擬合函數(shù)以及使用SciPy庫進行擬合,希望對你有所幫助!


當前題目:python分段函數(shù)擬合
鏈接URL:http://www.5511xx.com/article/coididi.html