我对编码比较陌生,最近我的研究教授要求我创建一个对数回归脚本,使函数适合实验数据。输入数据总是很小的值(对于x,y,<;10),并且每个实验包含的数据点不超过5个。在
我已经设法用scipy的curve_fit函数编写了一个脚本,但是我收到的结果看起来不正确?有人能在这个简单的脚本中指出我的错误吗?在
我对曲线拟合函数的使用进行了自己的研究,但似乎每个人的情况都是非常具体的,我发现的任何解决方案由于某种原因都不适用于我的。。。在
这是我的代码与一点样本数据import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
from scipy import log as log
def func(x, a, b, c):
return a * log(b * x) + c
x = np.array([0, 1.1029, 1.6148])
y = np.array([-8.5067, -6.8924, -6.713])
popt, pcov = curve_fit (func, x, y)
plt.figure()
plt.plot(x, y, 'k.', label = 'Raw Data')
plt.plot(x, func(x, *popt), 'k-', label = 'Fitted Curve')
plt.xlabel('ln(x)')
plt.ylabel('y')
plt.legend()
plt.show()
这是我得到的图形输出
图形输出
另请注意,在执行第12行(具有曲线拟合功能的直线)后,将出现以下错误:
^{pr2}$
这个错误是什么意思?在
另外,对于一个额外的问题,有人知道将其修改为多参数回归的最佳方法是什么吗?我知道如果你增加更多的变量,你可以相应地调整6,7行的函数?在
感谢提供专业知识的人,非常感谢!在