Я пытаюсь решить проблему многомерной линейной регрессии в python (numpy). Подробности моего кода следующие: X
это 47x3
матрица y
это 47x1
матрица
После итерации с использованием градиентного спуска значение функции стоимости увеличивается (NaN
после нескольких итераций). Что я тут не так делаю?
def computeCost(X,y,theta):
m = np.size(X,0);
error = X * theta -y;
return (1/(2*m)) * (error.T * error).item(0);
if __name__ == "__main__":
x = np.matrix(np.genfromtxt('ex3x.dat'));
y = np.matrix(np.genfromtxt('ex3y.dat')).T;
ones = np.matrix(np.ones((np.size(x,0),1)));
X = np.concatenate((ones, x), axis=1)
theta = np.matrix([[1],[2],[3]])
iter = 30
J_history = np.ones(iter);
alpha = 0.01;
m = np.size(x,0);
for i in range(iter):
J_history[i] = computeCost(X,y,theta);
theta = theta - (alpha/m) * (X.T * (X*theta-y))