我需要使用scipy的curve_fit
函数进行简单的曲线拟合。但是,我的数据是矩阵形式。我可以轻松地在numpy中做到这一点,但我想看到适合scipy的善良。
问题:
AX = B - >给定A,找到X表示最小平方误差。
from scipy.optimize import curve_fit
def getXval():
a = 4; b = 3, c = 1;
f0 = a*pow(b, 2)*c
f1 = a*b/c
return [f0, f1]
def fit(x, a0, a1):
res = a0*x[0] + a1*x[1]
return [res]
x = getXval()
y = [0.15]
popt, pcov = curve_fit(fit, x, y)
然而,这是行不通的。有人可以指出这里发生了什么吗?
答案 0 :(得分:2)
您的代码存在一些问题
1)使用numpy数组而不是Python列表
2)你缺少y的值。
这对我有用:
from scipy.optimize import curve_fit
import numpy as np
def getXval():
a = 4; b = 3; c = 1;
f0 = a*pow(b, 2)*c
f1 = a*b/c
return np.array([f0, f1])
def fit(x, a0, a1):
res = a0*x[0] + a1*x[1]
return np.array([res])
x = getXval()
y = np.array([0.15, 0.34])
popt, pcov = curve_fit(fit, x, y)
print popt, pcov