我试图将一个自定义方程拟合到一个具有1个因变量(y1 - 1D numpy float数组,具有45个条目)和两个自变量(x1- 2D numpy float数组,具有45个条目)的数据集。我试图得到参数的优化值。下面的代码有什么问题?这是我使用的代码:
import numpy as np
from scipy.optimize import curve_fit
# Define your custom exponential equation
def custom_exponential_equation(X, param1, param2, param3):
# X is a 2D array with shape (N, 2), where N is the number of data points
# X[:, 0] corresponds to the first independent variable
# X[:, 1] corresponds to the second independent variable
y = param1 * np.exp(param2 * (X[:, 0]* (X[:, 1]**param3))
return y
initial_params = [1.0, 1.0, 1.0]
# Perform the curve fitting
params, _ = curve_fit(custom_exponential_equation, x1, y1, p0=initial_params)
print(params)
错误消息为:
Result from function call is not a proper array of floats.
2条答案
按热度按时间nvbavucw1#
看来你在等式行中漏掉了一个右括号。
我还添加了x1和y1的示例数据,因为您没有提供它们。在运行代码之前,应该用实际的数据数组替换它们。
jjjwad0x2#
始终添加边界。因为你没有提供数据,所以不可能说我所证明的界限是否合适。
使用这种形式的函数,将二维数组解包为单独的变量,而不是索引。并选择更好的变量名。