ValueError:對像對於所需數組來說太深 (ValueError: object too deep for desired array)


問題描述

ValueError:對像對於所需數組來說太深 (ValueError: object too deep for desired array)

""" ___ """
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)

produces a

  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 

I can't even gasp what the problem is is it in the b which goes into the objective function? or is it in its output?

‑‑‑‑‑

參考解法

方法 1:

The problem is that fsolve and root do not accept matrixes as return value of the objective function.

For example this is a solution of above problem:

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

(by Davoud Taghawi‑NejadDavoud Taghawi‑Nejad)

參考文件

  1. ValueError: object too deep for desired array (CC BY‑SA 3.0/4.0)

#Python #Numpy #scipy






相關問題

如何從控制台中導入的文件中訪問變量的內容? (How do I access the contents of a variable from a file imported in a console?)

在 python 3.5 的輸入列表中添加美元符號、逗號和大括號 (Adding dollar signs, commas and curly brackets to input list in python 3.5)

為 KeyError 打印出奇怪的錯誤消息 (Strange error message printed out for KeyError)

django 1.9 中的 from django.views.generic.simple import direct_to_template 相當於什麼 (What is the equivalent of from django.views.generic.simple import direct_to_template in django 1.9)

查詢嵌入列表中的數組 (Querying for array in embedded list)

如何在 Python 中搜索子字符串是否在二進製文件中? (How to search if a substring is into a binary file in Python?)

為什麼要避免 while 循環? (Why avoid while loops?)

使用python的json模塊解析json請求 (Parse a json request using json module of python)

為什麼使用 py2app 模塊創建 mac 文件時出現錯誤? (Why i am getting Error when creating mac file using py2app module?)

當 python 線程在網絡調用(HTTPS)中並且發生上下文切換時會發生什麼? (What happens when the python thread is in network call(HTTPS) and the context switch happens?)

如何繪製一條帶斜率和一個點的線?Python (How to plot a line with slope and one point given? Python)

Pickle 找不到我不使用的模塊? (Pickle can't find module that I am not using?)







留言討論