2012-04-21 15 views
10

私はPythonのロジスティック回帰で遊んでいます。私は、コスト関数の最小化が勾配降下を介して行われるバージョンを実装しましたが、今はscipy(scipy.optimize.fmin_bfgs)からBFGSアルゴリズムを使用したいと思います。scipy.optimize.fmin_bfgsの正しい使い方

私は一連のデータを持っています(行列Xの特徴、Xのすべての行に1つのサンプル、垂直ベクトルyに対応するラベルが付いています)。私はシータが最小化するためのパラメータを見つけようとしています:

enter image description here

私はトラブルを正確に動作方法fmin_bfgsを理解しています。私が得る限り、最小化する関数とThetaの初期値のセットを渡さなければなりません。

Iは、以下の操作を行います。上記に示したようにcomputeCostはJ(Thetas)を算出

initial_values = numpy.zeros((len(X[0]), 1)) 
myargs = (X, y) 
theta = scipy.optimize.fmin_bfgs(computeCost, x0=initial_values, args=myargs) 

。しかし、インデックス関連のエラーが発生するので、fmin_bfgsが期待するものは提供していないと思います。

誰もがこれにいくつかの光を当てることができますか?

+4

ああ、[ラバーダックのデバッグ](http://ja.wikipedia.org/wiki/Rubber_duck_debugging)=) – katrielalex

+0

@katrielalexだからこそ! :D – Cristina

答えて

4

私はcomputeCost(X、y、Thetas)を定義していましたが、Thetasは最適化のターゲットパラメータであるため、署名。修正され、動作します!

0

私はあなたのコード全体を知らないが、あなたは

initial_values = numpy.zeros(len(X[0])) 

を試してみましたか?このx0は1dベクトルでなければなりません。

+0

numpy.zeros()の形の2番目のパラメータが1であるため、1Dベクトルです。しかし、時間をとってくれてありがとう! – Cristina