吴恩达机器学习

参考:

  • 吴恩达机器学习
  • 梯度下降法及其Python实现
  • 梯度下降法(BGD,SGD,MSGD)python+numpy具体实现
  • Octave
  • Octave 的函數列表
  • 在线公式编辑器

1、绪论:初识机器学习

吴恩达机器学习_第1张图片

什么是机器学习

吴恩达机器学习_第2张图片

吴恩达机器学习_第3张图片

吴恩达机器学习_第4张图片

监督学习

吴恩达机器学习_第5张图片

吴恩达机器学习_第6张图片

吴恩达机器学习_第7张图片

课时4 无监督学习

数据聚类

吴恩达机器学习_第8张图片

吴恩达机器学习_第9张图片

吴恩达机器学习_第10张图片

吴恩达机器学习_第11张图片


第2章 单变量线性回归

模型描述

吴恩达机器学习_第12张图片

吴恩达机器学习_第13张图片

代价函数

吴恩达机器学习_第14张图片

吴恩达机器学习_第15张图片

代价函数(一)

吴恩达机器学习_第16张图片

吴恩达机器学习_第17张图片

这里写图片描述

代价函数(二)

吴恩达机器学习_第18张图片

吴恩达机器学习_第19张图片

吴恩达机器学习_第20张图片

梯度下降

吴恩达机器学习_第21张图片

吴恩达机器学习_第22张图片

吴恩达机器学习_第23张图片

梯度下降知识点总结

吴恩达机器学习_第24张图片

吴恩达机器学习_第25张图片

吴恩达机器学习_第26张图片

吴恩达机器学习_第27张图片

吴恩达机器学习_第28张图片

吴恩达机器学习_第29张图片

吴恩达机器学习_第30张图片

线性回归的梯度下降

吴恩达机器学习_第31张图片

吴恩达机器学习_第32张图片

吴恩达机器学习_第33张图片


线性回归梯度下降公式总结

吴恩达机器学习_第34张图片

Hypothesis: hθ=θ0+θ1x

Parameters: θ0,θ1

Cost Function: J(θ0,θ1)=12mmi=1(hθ(x(i))y(i))2

Goal: minimizeJ(θ0,θ1)


Gradient descent algorithm:
θj:=θjαθjJ(θ0,θ1)(forj=0andj=1)

Correct:Simultaneous update

temp0:θ0αθ0J(θ0,θ1)

temp1:θ1αθ1J(θ0,θ1)

θ0=temp0
θ1=temp1


第3章 线性回归回顾

矩阵和向量

吴恩达机器学习_第35张图片


第4章 配置

安装 MATLAB

参考:https://www.mathworks.com/licensecenter/classroom/machine_learning_od/

在 Windows 上安装 Octave

参考:http://www.gnu.org/software/octave/

GNU/Linux 上安装 Octave

参考:http://www.gnu.org/software/octave/

更多 Octave/MATLAB 资源


第5章 多变量线性回归

多功能

吴恩达机器学习_第36张图片

吴恩达机器学习_第37张图片

多元梯度下降法

吴恩达机器学习_第38张图片

吴恩达机器学习_第39张图片

多元梯度下降法演练 I – 特征缩放

吴恩达机器学习_第40张图片

吴恩达机器学习_第41张图片

吴恩达机器学习_第42张图片

import numpy as np

x=[[100,200,255],[120,30,70],[70,90,100],[200,110,40]]
x=np.asarray(x)

x_=(x-np.mean(x,0))/np.std(x,0)
x__=(x-np.min(x,0))/(np.max(x,0)-np.min(x,0))
x___=(x-np.mean(x,0))/np.max(x)
x____=x/np.max(x)-0.5

多元梯度下降法II – 学习率

吴恩达机器学习_第43张图片

吴恩达机器学习_第44张图片

吴恩达机器学习_第45张图片

特征和多项式回归

吴恩达机器学习_第46张图片

吴恩达机器学习_第47张图片

正规方程(区别于迭代方法的直接解法)

