gpt4 book ai didi

python - 值错误 : object too deep for desired array

转载 作者:太空狗 更新时间:2023-10-30 01:55:15 27 4
gpt4 key购买 nike

""" ___ """
from scipy.optimize import root
import numpy as np


LENGTH = 3


def process(x):
return x[0, 0] + x[0, 1] * 5


def draw(process, length):
""" """
X = np.matrix(np.random.normal(0, 10, (length, 2)))
y = np.matrix([process(x) for x in X])
y += np.random.normal(3, 1, len(y))
return y.T, X.T


def maximum_likelyhood(y, X):
def objective(b):
return (X.T * (y - X * b.T))
x0 = np.matrix([0, 0])
res = root(objective, x0=x0)
return res.x

y, X = draw(process, LENGTH)
X = X.transpose()
b = np.matrix([[0], [1]])
print maximum_likelyhood(y, X)

产生一个

  Traceback (most recent call last):
File "ml.py", line 33, in <module>
maximum_likelyhood(y, X)
File "ml.py", line 26, in maximum_likelyhood
res = root(objective, x0=x0)
File "/usr/local/lib/python2.7/dist-packages/scipy/optimize/_root.py", line 168, in root
sol = _root_hybr(fun, x0, args=args, jac=jac, **options)
File "/usr/local/lib/python2.7/dist-packages/scipy/optimize/minpack.py", line 193, in _root_hybr
ml, mu, epsfcn, factor, diag)

ValueError: object too deep for desired array

我什至无法理解问题出在目标中的 b 中功能?还是在它的输出中?

最佳答案

问题是 fsolve 和 root 不接受矩阵作为目标函数的返回值。

例如这是上述问题的解决方案:

def maximum_likelyhood(y, X):
def objective(b):
b = np.matrix(b).T
return np.transpose(np.array((X.T * (y - X * b))))[0]
x0 = (1, 1)
res = root(objective, x0=x0)
return res.x

关于python - 值错误 : object too deep for desired array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13293731/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com