谈谈NG视频里面单线性回归、多线性回归、逻辑回归等等

  明天第一节课8.55才上,还是把今天看的东西整理一下吧。

  今天主要是看了NG前几章讲的单线性回归、多线性回归、逻辑回归的matlab实现,之前觉得那些东西理解还好,但是写代码好难的样子,但是今天看了大牛的代码发现真的很easy... 但是是很有技巧的用的矩阵去实现。

  比如单线性回归里面的j=0和j=1这两种情况,直接把x转换成x = [ones(m, 1) x] , 第一列全是1了,刚好可以把j=0时x=1代入去运算,这样子梯度 grad = (1/m).* x‘ * ((x * theta) - y) , theta = theta - alpha .* grad ,外面加个循环就可以求出theta0 和 theta 1 (其实都在theta矩阵里)。

clear all; close all; clc
x = load(‘ex2x.dat‘); y = load(‘ex2y.dat‘);

m = length(y); % number of training examples

% Plot the training data
figure; % open a new figure window
plot(x, y, ‘o‘);
ylabel(‘Height in meters‘)
xlabel(‘Age in years‘)

% Gradient descent
x = [ones(m, 1) x]; % Add a column of ones to x
theta = zeros(size(x(1,:)))‘; % initialize fitting parameters
MAX_ITR = 1500;
alpha = 0.07;

for num_iterations = 1:MAX_ITR
    % This is a vectorized version of the
    % gradient descent update formula
    % It‘s also fine to use the summation formula from the videos

    % Here is the gradient
    %代价函数的导数:刚好把j=0和j=1的情况巧妙的用矩阵的方法归为一个式子
    %grad = 1/m * (h-y) 或 1/m * (h-y)*x
    grad = (1/m).* x‘ * ((x * theta) - y);

    % Here is the actual update
    theta = theta - alpha .* grad;

    % Sequential update: The wrong way to do gradient descent
    % grad1 = (1/m).* x(:,1)‘ * ((x * theta) - y);
    % theta(1) = theta(1) + alpha*grad1;
    % grad2 = (1/m).* x(:,2)‘ * ((x * theta) - y);
    % theta(2) = theta(2) + alpha*grad2;
end
% print theta to screen
theta

% Plot the linear fit
hold on; % keep previous plot visible
plot(x(:,2), x*theta, ‘-‘)
legend(‘Training data‘, ‘Linear regression‘)%标出图像中各曲线标志所代表的意义
hold off % don‘t overlay any more plots on this figure,指关掉前面的那幅图

  

  还有就是牛顿法直接求解参数,一句w=inv(x‘*x)*x‘*y 就直接求出了theta0 和 theta 1 ,看来还需看看最优化这方面的东西啊。

  

%%方法一
x = load(‘ex2x.dat‘);
y = load(‘ex2y.dat‘);
plot(x,y,‘*‘)
xlabel(‘height‘)
ylabel(‘age‘)
x = [ones(size(x,1),1),x];
w=inv(x‘*x)*x‘*y
hold on
%plot(x,0.0639*x+0.7502)
plot(x(:,2),0.0639*x(:,2)+0.7502)%更正后的代码

  后面就是画代价函数的三维图,一个surf函数直接可以画出三维图像。

  可参考:http://huzhyi21.blog.163.com/blog/static/1007396201061052214302/

% Calculate J matrix

% Grid over which we will calculate J
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) = (1/2*m) .* (x * t - y)‘ * (x * t - y);
      %J_vals就是代价函数: 1/2m * (h-y)^2
    end
end

% Because of the way meshgrids work in the surf command, we need to
% transpose J_vals before calling surf, or else the axes will be flipped
J_vals = J_vals‘;
% Surface plot
figure;
surf(theta0_vals, theta1_vals, J_vals)
xlabel(‘\theta_0‘); ylabel(‘\theta_1‘);

  

时间: 2024-10-05 21:10:09

谈谈NG视频里面单线性回归、多线性回归、逻辑回归等等的相关文章

线性回归,逻辑回归的学习(包含最小二乘法及极大似然函数等)

博文参考了以下两位博主的文章:http://blog.csdn.net/lu597203933/article/details/45032607,http://blog.csdn.net/viewcode/article/details/8794401 回归问题的前提: 1) 收集的数据 2) 假设的模型,即一个函数,这个函数里含有未知的参数,通过学习,可以估计出参数.然后利用这个模型去预测/分类新的数据. 1. 线性回归 假设 特征 和 结果 都满足线性.即不大于一次方.这个是针对 收集的数据

对线性回归、逻辑回归、各种回归的概念学习

