Правильное использование scipy.optimize.fmin_bfgs
Я играю с логистической регрессией в Python. Я реализовал версию, где минимизация функции стоимости выполняется с помощью градиентного спуска, и теперь я бы хотел использовать алгоритм BFGS из scipy (scipy.optimize.fmin_bfgs).
У меня есть набор данных (функции в матрице X с одним образцом в каждой строке X и корреляционные метки в вертикальном векторе y). Я пытаюсь найти параметры Theta для минимизации:
![enter image description here]()
Мне трудно понять, как работает fmin_bfgs. Насколько я понял, мне нужно передать функцию, которая будет минимизирована, и набор начальных значений для Thetas.
Я делаю следующее:
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.
Может ли кто-нибудь пролить свет на это?
Ответы
Ответ 1
После того, как он потратил много времени на это, снова решил сила публикации... Я определял computeCost (X, y, Thetas), но поскольку Thetas является целевым параметром для оптимизации, он должен был быть первым параметром в сигнатуре, Исправлено и работает!
Ответ 2
Я не знаю весь ваш код, но вы пробовали
initial_values = numpy.zeros(len(X[0]))
? Это x0 должно быть 1d-вектором, я думаю.