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: setting an array element with a sequence.

同様の問題がいくつかあります。それらはすべて、x0が1D配列ではないことを指摘していますが、ここでは1D配列です。(またはそうでない場合は、1Dにする理由と方法を説明してください)

4

1 に答える 1

5

エラーは、目的関数がベクトル関数(ベクトルを取り、ベクトルを返す)であるために発生しますが、scipy.optimize.minimizeのドキュメントによると、スカラー関数のみを取ります(ベクトルを取り、スカラーを返します)。

于 2012-11-08T00:10:24.860 に答える