Я прошел курс Andrews NGG для машинного обучения и в настоящее время застрял на регрессии c. Я полностью понимаю линейную регрессию о том, как стоимость работы и рассчитывается, градиентный спуск и т. Д. c, но когда дело доходит до логистической c регрессии, мой мозг просто замерз.
Мой вопрос, когда речь идет о линейной регрессии forumla sum (h (x) - y), где y - целевое значение для данных, то есть X = рост кого-либо, а Y - тот вес для этой высоты
, когда дело доходит до регрессии логистики c, мы присваиваем Y значению 0 или 1 или истинному целевому значению? например, данные x = высота и y будет просто 0 или 1, который мы назначим для этого значения? для формулы sum (h (x) - y)?
Кажется, я не могу получить снижение стоимости, и более того, как бы я даже проверил данные, исходя из того, что, как я понимаю, сигмоидальная функция позволит мне предсказать данные, если это 1 или 0
import numpy as np
import matplotlib.pyplot as plt
np.seterr(divide='ignore')
learning_rate = 0.0001
epoch = 10
x = np.matrix([[1, 3, 1.5],
[1, 2, 1],
[1, 4, 1.5],
[1, 3, 1],
[1, 3.5, .5],
[1, 2, .5],
[1, 5.5, 1],
[1, 1, 1]]).T
y = np.matrix([1, 0, 0, 0, 1, 0, 1, 1]).T
theta = np.matrix([0, 0, 0])
m = len(x)
def sigmoid(x):
return 1 / (1 + np.exp(-np.dot(theta, x)))
for _ in range(epoch):
cost = -(1 / m)* np.sum(np.dot(y, np.log(sigmoid(x))) + np.dot((1 - y), np.log(1 - sigmoid(x))))
derivative = theta - learning_rate * np.dot((1 / m), np.dot(x, sigmoid(x) - y).T)
theta = sum(derivative)
print(cost)