#python #logistic-regression
#питон #логистическая регрессия
Вопрос:
def sigmoid(z): return 1/(1 np.exp(-z)) def CostFunction(params, X, y, Lam): m=len(y) h = sigmoid(X @ params) error = (-y * np.log(h)) - ((1-y)*np.log(1-h)) cost = 1/m * sum(error) regCost= cost Lam/(2*m) * sum(params[1:]**2) Q = X.transpose().reshape(9,len(X)) #error 방지 # compute gradient j_0 = 1/m * (Q @ (h - y))[0] j_1 = 1/m * (Q @ (h - y))[1:] (Lam/m)* params[1:] grad = np.vstack((j_0[:, np.newaxis], j_1)) return regCost[0], grad def Gradient_Descent(X, y, params, alpha, n_iters, Lam): m=len(y) J_history =[] for i in range(n_iters): cost, grad = CostFunction(params, X, y, Lam) params = params - (alpha * grad) J_history.append(cost) return J_history, params
это мой код для функции затрат логистической регрессии
[[ 1. -0.25848318 -0.08852389 ... 0.24936456 0.01638514 -0.04852235]
это одна строка нормализованного train_data_X, я думаю, что с данными нет проблем.( Я успешно обучил модель линейной регрессии с помощью этих данных), но у меня возникла ошибка «деление на ноль, обнаруженная в журнале после удаления cwd из sys.path».
params = np.array([1,2,-2,-3,-4,1,2,0,-1]).reshape(9,1)
это мой первоначальный параметр
(J_history, params) = Gradient_Descent(train_data_X, train_data_y, params, 0.01, 500, 3)
это мой основной код
стоимость расходится до inf после запуска этого кода я не могу понять причину, по которой градиент не работает
Комментарии:
1. Я не уверен, как кто-то может помочь без
train_data_X
и.train_data_y