http://blog.csdn.net/viewcode/article/details/8794401 回归问题的条件/前提: 1) 收集的数据 2) 假设的模型,即一个函数,这个函数里含有未知的参数,通过学习,可以估计出参数.然后利用这个模型去预测/分类新的数据. 1. 线性回归 假设 特征 和 结果 都满足线性.即不大于一次方.这个是针对 收集的数据而言.收集的数据中,每一个分量,就可以看做一个特征数据.每个特征至少对应一个未知的参数.这样就形成了一个线性模型函数,向量表示形式: 这个就

ng机器学习视频笔记(三) ——线性回归的多变量、特征缩放、标准方程法

ng机器学习视频笔记(三) --线性回归的多变量.特征缩放.标准方程法 (转载请附上本文链接--linhxx) 一.多变量 当有n个特征值,m个变量时,h(x)= θ0+θ1x1+θ2x2-+θnxn,其中可以认为x0=1.因此,h(x)= θTx,其中θ是一维向量,θ=[θ0, θ1-θn] T,x也是一维向量,x=[x0,x1..xn] T,其中x0=1. 二.特征缩放(Feature Scaling) 特征缩放的目的,是为了让每个特征值在数量上更加接近,使得每个特征值的变化的影响相对比较"

Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression

原文:http://blog.csdn.net/abcjennifer/article/details/7732417 本文为Maching Learning 栏目补充内容,为上几章中所提到单参数线性回归.多参数线性回归和 逻辑回归的总结版.旨在帮助大家更好地理解回归,所以我在Matlab中分别对他们予以实现,在本文中由易到难地逐个介绍. 本讲内容: Matlab 实现各种回归函数 ========================= 基本模型 Y=θ0+θ1X1型---线性回归(直线拟合) 解决

机器学习(一)——线性回归、分类与逻辑回归

http://antkillerfarm.github.io/ 序 这是根据Andrew Ng的<机器学习讲义>,编写的系列blog. http://www.cnblogs.com/jerrylead/archive/2012/05/08/2489725.html 这是网友jerrylead翻译整理的版本,也是本文的一个重要的参考. http://www.tcse.cn/~xulijie/ 这是jerrylead的个人主页. 我写的版本在jerrylead版本的基础上,略有增删,添加了一下其他

机器学习系列:(四)从线性回归到逻辑回归

从线性回归到逻辑回归 在第2章,线性回归里面,我们介绍了一元线性回归,多元线性回归和多项式回归.这些模型都是广义线性回归模型的具体形式,广义线性回归是一种灵活的框架,比普通线性回归要求更少的假设.这一章,我们讨论广义线性回归模型的具体形式的另一种形式,逻辑回归(logistic regression). 和前面讨论的模型不同,逻辑回归是用来做分类任务的.分类任务的目标是找一个函数,把观测值匹配到相关的类和标签上.学习算法必须用成对的特征向量和对应的标签来估计匹配函数的参数,从而实现更好的分类效果

网红是怎样让视频刷单再度疯狂?

近日,2016超级红人节颁奖礼在上海举行.来自时尚.直播.视频三大领域的近百位红人和机构,分享12个奖项.红人节的举办,将原本就受到全社会关注的网红群体再度推向一个新的高度.如何成为网红,也渐渐由突发性的偶然事件,向产业化.流水化方向发展,成为一个全新产业. 而在炮制网红愈发"正规化"的当下,也引发出许多负面问题.视频刷单.直播刷单等都因为炮制网红的强势需求,再度死灰复燃,扮演不可或缺的推手角色,成为一股重要的力量.只是,这样做真的好吗? 一个网红故事开启一个产业 Papi酱作为&qu

Machine Learning 学习笔记 (1) —— 线性回归与逻辑回归

[总目录]http://www.cnblogs.com/tbcaaa8/p/4415055.html 1. 梯度下降法 梯度下降法是一种用来寻找函数最小值的算法.算法的思想非常简单:每次沿与当前梯度方向相反的方向走一小步,并不断重复这一过程.举例如下: [例]使用梯度下降法,求的最小值. 第一步:求解迭代格式.根据“每次沿与当前梯度方向相反的方向走一小步”的思想,可知 第二步:选择迭代的初始值.初始值一般可以随意选择,但恰当的初始值有助于提升收敛速度.本例中选择 第三步:根据迭代格式和初始值进行

线性回归与逻辑回归

本文转自:http://blog.csdn.net/itplus/article/details/10857843 本文详细的介绍了线性回归和逻辑回归是怎么一回事,很好的介绍了线性回归的原理和逻辑回归的原理.针对逻辑回归,最后参数的求解过程中,还可以用到牛顿法和拟牛顿法,具体可以参考:http://www.cnblogs.com/ljy2013/p/5129294.html 从上面可以看出,标准梯度下降法每一次利用所有的训练样本数据来更新一个参数的一个纬度的分量:而随即梯度下降方法是针对每一个训