相关疑难解决方法(0)

在python中只使用具有许多参数的函数的一个参数

在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采用循环变量的值.如何才能做到这一点?

python curve-fitting scipy

32
推荐指数
2
解决办法
2万
查看次数

lambda中的varargs在Python中起作用

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)

python lambda variadic-functions

23
推荐指数
2
解决办法
2万
查看次数

在scipy函数curve_fit中使用不确定数量的参数

第一个问题:我正在尝试使用以下形式的函数拟合实验数据:

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-fitting scipy

5
推荐指数
1
解决办法
741
查看次数

使用可变长度多项式拟合曲线

我是 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,....

我猜这不是一件很难的事情,但由于我的知识有限,我无法让它发挥作用。

我已经看过这个问题,但我无法将它应用于我的问题。

curve-fitting scipy python-3.x

3
推荐指数
1
解决办法
1176
查看次数