Python - 简单的Scipy'curve_fit'非线性回归,具有基本的日志功能

时间:2017-08-28 01:52:00

标签: python numpy scipy non-linear-regression

我对编码比较陌生,最近我的研究教授要求我创建一个日志回归脚本,以便将功能与实验数据相匹配。输入数据总是较小的值(对于x,y而言<10)并且每个实验包含不超过5个数据点。

我已经设法使用scipy的curve_fit函数编写脚本,但我收到的结果看起来不正确?有人能够在这个简单的脚本中指出我的错误吗?

我已经对curve_fit函数的使用进行了自己的研究,但似乎每个人的情况都是非常具体的,我找到的任何解决方案都因为某些原因而无法与我合作...

这是我的代码,带有一小部分样本数据;

2

这是我得到的图表输出;

图形输出

还要注意执行第12行(带有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()

这个错误是什么意思?

同样对于奖金问题,是否有人知道可能将此修改为多参数回归的最佳方法是什么?我知道如果您添加更多变量,您可以相应调整第6,7行中的功能吗?

感谢任何提供他们专业知识的人,非常感谢!

0 个答案:

没有答案