1.代码实现–单变量
1.绘制图像
data = load('D:/ex1data1.txt'); % 加载数据
X = data(:, 1); % 该数据只有有两列,第一列是一个城市的人口
y = data(:, 2); % 第二列是那个城市的食品运输车的利润
plot(X,y,"rx",'MarkerSize',10); % 绘制图像
xlabel('Population of City in 10,000s'); % 设置横纵坐标标签
ylabel('Profit in $10,000s');
2.代价函数 Cost Function 梯度下降 Gradient Descent
此处使用的是batch gradient descent algorithm
% 代价函数部分
m = length(y);
X = [ones(m, 1), data(:,1)]; % 把theta_0也当做一个特征,使X_0取值为1,方便矩阵运算
theta = zeros(2, 1); % 初始化
iterations = 1500;
alpha = 0.01;
J = sum((X * theta - y).^2) / (2*m);% 其中.^2是对矩阵中的每个元素求平方,sum()求和
% 梯度下降部分
J_history = zeros(iterations , 1);
for iter = 1:iterations
%注意!θ要同步更新!
theta_1 = theta(1) - alpha * (1/m) * sum(X * theta -y);
theta_2 = theta(2) - alpha * (1/m) *