Python 使用jupyter笔记本下scipy.optimize中的fmin进行数据拟合
我正在努力 使用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
:
# 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))