我对优化两个参数值的过程感到相当困惑,我已经给出了它们的估计值。
import scipy.optimize as optimize
# Define the function you want to minimize
def my_function(x, y):
return x**2 + y**2
# Use the fmin function to find the minimum of the function
result = optimize.fmin(my_function, x0=[0, 0])
# The result will be an array containing the values of the parameters that minimize the function
print(result)
我理解这个例子,但对于我的情况,我想最小化一个卡平方函数Chi_square = np。和((y - f1)/年)**2)其中f1是一个函数,依赖于两个参数,具有初始猜测值,需要优化。
计算模型的函数f的输入值为:两个参数C1、C2和时间,时间以数据值数组的形式输入。
C1 = 0.002C2 = 0.003f (C1, C2, t)f =包含C1 C2常数和时间输入t的函数返回f
time_input = data[:,0]
f1= f(C1,C2, time_input)获取模型值,以便与相同时间数据点[:,0]的卡方中的y进行比较。
我想使用optimize。fmin本质上找到C1和C2的值最小的平方,但我不确定如何做到这一点,因为在优化的例子中,它是一个函数的参数x和y,而我的函数是一个平方函数,其中"模型"是需要其输入参数C1,C2的函数进行优化。
表示位置参数的数量不正确,当我将0.002和0.003的猜测值放入X0时。
我不确定这个例子是从哪里来的(可能是旧版本)。然而,当前使用API的方法是在一个n维数组中为n维问题定义变量。您的函数应该具有签名
def model(C: np.ndarray, *args):
# Do something
请注意,args是为您的额外参数。例子:
from scipy import optimize
optimize.fmin(fun=model, x0=[0, 0], agrs=([0, 1, 2,]))
我不确定你是否在使用fmin,因为你确实想使用这个特定的算法,但总的来说,我建议优化。尽量减少,除非你有特别的理由不使用它。