如何解决添加对象不可迭代
所以我在使用sympy时遇到此错误,
#base packages
import sympy as sp
from sympy import log,exp,symbols,IndexedBase,Symbol
x = IndexedBase('x',real=True)
y = IndexedBase("y",real = True)
n,i = symbols('n,i',integer=True,positive=True)
beta1 = Symbol('beta1',real=True)
beta0 = Symbol('beta0',real=True)
objective = sum(y[i]*log(1/(1+exp(-beta0-beta1*x[i])))+(1-y[i])*log(1-(1/(1+exp(-beta0-beta1*x[i])))),(i,n-1))
错误所在,
'Add' object is not iterable
有什么想法,我哪里可能出问题了?
Y
解决方法
您正在使用内置的Python sum
,而不是sympy的符号Sum
:
In [4]: sum(1,(i,n-1))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-4-ae313784d13c> in <module>
----> 1 sum(1,n-1))
TypeError: 'int' object is not iterable
In [5]: Sum(1,n-1))
Out[5]:
n - 1
___
╲
╲
╱ 1
╱
‾‾‾
i = 0
如果将其更改为Sum
,则会得到:
In [6]: objective
Out[6]:
n - 1
____
╲
╲ ⎛ ⎛ 1 ⎞ ⎛ 1 ⎞ ⎞
╲ ⎜(1 - y[i])⋅log⎜1 - ──────────────────⎟ + log⎜──────────────────⎟⋅y[i]⎟
╱ ⎜ ⎜ -β₀ - β₁⋅x[i] ⎟ ⎜ -β₀ - β₁⋅x[i] ⎟ ⎟
╱ ⎝ ⎝ ℯ + 1⎠ ⎝ℯ + 1⎠ ⎠
╱
‾‾‾‾
i = 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。