样本特征数 少于1W的 回归问题时,使用 θ=(XTX)1XTy ,这种常规方法求参数,(替代梯度下降方法,但在分类问题时,只能使用梯度下降方法)
吴恩达机器学习_第48张图片

吴恩达机器学习_第49张图片

吴恩达机器学习_第50张图片

吴恩达机器学习_第51张图片

吴恩达机器学习_第52张图片

正规方程在矩阵不可逆情况下的解决方法

吴恩达机器学习_第53张图片

吴恩达机器学习_第54张图片


第6章 Octave/Matlab 教程

基本操作

>>>a=pi
a =  3.1416
>>>a
a =  3.1416
>>>disp(a)
 3.1416
>>>disp(sprintf('2 decimals:%0.2f',a))
2 decimals:3.14
>>>disp(sprintf('6 decimals:%0.6f',a))
6 decimals:3.141593
>>>a
a =  3.1416
>>>format long
>>>a
a =  3.14159265358979
>>>format short
>>>a
a =  3.1416

>>>A=[1 2;3,4;5,6]
A =

   1   2
   3   4
   5   6

>>>A=[1 2;
> 3,4;
> 5 6]
A =

   1   2
   3   4
   5   6

>>>v=[1 2 3]
v =

   1   2   3

>>>v=[1 ;2 ;3]
v =

   1
   2
   3


>>>ones(2,3)
ans =

   1   1   1
   1   1   1

>>>C=2*ones(2,3)
C =

   2   2   2
   2   2   2

>>>C=[2,2,2;2,2,2]
C =

   2   2   2
   2   2   2


>>>w=zeros(1,3)
w =

   0   0   0

>>>w=ones(1,3)
w =

   1   1   1

>>>w=rand(1,3)  # 0~1 之间的随机数
w =

   0.70559   0.59973   0.82269

>>>w=randn(1,3) # 均值为0,方差为1 的随机数
w =

  -0.28337   0.29570   0.41274

>>>w=-6*sqrt(10)*(randn(1,10000));
>>>hist(w) # 画直方图
>>>hist(w,60) # 直方图的条数为60

>>>v=1:10 # 1~10 默认步长为1 类似numpy range(1,10)
v =

    1    2    3    4    5    6    7    8    9   10

>>>v=1:2:10 # 1~10 步长为2 类似numpy range(1,10,2)
v =

   1   3   5   7   9

help eye % 帮助函数
eye % 单位矩阵
PS1(‘>>>’); % 改变显示

移动数据

who 显示当前工作空间所有变量
whos 显示更详细的信息
clear 变量名 % 删除该变量
clc %清除屏幕 不会清除变量

>>>A=[1 2;3 4;5 6]
A =

   1   2
   3   4
   5   6

>>>size(A)
ans =

   3   2

>>>size(A,1)
ans =  3
>>>size(A,2)
ans =  2
>>>size(A,3)
ans =  1
>>>length (A)
ans =  3
>>>B=[1 2 3;2 3 4]
B =

   1   2   3
   2   3   4

>>>length (B)
ans =  3
>>>size(B)
ans =

   2   3


>>>pwd # 显示当前环境路径
ans = E:\
>>>cd 'E:\' # 切换路径
>>>pwd
ans = E:\
>>>ls # 显示目录
 E:\ 的目录
>>> vim data.dat
'''
1 2 3
32 12 24
123 11 22
1 123 125
'''


>>>load data.dat # 加载数据
>>>load('data.dat') # 或者这样加载数据
>>>who # 显示当前工作空间中所有变量
Variables in the current scope:

data

>>>whos # 显示当前工作空间中所有变量(更详细)
Variables in the current scope:

   Attr Name        Size                     Bytes  Class
   ==== ====        ====                     =====  =====
        data        4x3                         96  double

Total is 12 elements using 96 bytes

>>>data
data =

     1     2     3
    32    12    24
   123    11    22
     1   123   125

>>>v=data(1:2,2:3)
v =

    2    3
   12   24
>>>save hello.mat v; # 将变量v保存成 hello.mat

