gpt4 book ai didi

python - 如何拟合数据集以便它们共享一些(但不是全部)参数值

转载 作者:太空宇宙 更新时间:2023-11-03 17:39:00 27 4
gpt4 key购买 nike

假设我想用指数函数拟合两个数组x_data_oney_data_one。为此,我可以使用以下代码(其中 x_data_oney_data_one 被赋予虚拟定义):

import numpy as np
from scipy.optimize import curve_fit

def power_law(x, a, b, c):
return a * (x + c) ** b

x_data_one = np.random.rand(10)
y_data_one = np.random.rand(10)

(a_one, b_one, c_one), _ = curve_fit(power_law, x_data_one, y_data_one)

现在假设我想拟合第二个数据集:

x_data_two = np.random.rand(10)
y_data_two = np.random.rand(10)

(a_two, b_two, c_two), _ = curve_fit(power_law, x_data_two, y_data_two)

我如何执行这两个拟合,以便它们被限制为具有 a_one == a_twob_one == b_two,但不一定 c_one == c_two?我不想将 a_oneb_one 限制为特定值;我想找到最适合两个数据集的值。

最佳答案

您可以简单地覆盖第二个数据集的函数:

def power_law2(x, c):
return a_one * (x + c) ** b_one

x_data_two = np.random.rand(10)
y_data_two = np.random.rand(10)

c_two = curve_fit(power_law2, x_data_two, y_data_two)[0][0]

或者您可以使用它(它为所有数据找到最佳 a,b,为 data_one 找到最佳 c1,为 data_two 找到最佳 c2):

def power_law(x, a, b, c1, c2):
l = len(x_data_one)
return a * np.hstack([x[:l] + c1, x[l:] + c2]) ** b

x_data_one_two = np.hstack([x_data_one,x_data_two])
y_data_one_two = np.hstack([y_data_one,y_data_two])

(a_one, b_one, c_one, c_two), _ = curve_fit(power_law, x_data_one_two, y_data_one_two)

在我看来,第二个代码更好,更Pythonic:)

关于python - 如何拟合数据集以便它们共享一些(但不是全部)参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30835727/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com