2012-04-21 64 views
10

我在Python中使用logistic迴歸。我已經實現了一個版本,其中成本函數的最小化是通過梯度下降完成的,現在我想使用scipy的BFGS算法(scipy.optimize.fmin_bfgs)。scipy.optimize.fmin_bfgs的正確用法

我有一組數據(矩陣X中的特徵,每行X中有一個樣本,垂直向量y中有相關標籤)。我試圖找到參數西塔最小化:

enter image description here

我聽不太懂fmin_bfgs工作究竟如何。就我所知,我必須通過一個函數來最小化Theta和一組初始值。

我執行以下操作:

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

其中computeCost計算Ĵ(θ驅動)如上所示。但是我得到了一些索引相關的錯誤,所以我認爲我沒有提供fmin_bfgs期望的東西。

任何人都可以對此有所瞭解嗎?

+4

啊,[橡皮鴨調試](http://en.wikipedia.org/wiki/Rubber_duck_debugging)=) – katrielalex 2012-04-21 11:04:25

+0

@katrielalex所以真的! :D – Cristina 2012-04-21 11:16:57

回答

4

在浪費了幾個小時之後,再次通過發佈功能解決......我定義了computeCost(X,y,Thetas),但是作爲Thetas是優化的目標參數,它應該是第一個參數簽名。修復和工作!

0

我不知道你的整個代碼,但你有沒有試過

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

?我認爲這個x0應該是一個1d向量。

+0

這是一維矢量,因爲numpy.zeros()中形狀的第二個參數是1.感謝您花時間提示它,不過! – Cristina 2012-06-08 06:46:07