在python中我有一个有很多参数的函数.我想将此函数适用于数据集,但只使用一个参数,我想要自己提供的其余参数.这是一个例子:
def func(x,a,b):
return a*x*x + b
for b in xrange(10):
popt,pcov = curve_fit(func,x1,x2)
Run Code Online (Sandbox Code Playgroud)
在这里我希望仅适用于拟合a,参数b采用循环变量的值.如何才能做到这一点?
lambda函数是否有可能具有可变数量的参数?例如,我想编写一个元类,它为其他类的每个方法创建一个方法,这个新创建的方法返回原始方法的相反值,并且具有相同数量的参数.我想用lambda函数做到这一点.如何传递参数?可能吗?
class Negate(type):
def __new__(mcs, name, bases, _dict):
extended_dict = _dict.copy()
for (k, v) in _dict.items():
if hasattr(v, '__call__'):
extended_dict["not_" + k] = lambda s, *args, **kw: not v(s, *args, **kw)
return type.__new__(mcs, name, bases, extended_dict)
class P(metaclass=Negate):
def __init__(self, a):
self.a = a
def yes(self):
return True
def maybe(self, you_can_chose):
return you_can_chose
Run Code Online (Sandbox Code Playgroud)
但结果完全错了:
>>>p = P(0)
>>>p.yes()
True
>>>p.not_yes() # should be False
Traceback (most recent call last):
File "<pyshell#150>", line 1, in <module>
p.not_yes()
File "C:\Users\Desktop\p.py", line 51, …Run Code Online (Sandbox Code Playgroud) 第一个问题:我正在尝试使用以下形式的函数拟合实验数据:
f(x) = m_o*(1-exp(-t_o*x)) + ... + m_j*(1-exp(-t_j*x))
Run Code Online (Sandbox Code Playgroud)
目前,我找不到一种方法,无法确定数量不确定的参数m_j,t_j,我不得不这样做:
def fitting_function(x, m_1, t_1, m_2, t_2):
return m_1*(1.-numpy.exp(-t_1*x)) + m_2*(1.-numpy.exp(-t_2*x))
parameters, covariance = curve_fit(fitting_function, xExp, yExp, maxfev = 100000)
Run Code Online (Sandbox Code Playgroud)
(xExp和yExp是我的实验点)
有没有办法像这样编写我的拟合函数:
def fitting_function(x, li):
res = 0.
for el in range(len(li) / 2):
res += li[2*idx]*(1-numpy.exp(-li[2*idx+1]*x))
return res
Run Code Online (Sandbox Code Playgroud)
li是拟合参数的列表,然后执行curve_fitting吗?我不知道如何告诉curve_fitting多少个拟合参数。当我尝试使用这种形式的fitting_function形式时,出现诸如“ ValueError:无法确定拟合参数的数量”之类的错误。
第二个问题:有什么方法可以使我的拟合参数为正?
任何帮助表示赞赏:)
我是 Python 新手(以及一般编程),想使用 进行多项式拟合curve_fit,其中多项式的顺序(或拟合参数的数量)是可变的。
我制作了这段代码,它适用于固定数量的 3 个参数 a,b,c
# fit function
def fit_func(x, a,b,c):
p = np.polyval([a,b,c], x)
return p
# do the fitting
popt, pcov = curve_fit(fit_func, x_data, y_data)
Run Code Online (Sandbox Code Playgroud)
但是现在我想让我的 fit 函数只依赖于一些N参数而不是a,b,c,....
我猜这不是一件很难的事情,但由于我的知识有限,我无法让它发挥作用。
我已经看过这个问题,但我无法将它应用于我的问题。