机器学习——矩阵知识复习

一. 矩阵知识复习

此文只给出一些机器学习中常用的矩阵知识和公式,方便复习和查询。

1.1 矩阵乘法

Am×pBp×n=Cm×n

1.2 矩阵乘法性质

  • 不满足交换律: A×BB×A
  • 满足结合律: A×(B×C)=(A×B)×C
  • (A+B)2=A2+AB+BA+B2
  • (AB)2=(AB)(AB)A2B2

1.3 矩阵的逆和转置

  • 矩阵的逆:若矩阵A 是一个 m × m矩阵(方阵),则:
    AA1=A1A=I
  • 矩阵的转置:设A 为 m × n 阶矩阵(即m行n列), 第i行j列的元素为a(i, j), 定义A的转置为这样一个n × m阶矩阵B, 满足b(i, j) = a(j, i)(B的第i行j列元素是A的第j行i列元素), 即 AT=B (或 A=B )。

1.4 转置基本性质

  • (A±B)T=AT±BT
  • (A×B)T=BT×AT (在公式化简中常用到)
  • (AT)T=A

1.5 逆矩阵运算规律

  • (AB)1=B1A1
  • (kA)1=A1/k
  • (A1)T=(AT)1
  • (An)1=(A1)n

注意:在matlab和octave中用 A 表示A的转置,用 A1 可求A的逆矩阵。

二. Octave基本操作

octave是一款免费的科学计算软件,提供了强大的线性与非线性的数值计算,同时可以提供了强大的机器学习算法和各种数据可视化的功能,它的语法简单(几乎想数学公式一样),并且在很多语法上与MATLAB是相似的,很适合作为机器学习的一款工具。

2.1 安装

安装步骤请参考:http://mooc.guokr.com/note/15825/

2.2 基本操作

  1. octave-cli 进入octave的命令行
  2. 基本运算符: +、-、x、/、^
  3. 逻辑运算符: &&、||、xor、==、~=
  4. 注释: %注释的内容
  5. 打印: disp(a) 输出变量a的值
  6. 格式化输出: disp(sprintf(‘2 decimals: %0.2f’, a)) 输出两位小数点
  7. 常用常量:pi表示圆周率 π 、exp(2)表示 e2

2.3 矩阵相关操作

  1. 矩阵赋值:A = [3 4; 2 16] :
    [32416]
  2. 初始化全为1的矩阵 ones(2,3)
    [111111]
  3. 初始化全为0的矩阵 zeros(2,3)
    [000000]
  4. 初始化随机数矩阵 (数值介于0和1之间) rand(1,3)
    [0.154240.421560.66853]
  5. 初始化正态分布随机数矩阵 randn(3,3)
    1.268221.366201.673450.126080.175180.340601.024540.590341.99185]
  6. 生成单位矩阵 eye(3)
    100010001
  7. 生成魔方矩阵 magic(3) :
    834159672

2.4 移动元素

  1. 从文件加载数据:load(‘filename’) 更多信息参考命令:help load
  2. 保存数据到文件: save xxx.mat v 以二进制格式存储变量v到文件xxx.mat中; save xxx.txt v 以文本格式存储
  3. 显示当前内存中的变量信息: whos
  4. 清除内存中的变量: clear
  5. 取矩阵的某个元素 A = [1 2; 3 4; 5 6];
    A(3,2)=6
  6. 取矩阵的某行或某列的元素 A = [1 2; 3 4; 5 6];
    A(2,:)=[34]

    A(:,2)=246

    A([1 3],:)=[1526]
  7. 给矩阵的某一行或列赋值 A = [1 2; 3 4; 5 6];
    A(:,2)=[10;11;12]

    A:135101112
  8. 给矩阵增加一行或列 A = [1 2; 3 4; 5 6];
    A=[A,[100;101;102]];A

    A:135246100101102
  9. 矩阵连接 A = [1 2; 3 4; 5 6]; B = [11 12; 13 14; 15 16];
    C = [A B];
    C:135246111315121416

    C = [A ; B];
    C:135111315246121416

2.5 计算

A=[1 2; 3 4; 6 7]; B = [11 12; 13 14; 15 16]; C = [1 1; 2 2];
1. 矩阵乘法

AC=5111751117

2. 矩阵点乘 (一般点操作为元素位运算)
A . B=113975245696

3. 矩阵点除
1./A=10.333330.20.50.250.16667

4. 其他函数 abs、log、exp等均为对矩阵每个元素做运算
5. 矩阵 ± 实数(广播)
A+1=246357

6. 求逆矩阵: A = [3 4; 2 16]; pinv(A) 或 A1 (命令行输入为A^-1):
[0.4000000.0500000.1000000.075000]

7. 求转置: A = [3 4; 2 16]; A :
[34216]

8. 求矩阵的秩 A = [1 2; 3 4; 5 6];
size(A)[32]

size(A,1)3

size(A,2)2

9. 求矩阵元素的和: A = [1 2; 3 4; 5 6];
sum(A):[32]

sum(A,1):[32]

sum(A,2):3711

sum(sum(A)):21

10. 求向量的长度 V = [1 2 3 4];
length(V):4

11. 求最大或最小元素 A = [1 2; 3 4; 5 6]; maxmin 用法同 sum函数
12. 查找符合条件的元素find函数,更多用法参考 help load
A=834159672

find(A<=4):249

[i,j]=find(A<=4):

i=213 j=123

2.6 画图相关

Octave 有非常简单的工具用来生成大量不同的图,帮助我们绘制数据,绘制学习算法,并改进学习算法。

  1. 绘制2D 图,如正弦函数 y=sin(2πx)

    x=[0:0.01:1];y=sin(2pix);plot(x,y);

    机器学习——矩阵知识复习_第1张图片

  2. 给图像增加标记: xlabel(‘time’),ylabel(‘value’),legend(‘sin’),title(‘title’), plot(x, y, ‘r’):机器学习——矩阵知识复习_第2张图片

  3. 在同一张图上绘制多条曲线,使用hold on函数:
    y1=sin(2pix);
    y2=cos(2pix);
    plot(x,y1,r);
    hold on;
    plot(x,y2,b);
    legend(sin,cos);
    机器学习——矩阵知识复习_第3张图片

  4. 保存图片: print -dpng ‘myplot.png’ 以png格式保存图片

  5. 绘制多张图:figure(1); plot(x,y1);绘制第一张图; figure(2); plot(x, y2);绘制第二张图
  6. 将一张图画在不同区域中: subplot命令
    subplot(1,2,1);
    plot(x,y1,r);
    legend(sin);
    subplot(1,2,2);
    plot(x,y2,b);
    legend(cos);
    机器学习——矩阵知识复习_第4张图片

  7. 绘制直方图: hist(x)
    w=6+sqrt(10)(randn(1,1000));
    hist(w);
    机器学习——矩阵知识复习_第5张图片

  8. 绘制3D图: surf(X, Y, Z)
    x=linspace(2,2,25);x25
    y=linspace(2,2,25);y25
    [xx,yy]=meshgrid(x,y);xxyy21x21
    zz=xx.exp(xx.2yy.2);zz21x21
    surf(xx,yy,zz);
    机器学习——矩阵知识复习_第6张图片

  9. 绘制等高线图: contour(X, Y, Z)
    机器学习——矩阵知识复习_第7张图片

你可能感兴趣的:(机器学习)