2012-11-07 58 views
1
""" ___ """ 
from scipy.optimize import minimize 
import numpy as np 


LENGTH = 100 

def process(x): 
    return x * 2 + 5 

def draw(process, length): 
    """ """ 
    y = np.random.normal(0, 10, length) 
    data = [process(y_) for y_ in y] 
    rnd = np.random.normal(3, 1, len(data)) 
    return y, rnd + data 


def maximum_likelyhood(y, X): 
    objective = lambda b: np.transpose(X) * (y - X * b) 
    x0 = np.zeros(100) 
    res = minimize(objective, x0=x0) 
    return res.x 

y, X = draw(process, LENGTH) 
print maximum_likelyhood(y, X) 

產生ValueError:使用序列設置數組元素。 SciPy的減少

ValueError: setting an array element with a sequence. 

有幾個類似的問題,他們都指出,X0是不是一維數組,但在這裏它是一維數組。 (或不是?請解釋爲什麼以及如何使它成爲1D)

回答

3

由於目標函數是一個向量函數(取入一個向量,返回一個向量),但根據scipy.optimize.minimize documentation它只需要標量函數(需要一個向量返回一個標量。)

+0

看看scipy.optimize.root函數,而不是scipy.optimize.minimize函數 – Covich

相關問題