korrekte Verwendung von scipy.optimieren.fmin_bfgs
Ich bin Herumspielen mit der logistischen regression in Python. Ich habe implementiert eine version, wo die Minimierung der Kostenfunktion erfolgt über Gradienten Abstieg, und jetzt würde ich gerne mit dem BFGS-Algorithmus von scipy (scipy.optimieren.fmin_bfgs).
Habe ich eine Reihe von Daten (Funktionen in der matrix X, mit einer Probe, bei der jede Zeile von X, und correpsonding Etiketten in der senkrechten Vektor y). Ich bin auf der Suche Parameter Theta zu minimieren:
Ich habe Schwierigkeiten zu verstehen, wie fmin_bfgs genau funktioniert. So weit wie ich es bekommen habe, habe ich zu übergeben, eine Funktion minimiert werden und ein setzen der Initialen Werte für Thetas.
Ich Folgendes tun:
initial_values = numpy.zeros((len(X[0]), 1))
myargs = (X, y)
theta = scipy.optimize.fmin_bfgs(computeCost, x0=initial_values, args=myargs)
wo computeCost berechnet J(Thetas) wie oben dargestellt. Aber ich bekomme einige index-bezogene Fehler, so dass ich denke, ich bin nicht gemacht, was fmin_bfgs erwartet.
Kann jemand etwas Licht in diese Schuppen?
- Ah, rubber-duck-debugging =)
- So wahr!! 😀
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach verschwenden Stunden auf ihn, löste sich wieder von der macht des Postings...ich war die Definition computeCost(X, y, Thetas), aber als Thetas ist die Ziel-parameter für die Optimierung, sollte es gewesen sein der erste parameter in der Signatur. Fix und funktioniert!
ich weiß nicht, Ihre ganze code, aber Sie haben versucht,
? Dieses x0 sollte einen 1d-Vektor, denke ich.