网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月13日漏签0天
人工智能吧 关注:116,662贴子:509,176
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1 2 3 4 5 下一页 尾页
  • 75回复贴,共5页
  • ,跳到 页  
<<返回人工智能吧
>0< 加载中...

《机器学习》之矩阵和Matlab教程(适合初学)

  • 只看楼主
  • 收藏

  • 回复
  • 利_刃
  • T800
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Andrew Ng(吴恩达)老师的教程浅显易懂,不卖关子,是AI入门学习的首选教程。
这是他的《机器学习》课程的地址: https://www.coursera.org/course/ml 注册一个号进去就可以学了。


  • 利_刃
  • T800
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
下面是我整理的课程中关于矩阵和Matlab/Octive方面的笔记,考虑到本吧有不少0基础的同学,我尽量用初级的方式来解释,希望能给大家带来帮助。
线性代数(Linear Algebra)线性先讲一下什么是线性(Linear)。线性方程是指函数图形是直线的方程式,比如y=ax+b。相反的,非线性(Nonlinear)方程的函数图形是曲线,比如y=ax^2+bx+c (x^2代表x的2次方),二次、三次曲线和三角函数都是非线性的。

为了计算的方便,我们常常把非线性的方程,通过数学方式转换为线性方程来计算,例如微分(Differentiation)就是在微小的范围用直线近似地替代曲线。


2025-08-13 15:57:39
广告
不感兴趣
开通SVIP免广告
  • 利_刃
  • T800
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
向量(Vector)也叫矢量,是一个m*1或1*n的矩阵。横向的叫行向量,纵向的叫列向量。

注意:矩阵或矢量元素的起始索引(index),在数学领域一般是从1开始的,但在编程领域往往是从0开始。


  • 利_刃
  • T800
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
矩阵的加法
两个矩阵相加,这两个矩阵的行列数量必须相等,每个元素一一对应地相加就可以了。

减法的计算,和加法是一样的。

矩阵的点乘
点乘(Dot Product)也叫点积,就是矩阵各个对应元素相乘,记作:A·B或A.*B。
点乘的计算,和加法是一样的。

点除也一样。点除记作:A./B。

点幂也一样。点幂记作:A.^B。


  • CharlesX_
  • 铁皮人
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
酷,期待ing= =~~


  • 利_刃
  • T800
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
矩阵的乘法
矩阵A*矩阵B,矩阵A的列数必须等于矩阵B的行数,否则不能相乘。所得的矩阵行数等于矩阵A的行数,列数等于矩阵B的列数,即 [矩阵A m*n] * [矩阵B n*o] = [矩阵 m*o] 。这个务必记牢,下图可以帮助你从文字和图形两方面去记忆。

求法:把矩阵B的每列拆开,分别和矩阵A相乘,所得的结果合并即可。
公式为:
例:我们把前面矩阵A*向量B那个例子稍作改动,给向量B加1列,使之成为一个2*2的矩阵。

矩阵的乘法运算相对繁锁一些,具体的方法记不住也没关系,我们一般都是用Matlab之类的计算器来算的。
矩阵乘法的特性:
交换率(Commutative) - 在大多数情况下,A*B ≠ B*A,因此A、B的顺序一般不可交换。
结合率(Associative) - 数字的结合率:(3*5)*2=3*(5*2),矩阵也可以进行此这样计算:(A*B)*C=A*(B*C)。


  • 利_刃
  • T800
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
单位矩阵
数字1以“\”形对角斜线排列,其他值全部为0的矩阵为单位矩阵(Identity Matrix),记作I(或In×n)。

矩阵同单位矩阵相乘时,满足交换率,所得结果为矩阵本身,即A*I = I*A = A。因此,单位矩阵也被称为恒等矩阵。
逆矩阵
当矩阵A*B=B*A=I时,我们称B是A的逆矩阵(Inverse Matrix),记作B=A^-1,而A则被称为可逆矩阵。

逆矩阵有点类似于倒数。

