python - 函数定义和函数调用在 python 3 中产生语法错误,即使在复制和粘贴时也是如此
问题描述
我正在尝试使用梯度下降来解决与 python 中的三阶多项式拼接的幂律的最小二乘拟合问题。我已经计算了关于 Matlab 中参数的梯度。我手工计算的边界条件。我在卡方最小化算法中遇到了语法错误,该算法必须考虑边界条件。我正在为一个机器学习课程做这件事,我正在完成一个有点自我指导和自我提出的长期项目,但由于这个我不知道如何克服的语法错误,我被困住了。我不会因此而获得班级学分。这只是放在我的简历上的东西。
def polypowerderiv(x,a1,b1,c1,a2,b2,c2,d2,boundaryx,ydat):
#need to minimize square of ydat-polypower
#from Mathematica, to be careful
gradd2=2*(d2+c2*x+b2*x**2+a2*x**3-ydat)
gradc2=gradd2*x
gradb2=gradc2*x
grada2=gradb2*x
#again from Mathematica, to be careful
gradc1=2(c+a1*x**b1-ydat)
grada1=gradc1*x**b1
gradb1=grada1*a1*log(x)
return [np.sum(grada1),np.sum(gradb1),\
np.sum(gradc1),np.sum(grada2),np.sum(gradb2),\
np.sum(gradc2),np.sum(gradd2)]
def manualleastabsolutedifference(xdat, ydat, params,seed, maxiter, learningrate):
chisq=0 #chisq is the L2 error of the fit relative to the ydata
dof=len(xdat)-len(params)
xparams=seed
for step in np.arange(maxiter):
a1,b1,c1,a2,b2,c2,d2=params
chisq=polypowerlaw(xdat,params)
for i in np.arange(len(xdat)):
grad=np.zeros(len(seed))
for i in np.arange(seed):
polypowerlawboundarysolver=\
polypowerboundaryconstraint(xdat,a1,b1,c1,a2,b2,c2)
boundaryx=minimize(polypowerlawboundarysolver,x0=1000)
#hard coded to be half of len(xdat)
chisq+=abs(ydat-\
polypower(xdat,a1,b1,c1,a2,b2,c2,d2,boundaryx)
grad=\
polypowerderiv(xdat,a1,b1,c1,\
a2,b2,c2,d2,boundaryx,ydat)
params+=learningrate*grad
return params
我得到的错误是:
文件“”,第 14 行
grad=polypowerderiv(xdat,a1,b1,c1,a2,b2,c2,d2,boundaryx,ydat)
^ SyntaxError: invalid syntax
另外,我在格式化时遇到了一些小麻烦。请帮忙。这是我在 Stack Overflow 上的前几篇帖子之一,经过多年的上下投票。感谢您的广泛帮助,社区。
解决方案
根据 Alan-Fey,您忘记了一个右括号:
chisq+=abs(ydat-\
polypower(xdat,a1,b1,c1,a2,b2,c2,d2,boundaryx)
应该
chisq+=abs(ydat-\
polypower(xdat,a1,b1,c1,a2,b2,c2,d2,boundaryx))
推荐阅读
- c# - 公共交通 - 如何使用 Azure 服务总线安排消息
- docker - 在 Windows 10 上运行 docker-Desktop 系统重启后无法重启容器
- python - 如何将输入连接到函数
- opengl - 在 OpenGL 规范中哪里说 POINT 光栅化被裁剪到视口?
- android - @googlemail.com 帐户无法使用 GoogleSignIn 进行身份验证,但 @gmail.com 帐户可以
- android - Android数据绑定不遵守kotlin的liveData builder
- java - 扩展 lombok 映射
- jquery - 当我们每次都关注输入字段时,如何在移动设备上触发数字键盘?
- ios - 我收到了服务器的回复,我想在进一步使用之前对其进行解码
- windows - 如何使用 PowerShell 将具有多个扩展名的文件集移动到另一个目录?