Курс Эндрю Нга в Coursera, который является курсом машинного обучения Стэнфорда, включает в себя задания по программированию, связанные с реализацией алгоритмов, преподаваемых в классе.Цель этого задания - реализовать линейную регрессию с помощью градиентного спуска с входным набором X, y, theta, alpha (learning rate), and number of iterations
.
Я реализовал это решение в Octave, установленном в курсе языке.
function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters)
m = length(y);
J_history = zeros(num_iters, 1);
numJ = size(theta, 1);
for iter = 1:num_iters
for i = 1:m
for j = 1:numJ
temp = theta(j) - alpha /m * X(i, j) * (((X * theta)(i, 1)) - y(i, 1));
theta(j) = temp
end
prediction = X * theta;
J_history(iter, 1) = computeCost(X,y,theta)
end
end
С другой стороны, вот функция стоимости:
function J = computeCost(X, y, theta)
m = length(y);
J = 0;
prediction = X * theta;
error = (prediction - y).^2;
J = 1/(2 * m) .* sum(error);
end
Это не проходит функцию submit()
.Функция submit()
просто проверяет данные путем прохождения неизвестного контрольного примера.
Я проверял другие вопросы на StackOverflow, но я действительно не понимаю.:)
Большое спасибо!