行数和列数相等的矩阵称为方阵(Square Matrix),逆矩阵和可逆矩阵都是方阵。
数字0没有倒数,同理许多矩阵也没有逆矩阵,非方阵的矩阵就是不可逆的。
逆矩阵求法:A^(-1)=(1/|A|)×A* ,其中A^(-1)表示矩阵A的逆矩阵,其中|A|为矩阵A的行列式,A*为矩阵A的伴随矩阵。(这个暂时不需要掌握,现在一般都用Matlab之类的软件去求,没几个人用手工去算了)
Matlab的逆矩阵命令:pinv(a)、inv(a)或a^-1。为了避开某些不可逆导致的错误,我们一般使用伪逆矩阵(pseudo-inverse)的pinv命令。

转置矩阵
把矩阵的行变成列,列变成行,得到的新矩阵称为转置矩阵(Transpose Matrix),记作A'或A^T。
如果A是m*n矩阵,B=A',那么B是n*m矩阵,Bij=Aji。

Matlab求逆矩阵:a'。


  • 无尽愿
  • 9S
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
感谢楼主! 这真是极好的


2025-08-13 15:51:39
广告
不感兴趣
开通SVIP免广告
  • 利_刃
  • T800
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Matlab教程
这部分还是建议先按着视频教程来学,边看边照着做。
Octave、Matlab这两个软件的代码格式是一样的,所以任学一样就可以了。
Octave是免费的,功能弱一些,不过做练习足够了。
Matlab是收费的,功能比较强,适合商业用途。
Octave的下载地址:http://www.onlinedown.net/softdown/264521_2.htm
Matlab我不提供下载地址,你们自己搜一下吧。


  • 利_刃
  • T800
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
基本操作
下面我以Matlab为例,介绍一些简单命令的用法。
Matlab可以当计算器来用,在Command Window直接输入算式,再按回车即可。
1+1 % 1+1=2
3^2 % 3的2次方=9
2*(6-(2+3)) % =2*(6-5)=2*1=2


  • 利_刃
  • T800
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
% 百分号是注释符号,注释符后面的代码,只是给人看的,程序并不执行。
;(分号) 如果某个语句是分号结尾,这个语句的执行结果将不直接显示出来。
向上箭头键 翻阅以前执行过的命令。
help "help 命令名"可以显示某个命令的用法说明。


  • 利_刃
  • T800
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
几个逻辑运算符号,一般用于if语句:
== 等于,比较两个数是否相等
~= 不等于,即c语言的!=
&& 并且(and)
|| 或者(or)
变量赋值
a = 3; % 设置变量a的值为3
a = pi; % 把a的值改为pi,pi是预定义变量,pi=3.1416
a % 输出a的值,结果是 a=3.1416
disp(a) % 输出a的值,结果是 3.1416
sprintf('保留三位小数:%0.3f', a) % 输出格式化的文本。结果是 保留三位小数:3.142
sprintf('整数:%d', 100) % %.3f代表保留3位小数,%d代表整数。结果是 整数:100
format long % 切换成高精度显示模式 a=3.141592653589793
format short % 切换成低精度显示模式 a=3.1416
矩阵
a = [1 2; 3 4; 5 6] % 代表如下的矩阵(3*2矩阵)
1 2
3 4
5 6
% 也可以分成3行来写:
a = [1 2;
3 4;
5 6]
v = [1 2 3] % 代表一个1*3矩阵
v = [1; 2; 3] % 代表一个3*1矩阵
v = 1:0.2:2 % 1~2之间的数,间隔为0.2。结果是 1.0000 1.2000 1.4000 1.6000 1.8000 2.0000
v = 3:6 % 3~6间的数,间隔为1。结果是 3 4 5 6
ones(2,3) % 生成一个2*3的矩阵,里面的数字全是1。结果如下
1 1 1
1 1 1
2*ones(2,3) % 生成一个2*3的矩阵,里面的数字全是2。结果是 [2 2 2; 2 2 2]
zeros(1,3) % 生成一个1*3的矩阵,里面的数字全是0。结果是 [0 0 0]
rand(1,2) % 生成一个1*2的矩阵,里面的数字全是随机的,每次生成的都不一样。结果是 [0.8147 0.9058]
randn(1,2) % 生成高斯分布(正态分布)的随机数矩阵。w = -6 + sqrt(10)*(randn(1,10000)); % 测试高斯分布效果的例子。
hist(w) % 直方图(柱状图)显示数据。

