Octave实现多变量线性回归

来源:互联网 发布:php内存回收的机制 编辑:程序博客网 时间:2024/06/06 06:53

1.特征缩放

1.1特征缩放的公式:


1.2特征缩放octave实现:

function [X_norm, mu, sigma] = featureNormalize(X)
X_norm = X;
mu = zeros(1, size(X, 2));
sigma = zeros(1, size(X, 2));     


m = size(X , 1);
mu = mean(X);%计算向量X元素的和
for i = 1 : m,
X_norm(i, :) = X(i , :) - mu;
end


sigma = std(X) % 计算向量X元素的标准方差
for i = 1 : m,
X_norm(i, :) = X_norm(i, :) ./ sigma;
end
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

2. 代价函数

2.1 代价函数公式


2.2 代价函数Octave实现

function J = computeCostMulti(X, y, theta)
m = length(y); % number of training examples
J = 0;
h=X*theta;
J=sum((h-y).^2)/(2*m);
end

3.多变量梯度下降

3.1多变量梯度下降公式



3.2 多变量梯度下降Octave的实现

function [theta, J_history] = gradientDescentMulti(X, y, theta, alpha, num_iters)
m = length(y); % number of training examples
J_history = zeros(num_iters, 1);
n = size(X , 2);
for iter = 1:num_iters
H = X * theta;
T = zeros(n , 1);
for i = 1 : m
T = T + (H(i) - y(i)) * X(i,:)';
end
theta = theta - (alpha * T) / m;
J_history(iter) = computeCostMulti(X, y, theta);
end
end

原创粉丝点击