Попытка реализовать логистическую регрессию в Python:
Ниже приведена функция стоимости:
def costFunction(theta_array):
m = len(X1)
theta_matrix = np.transpose(np.mat(theta_array))
H_x = 1 / (1 + np.exp(-X_matrix * theta_matrix))
J_theta = ((sum(np.multiply((-Y_matrix), np.log(H_x)) - np.multiply((1 - Y_matrix), np.log(1 - H_x)))) / m )[0, 0]
return J_theta
Ниже приведена функция градиента:
def gradientDesc(theta_tuple):
theta_matrix = np.transpose(np.mat(theta_tuple))
H_x = 1 / (1 + np.exp(-X_matrix * theta_matrix))
G_theta0 = (sum(np.multiply(H_x - Y_matrix, X_matrix[:, 0])) / m)[0, 0]
G_theta1 = (sum(np.multiply(H_x - Y_matrix, X_matrix[:, 1])) / m)[0, 0]
G_theta2 = (sum(np.multiply(H_x - Y_matrix, X_matrix[:, 2])) / m)[0, 0]
return np.array((G_theta0, G_theta1, G_theta2))
Затем я запускаюфункция optimize.fmin_bfgs, как показано ниже:
initial_theta = np.zeros((3, 1))
theta_tuple = (0, 0, 0)
theta_optimize = op.fmin_bfgs(costFunction, initial_theta, gradientDesc, args = (theta_tuple))
Тогда я получил ошибку ниже:
**TypeError: gradientDesc() takes exactly 1 argument (4 given)**
Может кто-нибудь сказать мне, как исправить?:) Спасибо!