2016-11-13 10 views
1

私はscipyを最小限に抑えて、ValueErrorエラーに遭遇しているだけで、わからないようです。python scipy minimize ValueError

私は2つの入力を取る以下に定義する目的関数fを持っています。 2つの入力を乱数で定義して関数を呼び出すと、うまく評価されるようです。

In [389]: minimize(f, x0, args=(sigma)) 
ValueError: Wrong number of items passed 1, placement implies 7 

私が把握することはできませんかX0やシグマの形状/サイズについて怒っている最小化:私は最小限に使用しようとすると

import numpy as np 
import pandas as pd 
from scipy.optimize import minimize 

sigma = pd.DataFrame(np.random.randn(7, 7), columns=list('ABCDEFG')) 
x0 = np.random.randn(7) 

def f(x, sigma): 
    result = 0.0 
    sigmaX = sigma.dot(x) 

    for i in range(len(x)): 
     for j in range(len(x)): 
      result = result + (x[i] * sigmaX[i] - x[j]*sigmaX[j])**2 

    return result 


In [387]: f(x0, sigma) 
Out[387]: 371.67951578983951 

はしかし、私はとValueErrorを取得します。どんな助けも非常に高く評価されるでしょう! (シグマ)のargs =を試してみてください

を閉じたとして、それがマークすることができるので、私のコメントからコピーエリック

+0

'args =(sigma、)'を試してください。つまり、 'args'にタプルを渡してください。 '、'がなければ、 '()'は何もしません。 – hpaulj

+0

できれば私はあなたにキスします。ありがとうございました!! –

答えて

0

。つまり、argsにタプルを付けるようにします。 theがなければ、()は何もしません。

関連する問題