Python 使用jupyter笔记本下scipy.optimize中的fmin进行数据拟合

Python 使用jupyter笔记本下scipy.optimize中的fmin进行数据拟合,python,python-2.7,scipy,regression,Python,Python 2.7,Scipy,Regression,我正在努力 使用fmin进行数据拟合 其中包含以下要使用的代码fmin: # fitting the data with fmin p0 = rand(3) # initial parameter value p = fmin(e, p0, args=(x,y)) 但是,当我尝试它时,它给了我以下错误: TypeErrorTraceback (most recent call last) <ipython-input-1-41b53befd463> in <module&g

我正在努力

使用fmin进行数据拟合

其中包含以下要使用的代码
fmin

# fitting the data with fmin
p0 = rand(3) # initial parameter value
p = fmin(e, p0, args=(x,y))
但是,当我尝试它时,它给了我以下错误:

TypeErrorTraceback (most recent call last)
<ipython-input-1-41b53befd463> in <module>()
     22 # fitting the data with fmin
     23 p0 = rand(3) # initial parameter value
---> 24 p = fmin(e, p0, args=(x,y))
     25 
     26 print 'estimater parameters: ', p

TypeError: 'args' is an invalid keyword to ufunc 'fmin'
我仍然得到与上面完全相同的错误


如何修复它?Thx

如果您提供重现问题的解决方案,将更容易帮助您。没有这些,我们只能猜测

在这种情况下,我的猜测是您实际上正在使用,而不是。添加行

from scipy.optimize import fmin
在脚本的顶部。如果你在做这样的事情

from numpy import *
(正如glowingpython上的代码所做的那样),然后删除该行,并使用

import numpy as np
并将
np.
前缀与您使用的所有numpy名称一起使用,或者仅从实际使用的numpy中显式导入这些名称,例如

from numpy import array, linspace  # whatever you actually use
from numpy.random import rand      # etc.
在脚本中使用
*
形式的
import
是一种不好的做法,这正是您遇到这个问题的原因

然而,当您在ipython或jupyter笔记本中交互工作时,pylab import*中的
之类的东西确实非常方便。要避免numpy的
fmin
隐藏
fmin
的问题,您可以执行以下操作:

from scipy import optimize
然后使用调用
fmin

p = optimize.fmin(e, p0, args=(x, y))

所以你对代码做了一些修改?展示它!这个代码副本粘贴应该工作!(我希望您没有将您的文件命名为fmin.py)“应该工作”,至少我尝试了它,而不仅仅是认为它应该工作还是不工作。当我删除行
%pylab inline
并运行该脚本时,它对我工作。你是怎么运行代码的?你在用jupyter笔记本吗?如果是这样,
%pylab inline
将导致
fmin
替换为
numpy.fmin
。事实上,当我这样做的时候,它会给我一条警告消息(红色背景),告诉我pylab导入已经破坏了这些变量:['fmin']”
。是的@WarrenWeckesser,确切地说,我使用的是jupyter笔记本,它一直以红色背景输出警告消息。我也收到了
clobbered
警告,但无法解释它的确切含义。谢谢你查清了真相。那么,这是否意味着我不能使用jupyter笔记本,至少在
%pylab内联
模式下?
p = optimize.fmin(e, p0, args=(x, y))