Я работаю над учебным пособием по машинному обучению и застрял в разделе логистической регрессии, который требует вычисления значений активации и предоставления их функции стоимости.
Я застрял, потому что код больше не возвращает ошибку и, насколько я могу судить, код, который я написал, почти идентичен кодам из аналогичных постов (см. Ниже), но вывод неправильный.
Вот мой код:
#define a sigmoid function
def sigmoid(z):
a = 1/(1+np.exp(-z))
return a
#define an empty array w, and integer b
def init_zeros(dim):
w = np.zeros((dim,1))
b = 0
return w, b
#define a function to perform forward and backwards passes of logistic regression
def forward_backward(X, Y, w, b):
m = X.shape[1]
A=sigmoid(np.dot(w.T,X)+b)
cost =-1/m * np.sum(Y * np.log(A) + (1-Y) * (np.log(1-A)))
dZ = A-Y
dw = 1/m*np.dot(X,dZ.T)
db = (1/m)*np.sum(dZ)
cost = np.squeeze(cost)
grads = {'dw': dw, 'db': db}
return grads, cost
#here is the data to be used for testing the results of the forward_backward function
X = np.array([[1,2,-3,0],[0.5,6,-5,0]])
Y = np.array([[1,0,1,0]])
w = np.array([[1],[2]])
b = 0
grads, cost = forward_backward(X, Y, w, b)
print('dw = {}'.format(grads['dw']))
print('db = {}'.format(grads['db']))
print('cost = {}'.format(cost))
Вывод должен быть таким: dw = [[1.22019716] [2.73509556]]
db = 0.09519962669353813
cost = 6.9550195708335805
Но я получаю:
dw = [[0.] [0.]]
db = 0.0
cost =27.8200782833
Извините, что задаю вопрос, действительно похожий на предыдущие, но я действительно в замешательстве.Вот ссылки на похожие посты, которые я использовал для генерации кода выше:
https://datascience.stackexchange.com/questions/22470/python-implementation-of-cost-function-in-logistic-regression-why-dot-multiplic
Функция стоимости логистической регрессии
Реализация сигмоидальной функции в python