Я пытаюсь сделать простой классификатор, используя Python, и вот мой код (Это еще не все, но я уверен, что проблема в этой части.):
def grad(theta, X, y, m, lam):
return (1 / m) * (X.T.dot(h(X, theta) - y)) + (lam / m) * theta
for i in range(400):
# We shouldn't regularize the first theta so get a copy of it to change it back to normal
first_t = theta[0]
# Perform gradient descent
theta = theta - a * grad(theta, X_train, Y_train, m_train, lam)
# Change the value of the first theta to what it's supposed to be
theta[0] = first_t - (a / m_train) * sum(X_train[:, 0] * (h(X_train, theta) - Y_train))
Но даже собучающий случай, простой как X = [[1,1], [1,2], [1,3], [1,4]] Y = [0,1,0,1], который говорит, является ли числодаже или нет (1 для да и 0 для нет), он все еще не сходится после 400 итераций. Я думал, что я бы изменил значение альфа, лямбда или число итераций, но ни одна не работала, но в случае, если вам интересно,a = 0.001
и lam = 0.0001
!Заранее спасибо за любую помощь!