机器学习(一)——Linear Regression

版权声明: https://blog.csdn.net/Godsolve/article/details/83685275

机器学习课程中做的一些实验题目,拿来和大家分享一下。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实验步骤与内容:

  1. 加载数据集并绘制散点图
    MATLAB中加载数据集的方法是“load”函数,绘制散点图的方法是“plot”函数,并且还可以使用“label”函数来为坐标轴做标注。
    得出结果如图:
    在这里插入图片描述

  2. 在梯度下降之前,要使用x = [ones(m, 1) x]语句来给数据集x加上一列,训练数据中的年龄值实际上位于x的第二列。
    此时的线性回归模型为
    在这里插入图片描述
    使用实验文件中给出的学习率,来初始化参数theta=0(i.e.,θ0=θ1=0),并从该初始起点开始一次梯度下降迭代。 记录第一次迭代后得到的 theta0和theta1的值。
    在程序中体现为:theta = zeros(size(x(1,:)))’;

  3. 线性回归模型为

在这里插入图片描述在这里插入图片描述
梯度下降算法的更新规则为
在这里插入图片描述
而这两个函数在程序中,可以将更新规则中的h(x)替换为theta*x
在这里插入图片描述
然后循环1500次,得到一元线性回归方程,结果为
在这里插入图片描述
三岁半的孩子身高约0.9737米,七岁的孩子身高约为1.1973米
4. 对J(θ)的理解
可视化参数θ来帮助理解梯度下降函数,绘制出J(θ)的3D表面图。
在这里插入图片描述
在这里插入图片描述


代码自取:

clear all; close all; clc
x = load('ex1x.dat'); y = load('ex1y.dat');
m = length(y); 
figure; 
plot(x, y, 'o');
ylabel('Height in meters')
xlabel('Age in years')

% Gradient descent
x = [ones(m, 1) x]; 
theta = zeros(size(x(1,:)))'; 
MAX_ITR = 1500;
alpha = 0.07;

for num_iterations = 1:MAX_ITR
 
  
   % Here is the gradient
   grad = (1/m).* x' * ((x * theta) - y);
   
   % Here is the actual update
   theta = theta - alpha .* grad;
   
   
end
theta;
hold on; 
plot(x(:,2), x*theta, 'r-');
legend('Training data', 'Linear regression')
hold off 

exact_theta = (x' * x)\x' * y

% Predict values for age 3.5 and 7
predict1 = [1, 3.5] *theta
predict2 = [1, 7] * theta
theta0_vals = linspace(-3, 3, 100);
theta1_vals = linspace(-1, 1, 100);

% initialize J_vals to a matrix of 0's
J_vals = zeros(length(theta0_vals), length(theta1_vals));

for i = 1:length(theta0_vals)
     for j = 1:length(theta1_vals)
     t = [theta0_vals(i); theta1_vals(j)];    
     J_vals(i,j) = (0.5/m) .* (x * t - y)' * (x * t - y);
   end
end

J_vals = J_vals';
figure;
surf(theta0_vals, theta1_vals, J_vals)
xlabel('\theta_0'); ylabel('\theta_1');

figure;
contour(theta0_vals, theta1_vals, J_vals, logspace(-2, 2, 15))
xlabel('\theta_0'); ylabel('\theta_1');

猜你喜欢

转载自blog.csdn.net/Godsolve/article/details/83685275
今日推荐