首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python最小二乘法

Python最小二乘法
EN

Stack Overflow用户
提问于 2012-08-29 06:18:54
回答 1查看 772关注 0票数 0

我的代码有一点小问题:

代码语言:javascript
复制
def pval(x, p, i):
return sum(p[0]*(cos(i*x)) for i in range(1, p[1] + 1))

if __name__ == '__main__':
   main()

x, y = loadtxt("Data.txt" , unpack=True)
errfunc = lambda p, x, y: pval(p, x, i) - y # Distance to the target function
p0 = [49, 100] # Initial guess for the parameters
p1, success = optimize.leastsq(errfunc, p0[:], args=(x, y))

我出现了一个提示,说‘优化’的名字没有定义,但是我看不出这个错误来自哪里?

EN

回答 1

Stack Overflow用户

发布于 2012-08-29 06:22:51

问题出在最后一行:p1, success = optimize.leastsq(...) (错误消息回溯指出了它)。

Python不知道您所说的optimize是什么意思。你必须告诉它:from scipy import optimize接近你程序的顶端。

您还可以调用一个不存在的main()函数(至少在您的代码片段中)。通常,你会像这样组织你的代码:

代码语言:javascript
复制
def pval(x, p, i):
    return sum(p[0]*(cos(i*x)) for i in range(1, p[1] + 1))

def main():
    x, y = loadtxt("Data.txt" , unpack=True)
    errfunc = lambda p, x, y: pval(p, x, i) - y # Distance to the target function
    p0 = [49, 100] # Initial guess for the parameters
    p1, success = optimize.leastsq(errfunc, p0[:], args=(x, y))
    # do whatever with p1

if __name__ == '__main__':
   main()

或者干脆从你的代码中完全去掉if __name__ == '__main__'部分。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12168325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档