11

Pythonでロジスティック回帰を試しています。最急降下法を介してコスト関数の最小化が行われるバージョンを実装しました。次に、scipy( scipy.optimize.fmin_bfgs )のBFGSアルゴリズムを使用したいと思います。

データのセットがあります(行列Xの特徴、Xのすべての行に1つのサンプル、垂直ベクトルyの対応するラベル)。最小化するパラメータシータを見つけようとしています:

ここに画像の説明を入力してください

fmin_bfgsが正確にどのように機能するかを理解するのに苦労しています。私がそれを得る限り、私は最小化される関数とシータの初期値のセットを渡さなければなりません。

私は次のことをします:

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

ここで、computeCostは上記のようにJ(Thetas)を計算します。しかし、インデックス関連のエラーが発生するため、fmin_bfgsが期待するものを提供していないと思います。

誰かがこれに光を当てることができますか?

4

2 に答える 2

5

時間を無駄にした後、投稿の力で再び解決しました...私はcomputeCost(X、y、Thetas)を定義していましたが、Thetasは最適化のターゲットパラメーターであるため、署名の最初のパラメーターである必要があります。修正して動作します!

于 2012-06-13T10:26:30.453 に答える
0

私はあなたのコード全体を知りませんが、あなたは試しましたか

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

?このx0は1次元のベクトルでなければならないと思います。

于 2012-06-06T09:58:29.230 に答える