首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我使用scipy.optimize时,如何处理“残数在初始点不是有限的”?

当我使用scipy.optimize时,如何处理“残数在初始点不是有限的”?
EN

Stack Overflow用户
提问于 2019-12-27 14:18:52
回答 1查看 436关注 0票数 1

我是python的新手,我想使用scipy.optimize执行非线性回归。

我遵循了scipy文档的介绍,这是我代码的一部分。

我已经将S_ADV、波动率和POV组织为几个numpy数组,它们是我回归中的观察值。对于MI,我想通过这个回归得到参数x,x1,x2,x3。

代码语言:javascript
运行
复制
def model(x,S_ADV,volatility,POV):
    return x[0] * x[1] * S_ADV ** x[2] * volatility ** x[3] * POV + (1-x[0]) * x[1] * S_ADV ** x[2]  * volatility ** x[3]


def fun(x,S_ADV,volatility,POV,MI):
    return model(x,S_ADV,volatility,POV) - MI

def jac(x,S_ADV,volatility,POV,MI):
    JAC = np.empty((S_ADV.size, x.size))
    JAC[:,0] = x[1] * S_ADV ** x[2] * volatility ** x[3] * POV - x[1] * S_ADV ** x[2]  * volatility ** x[3]
    JAC[:,1] = x[0]* S_ADV ** x[2] * volatility ** x[3] * POV + (1-x[0]) * S_ADV ** x[2]  * volatility ** x[3]
    JAC[:,2] = x[0] * x[1] * S_ADV ** x[2] * math.log(math.e,S_ADV) * volatility ** x[3] * POV + (1-x[0]) * x[1] * S_ADV ** x[2] * math.log(math.e,S_ADV) * volatility ** x[3]
    JAC[:,3] = x[0] * x[1] * S_ADV ** x[2] * volatility ** x[3]  * math.log(math.e,volatility) * POV + (1-x[0]) * x[1] * S_ADV ** x[2]  * volatility ** x[3] * math.log(math.e,volatility)
    return jac
x0 = np.array([7.00,0.7,0.2,1.00,1.00])


res = least_squares(fun, x0, jac = jac, args = (S_ADV,volatility,POV,MI))

我的代码中是否有任何错误,以及如何处理这个问题?

代码语言:javascript
运行
复制
ValueError: Residuals are not finite in the initial point.
EN

回答 1

Stack Overflow用户

发布于 2019-12-27 17:30:30

打印x0的fun的值,应该是浮点数。

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

https://stackoverflow.com/questions/59496777

复制
相关文章

相似问题

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