hist(w,50) % 直方图,显示单位:50。

eye(3) % 生成3*3的单位矩阵(Identity Matrix)。结果是 [1 0 0; 0 1 0; 0 0 1]
help eye % 查看eye命令的相关说明文档。


  • 利_刃
  • T800
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
读写数据
load abc.txt % 加载abc.txt文件中的数据。
load('abc.txt') % 同上。
who % 查看内存中的变量。可以看到刚加载的abc变量。
whos % 详细查看内存中的变量列表。
save hello.mat abc; % 以二进制格式保存变量abc到hello.mat文件。
save hello.txt abc -ascii; % 以文本格式写入变量abc到hello.txt文件。
clear % 清空内存中的全部变量,再用who或whos查看,就什么也看不到了。
假设矩阵abc的内容如下:
1 2
3 4
5 6
abc(3,2) % 获得abc的第3行第2个元素,相当于c语言的abc[3-1][2-1]。结果是 6
abc(2,:) % 获得abc的第2行。结果是 3 4
abc(:,2) % 获得abc的第2列。结果是 2;4;6
abc([1 3], :); % 获得abc的第1、3行。结果是 [1 2; 5 6]
% 以上命令也可以用于赋值:
abc(:,2) = [10; 11; 12] % 结果是 abc = [1 10; 3 11; 5 12]
abc = [abc, [100; 101; 102]] % 给abc加一列。结果如下:
1 10 100
3 11 101
5 12 102
abc(:) % 合并成一列。结果是 1;3;5;10;11;12;100;101;102
a = [1 2; 3 4; 5 6]
b = [11 12; 13 14; 15 16]
c = [a b] % 横向合并a、b。结果如下:
1 2 11 12
3 4 13 14
5 6 15 16
c = [a, b] % 同上
c = [a; b] % 竖向合并a、b。结果如下:
1 2
3 4
5 6
11 12
13 14
15 16


  • 利_刃
  • T800
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
计算数据
c = [1 1; 2 2]
a * c % 矩阵相乘。
a .* c % 矩阵点乘,矩阵中的每个元素一和相乘。
1 ./ v % 矩阵点除,对矩阵每个元素x,求1/x。
a .^2 % 矩阵点幂,矩阵a每个元素的2次方。
v + 1 % 矩阵的每个元素都加1。
-v % 取负值(矩阵的每个元素),-v = -1 * v
abs(v) % 求绝对值(矩阵每个元素)。
exp(v) % 对于矩阵每个元素x,求e的x次方。(e是常数,e=2.71828...)
log(v) % 对于矩阵每个元素x,求自然对数(ln),即求x是e的几次方。
floor(a) % 向下取整(矩阵每个元素)。 2.1变为2; 2.7变为2
ceil(a) % 向上取整(矩阵每个元素)。 2.1变为3; 2.7变为3
round(a) % 四舍五入(矩阵每个元素)。 2.1变为2; 2.7变为3


2025-08-13 15:45:39
广告
不感兴趣
开通SVIP免广告
  • 利_刃
  • T800
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
a' % 求转置矩阵(transpose)
pinv(a) % 求逆矩阵(reverse) - 伪逆
max(a) % 最大值
[value, index] = max(a) % 最大值和行号
a = [1 4 6 2]
a < 3 % 结果为[1 0 0 1],即[是 否 否 是]
find(a < 3) % 查找。结果为[1 4],即[第1个=1 第4个=2]
sum(a) % 连加求和(∑)。∑a=1+4+6+2=13
prod(a) % 连乘求积(∏)。∏a=1*4*6*2=48


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 3 4 5 下一页 尾页
  • 75回复贴,共5页
  • ,跳到 页  
<<返回人工智能吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示