>>>clear # 清除所有变量
>>>whos
>>>who
>>>load hello.mat # 加载文件
>>>whos # 查看内存变量
Variables in the current scope:

   Attr Name        Size                     Bytes  Class
   ==== ====        ====                     =====  =====
        v           2x2                         32  double

Total is 4 elements using 32 bytes

>>>v
v =

    2    3
   12   24


>>>save hello.txt v

vim hello.txt # 保存成txt文件
'''
# Created by Octave 4.2.2, Tue Apr 10 22:41:17 2018 GMT 
# name: v
# type: matrix
# rows: 2
# columns: 2
 2 3
 12 24
'''
# --------------------------------------------

>>>save hello.txt v -ascii % save as text(ASCII)
vim hello.txt
'''
 2.00000000e+000 3.00000000e+000
 1.20000000e+001 2.40000000e+001
'''
>>>A=[1 2;3 4;5 6]
A =

   1   2
   3   4
   5   6

>>>A(3,2) # 第3行第2列的元素
ans =  6
>>>A(2,:) # 第2行
ans =

   3   4

>>>A(:,2) # 第2列
ans =

   2
   4
   6

>>>A([1,3],:) # 第1行与第3行
ans =

   1   2
   5   6

>>>A(:,2)=[10;11;12] # 修改第2列
A =

    1   10
    3   11
    5   12

>>>A=[A,[100;101;102]] # 增加一列
A =

     1    10   100
     3    11   101
     5    12   102

>>>A=[A;[10 20 30]] # 增加一行
A =

     1    10   100
     3    11   101
     5    12   102
    10    20    30

>>>A(:)  # 获取A中的所有元素
ans =
     1
     3
     5
    10
    10
    11
    12
    20
   100
   101
   102
    30

>>>size(ans)
ans =

   12    1

>>>A=[1 2;3 4;5 6]
A =

   1   2
   3   4
   5   6

>>>B=[10 11;12 13;14 15]
B =

   10   11
   12   13
   14   15

>>>C=[A B] # 按列合并
C =

    1    2   10   11
    3    4   12   13
    5    6   14   15

>>>D=[A;B] # 按行合并
D =

    1    2
    3    4
    5    6
   10   11
   12   13
   14   15

计算数据

A*B %矩阵乘法
A.*B %矩阵对应元素相乘
A.^2 % 等价于 A.*A
1./A % 矩阵A中对应元素取倒数
log(A) % 矩阵A中的元素取对数(自然对数 e为底)
exp(A) % 矩阵A中的元素指数(自然对数 e为底)
abs(A) % 绝对值
A+1 % 矩阵A中的元素都加1 等价于 A+ones(size(A))
A’ % A 转置
max(A) 按列求最大值,等价于max(A,[],1) ; max(A,[],2)按行求和
A<3 # 小于3返回1(True)否则返回0(False)
find(A<3) # 找到A中小于3 的元素索引(A按列展开的)
[r,c]=find(A>7) # 返回索引r 行,c 列
A=magic (3) # 魔幻矩阵 每一行,每一列,对角线上的元素之和都相同
help find # 查看函数帮助
sum(A) # 按列求和 等价于sum(A,1) ; sum(A,2)按行求和
sum(sum(A.*eye(size(A)))) # 求主对角线上的元素之和
sum(sum(A.*flipud(eye(size(A))))) # 求次对角线上的元素之和
flipud(A) # 上下翻转矩阵
prod(A) # 按列求积 等价于prod(A,1) ; prod(A,2)按行求和
floor(A) # 向下取整 0.5–>0 ;0.2–>0;0.7–>0
ceil(A) # 向上取整 0.5–>1 ;0.2–>1;0.7–>1
round(A) # 四舍五入 0.5–>1 ;0.2–>0;0.7–>1
max(rand(3),rand(3)) # 返回2个随机矩阵中对应位置最大值组成新的矩阵
pinv(A) # 矩阵求逆(伪逆) A即使不可逆,也能求
inv(A) # 矩阵求逆, A即使不可逆,不能求

A =

   1   2
   3   4
   5   6

>>>[val,ind]=max(A) # val返回的最大值,ind为返回的最大值位置
val =

   5   6

ind =

   3   3

>>>[val,ind]=max(A,[],1) # 按列求最大值
val =

   5   6

ind =

   3   3

>>>[val,ind]=max(A,[],2) # 按行求最大值
val =

   2
   4
   6

ind =

   2
   2
   2

>>>A<3 # 小于3返回1(True)否则返回0(False)
ans =

  1  1
  0  0
  0  0


>>>find(A<3) # 找到A中小于3 的元素索引(A按列展开的)
ans =

   1
   4

>>>find(A(:)<3) # A(:) 矩阵A按列展开
ans =

   1
   4

>>>A=magic (3) # 魔幻矩阵 每一行,每一列,对角线上的元素之和都相同
A =

   8   1   6 # 15
   3   5   7 # 15
   4   9   2 # 15


>>>find(A>7)
ans =

   1
   6

>>>[r,c]=find(A>7)
r =

   1
   3

c =

   1
   2

>>>A(1,1)
ans =  8
>>>A(3,2)
ans =  9

数据绘制

>> t=[0:0.01:0.98];
>> y1=sin(2*pi*4*t);
>> plot(t,y1);
>> y2=cos(2*pi*4*t);
>> plot(t,y2); # 默认会覆盖掉前一次的绘画
>> hold on; # 保持前面的绘画
>> plot(t,y1,'r'); # 在前一次的绘画上继续绘画
>> xlabel('time')
>> ylabel ('value')
>> legend('cos','sin') # 图例,顺序对应
>> title('my plot')
>> print -dpng 'myplot.png' # 保存绘画
>> close # 关闭绘画

>> figure(1);plot(t,y1); # 第一张图上绘画
>> figure(2);plot(t,y2); # 第二张图上绘画(不会覆盖前一张图)

>> subplot(121);plot(t,y1,'-r');subplot(1,2,2);plot(t,y2,'*b');
>> axis([0.5 1 -1 1]) # 设置x轴 -0.5~1 ,y轴 -1~1
>> clf # 清除画板上的内容
>> A=magic(5)
>> imagesc(A) # 图片形式显示矩阵
>> imagesc(A),colorbar,colormap gray; # 转成灰度显示

控制语句:for,while,if 语句

>> v=zeros(10,1);
>> for i=1:10,
>     v(i)=i^2;
> end;

>> for i=1:10;v(i)=i^3;end;
>> for i=1:10
> v(i)=i^3;
> end;

>> indices=1:5
indices =

   1   2   3   4   5

>> for i=indices;disp(i);end;
 1
 2
 3
 4
 5

# --------------------------------

v =

      1
      8
     27
     64
    125
    216
    343
    512
    729
   1000

>> i=1;
>> while i<=5;v(i)=100;i=i+1;end;
>> v
v =

    100
    100
    100
    100
    100
    216
    343
    512
    729
   1000


>> i=1;
>> while true;
>   v(i)=999;
>   i=i+1;
>   if i==6;
>      break;
>   end;
> end;



>> i=1;
>> while true;
>   v(i)=999;
>   if i==6;
>      break;
>   end;
> end;

>> i=1;
>> while true;
>    if mod(i,2)==0; # mod求余数
>       continue;
>    end;
>    if i>length(v);
>       break;
>    end;
>    v(i)=10;
>    i=i+1;
> end;
# --------------------------

>> v=zeros(5,1);
>> v(2)=2;
>> if v(2)==2;
>    disp('the value is two');
>  elseif v(2)==1;
>    disp('the value is one');
>  else
>    disp('the value is other');
> end;

exit 退出octave
quit 退出octave

>> function y=squareThisNumber(x);y=x.^2;end;
>> whos
>> squareThisNumber(5)
ans =  25
# --------或者-----------------
# 将 function y=squareThisNumber(x);y=x.^2;end; 写入一个名为squareThisNumber.m的文件中
# 切换到squareThisNumber.m所在目录下
# 直接运行
>> squareThisNumber(5)
ans =  25

# 或者添加squareThisNumber.m所在目录路径
>> addpath('C:\Users\Administrator')
# 直接运行
>> squareThisNumber(5)
ans =  25

#-----------------------------------

>> function [y1,y2]=squareAndCuberThisNumber(x);y1=x.^2;y2=x.^3;end;

>> x=[1 1;1 2;1 3]
x =

   1   1
   1   2
   1   3

>> y=[1;2;3]
y =

   1
   2
   3

>> theta=[0;1];
>> function J=costFunctionJ(X,y,theta);
>    m=size(X,1);
>    predictions=X*theta; % hypothesis
>    sqrErrors=(predictions-y).^2;  % squared errors
>    J=1/(2*m)*sum(sqrErrors);
>  end;
>> costFunctionJ(x,y,theta)

矢量

吴恩达机器学习_第55张图片

吴恩达机器学习_第56张图片


第7章 Logistic 回归

分类

吴恩达机器学习_第57张图片

吴恩达机器学习_第58张图片

吴恩达机器学习_第59张图片

假设陈述

吴恩达机器学习_第60张图片

吴恩达机器学习_第61张图片

决策界限

吴恩达机器学习_第62张图片

吴恩达机器学习_第63张图片

吴恩达机器学习_第64张图片

代价函数

吴恩达机器学习_第65张图片

吴恩达机器学习_第66张图片

吴恩达机器学习_第67张图片

简化代价函数与梯度下降

吴恩达机器学习_第68张图片

吴恩达机器学习_第69张图片

吴恩达机器学习_第70张图片

高级优化

吴恩达机器学习_第71张图片

吴恩达机器学习_第72张图片

吴恩达机器学习_第73张图片

多元分类:一对多

吴恩达机器学习_第74张图片

吴恩达机器学习_第75张图片

吴恩达机器学习_第76张图片


第8章 正则化

过拟合问题

吴恩达机器学习_第77张图片

吴恩达机器学习_第78张图片

吴恩达机器学习_第79张图片

dropout –随机减少训练特征

代价函数

吴恩达机器学习_第80张图片

吴恩达机器学习_第81张图片

吴恩达机器学习_第82张图片

吴恩达机器学习_第83张图片

吴恩达机器学习_第84张图片

吴恩达机器学习_第85张图片

吴恩达机器学习_第86张图片

线性回归的正则化

吴恩达机器学习_第87张图片

吴恩达机器学习_第88张图片

吴恩达机器学习_第89张图片

Logistic 回归的正则化

吴恩达机器学习_第90张图片

吴恩达机器学习_第91张图片

吴恩达机器学习_第92张图片

第9章 神经网络学习

非线性假设

模型展示Ⅰ

吴恩达机器学习_第93张图片

吴恩达机器学习_第94张图片

吴恩达机器学习_第95张图片

模型展示 II

吴恩达机器学习_第96张图片

吴恩达机器学习_第97张图片

吴恩达机器学习_第98张图片

例子与直觉理解Ⅰ

吴恩达机器学习_第99张图片

吴恩达机器学习_第100张图片

吴恩达机器学习_第101张图片

吴恩达机器学习_第102张图片

例子与直觉理解Ⅱ

吴恩达机器学习_第103张图片

吴恩达机器学习_第104张图片

多元分类

吴恩达机器学习_第105张图片

吴恩达机器学习_第106张图片


第10章 神经网络参数的反向传播算法

代价函数

吴恩达机器学习_第107张图片

吴恩达机器学习_第108张图片

反向传播算法

吴恩达机器学习_第109张图片

吴恩达机器学习_第110张图片

吴恩达机器学习_第111张图片

理解反向传播

吴恩达机器学习_第112张图片

吴恩达机器学习_第113张图片

吴恩达机器学习_第114张图片

使用注意:展开参数

吴恩达机器学习_第115张图片

吴恩达机器学习_第116张图片

吴恩达机器学习_第117张图片

你可能感兴趣的:(tensorflow)