陷阱一:数据结构混乱 array 和 matrix 都可以用来表示多维矩阵: 看起来效果不错。假设我们要对数据进行筛选,取第 1 列的第 1 行和第 3 行数据构成一个 2 x 1 的列向量。...实际上,这个还达不到目的,因为那里面写了好多硬编码的数字,要处理通用的过滤情况,还需要写个函数来实现。而这个任务在 matlab/octave 里只需要写成 X(Y==1, :) 即可完美达成目的。...那好吧,我们这样做总行了吧,x[:, 0] * y 这样两个列向量就可以点乘了吧,不幸的还是不行,因为 numpy 认为这是 matrix,所以执行的是矩阵相乘(叉乘),要做点乘,必须转为 array...看起来提供了灵活性,实际上增加了使用者的大脑负担。而我们的需求在 matlab/octave 里只需要写成 x .* y * theta ,直观优雅。...而这个需求在 matlab/octave 里面只需要写成 [ones(5,1) x] ,瞬间脑袋不短路了,直观优雅又回来了。
陷阱一:数据结构混乱 array 和 matrix 都可以用来表示多维矩阵: ? 看起来效果不错。假设我们要对数据进行筛选,取第 1 列的第 1 行和第 3 行数据构成一个 2 x 1 的列向量。...实际上,这个还达不到目的,因为那里面写了好多硬编码的数字,要处理通用的过滤情况,还需要写个函数来实现。而这个任务在 matlab/octave 里只需要写成 X(Y==1, :) 即可完美达成目的。...看起来提供了灵活性,实际上增加了使用者的大脑负担。而我们的需求在 matlab/octave 里只需要写成 x .* y * theta ,直观优雅。...陷阱四:语法复杂,不自然 比如,我们要在一个 5 x 2 的矩阵的前面加一列全部是 1 的数据,变成一个 5 x 3 的矩阵,我们必须这样写: ?...而这个需求在 matlab/octave 里面只需要写成 [ones(5,1) x] ,瞬间脑袋不短路了,直观优雅又回来了。
开始使用Octave Octave是一个开源的科学计算以及数值分析的工具,在一定程度上,它与MATLAB语法兼容。 那位要问了:为什么不直接用MATLAB呢?因为MATLAB贵啊!...首先创建两个变量: >> v = 1 + 3; >> x = v * 2; 在语句后面加上;可以不把表达式的值立刻显示出来,我们知道v值为4且x值为8。...,1维度显示矩阵的行数,2维度显示矩阵的列数。...1 1 1 1 1 1 >> length (B) % 由于矩阵B的是2 x 3矩阵,所以返回大值 3 ans = 3 矩阵中数据的操作 查看A矩阵中第2行第2列的数值...1 3 5 7 9 2 4 6 8 10 >> max (A) % 求出A的每一列的最大值 ans = 2 4
为什么要选择Octave? 吴老师在以往的机器学习教学中,尝试过很多种编码语言来进行实验,包括C++、Java、Python的Numpy,以及Octave。...在硅谷的好多需要实际使用机器学习的公司中,他们在算法原型构建阶段都是使用Octave一类的高级语言。等到算法固化,需要生产部署的时候才使用C++、Java来进行重写以提高执行效率。...Matlab很好,但是很贵,对我们中国的研究人员还存在被禁用的危险;而Python、R一类的对非计算机专业的同学来说不是特别友好。所以呢,最后Octave成为非常不错的一种选择。...判断两个数是否不等于,用的是"~=", 而不是其它语言常用的"!="。另外,注释符号是"%"。用过matlab的同学可能也发现了,它的语法几乎就是照搬Matlab,非常友好。...向量和矩阵 定义一个3*2的矩阵: ? 定义中的分号就是矩阵的换行。 定义向量和定义矩阵本质上是一样的,下面这样是定义一个行向量: ? 如果定义列向量呢? ?
一维数组可以是一个行向量,也可以是一列多行的列向量在定义的过程中,如果元素之间通过“;”分隔元素,那么生成的向量是列向量;通过空格或逗号分隔的元素则为行向量。...创建方法为,单击NewVariable创建图标,此时系统在工作空间的变量列表中出现新的矩阵变量,用户可以改变变量的名称。同时,在MATLAB的工作空间出现矩阵编辑器表格,可以直接输人矩阵的数据。...(4)可以通过MATLAB所提供的其他函数来生成二维数组。 ? 三维数组的创建 在创建二维数组的过程中,需要严格保证所生成矩阵的行和列的数目相同。如果两者的数目不同,那么系统将会出现错误提示。...此外,在直接生成矩阵的过程中,可以通过按回车键来保证矩阵生成另一行元素 多维数组(n维数组),如在三维数组中存在行、列和页这样三维,即三维数组中的第三维成为页。在每一页中,存在行和列。...在二维数组进行排序时,sort函数只对数组的列进行排序,如果只对行进行排序,则需要为sort函数提供第二个参数2 ?
MATLAB中的许多函数都可以提取现有数组的元素,然后按照不同的形状或顺序放置。这样有助于预处理数据,便于之后进行计算或分析。 1、重构 reshape 函数可以更改数组的大小和形状。...此操作计算每个元素的复共轭并对其进行转置。创建一个 2×2 复矩阵并计算其共轭转置。...C = rot90(B,3) C = 2×2 1 2 3 4 4、排序 对数组中的数据进行排序也是一项实用功能,MATLAB 提供了几种排序方法。...例如,sort 函数可以按升序或降序对矩阵的每一行或每一列中的元素进行排序。创建矩阵 A,并按升序对 A 的每一列进行排序。...例如,根据第一列中的元素按升序对 A 的各行排序。行的位置发生变化,但每一行中元素的顺序不变。
49.png 不用过于担心特征是否在完全相同的范围或者是区间内,但是只要它们之间足够接近的话,梯度下降法就会正常地运行。 除了将特征除以最大值以外,在特征缩放中,会使用特征均一化的操作。...在之前优质使用的方法——梯度下降法中,为了得到最小化代价函数T(θ),会使用迭代算法。通过梯度下降的多次迭代来收敛到全局最小值。...我们所要做的是在数据集中,加入一列来对应额外的特征变量x_0,取值永远都是1。 接下来就是构建一个矩阵X(m*(n+1)维矩阵),矩阵X包括了训练样本中的所有数据,也构建一个向量y(m维向量)。...其中的X称为设计矩阵(designed Matrix) 59.png 为了能够明白下列式子,作了具体的说明: 60.PNG在Octave或者是MATLAB中,具体的实现方式如下: 在Octave或者是...MATLAB中,具体的实现方式如下: Pinv(X’*X)*X’*y 使用了正规方程,那我们直接不用特征缩放的方法。
使用save命令,后面跟上文件名和要保存的变量名即可。如下: ? 这时候在Octave当前的工作路径下就多了一个hello.dat文件, ?...如果save的时候把.dat改成*.mat可以进行一些压缩,当变量很大的时候有用。当然,还可以保存成txt同时指定编码格式。 操作数据 我们学会了load数据、save数据,那具体该怎样操作数据呢?...还是定义一个3×2的矩阵A: ? 首先,访问矩阵中的某一个元素可以使用矩阵名加行号、列号,A(3,2)表示A矩阵的第三行、第二列,即6....也可以用上面访问类似的方法去更改对应位置上的值,比如: ? 还可以给一个矩阵添加一列: ? 这个时候,A就变成了一个3×3的矩阵了。 还有一个比较有意思的操作,就是把A逐列拿出来组成一个新的列: ?...还可以有这样的骚操作: ? 将A、B两个矩阵按列或者行的形式拼接。有了上面这种操作提醒,我想你应该也知道了如何给一个矩阵添加一行了。 ?
octave:5> A .* B ans = 11 24 39 56 75 96 需要注意的是:上面的这些计算其实都没有改变运算符两边的矩阵的值,它们仅仅是进行了一个运算得到了一个结果....^”运算将矩阵中的每个元素都求平方,如: octave:7> A .^ 2 ans = 1 4 9 16 25 36 再定义一个列向量, octave:8> v=...0.33333 0.25000 0.20000 0.16667 同样的,像log()、exp()、abs()都可以往上招呼,都是对矩阵或向量的每个元素进行运算的。...octave:14> [val,in]=max(a) val = 15 in = 2 如果把max函数作用在矩阵上,就会得到每一列上的最大值,及所在的位置。...0.128823 0.512882 0.966183 0.093146 max函数 一个矩阵,可以按列找出每一列的最大值组成一个行、也可以按行找出每行的最大值组成一个列。
本系列课程吴老师建议的完成作业的编程工具是Matlab和Octave,Matlab大家都听说过,Octave可能会稍嫌陌生。...Octave是开源的工具,可以实现Matlab的很多功能,在一定程度上可以作为Matlab的替代品。...*的版本,如果你想和视频里保持一致,可以在这个网址:https://mirrors.ustc.edu.cn/gnu/octave/找到相对应的历史版本下载地址的列表。...安装完成后,在安装路径(如果默认安装,就在C盘下)下会有一个Octave的文件夹。 ? 安装完成后,在桌面上会有这样两个快捷方式: ?...你看,这个GUI版的和Matlab差不多的。 可以使用Octave做一些数学运算来尝尝鲜,比如算算加减法、幂指数,定义一个矩阵然后求一下它的逆矩阵。如下图: ?
冒号(:) 在同一优先级中,运算自左至右完成,对运算顺序不确定时,最好以“()”实现强制运算顺序 对于矩阵,右除A/B,相当于X*B=A的解矩阵,左除A\B,相当于A*X=B的解矩阵 2.1.2 关系运算符...>>A(8) = 9,编号是按照一列一列数下来,在向量A中,“21”对应的编号是4 >>A([1 3 5]) = 1 31 17 >>A([1 3;1 3]) = >>A(3,2) = 2,以逗号隔开的两个数字...(A)) = 9(max外面嵌套一个max的作用是求出矩阵所有元素中的最大值) min(A)= 0 0 3(min函数的作用是求出矩阵每一列中的最小值) min(min(A)) = 0(min外面嵌套一个...) mean(A)(mean函数的作用是计算矩阵每一列的平均数) mean(mean(A))(mean外面嵌套一个mean的作用是求出矩阵内所有元素的平均数) sort(A) = (sort函数的作用是将矩阵每一列元素从小到大进行排序...) sortrows(A) = (sortrows函数的作用是按照第一列中数值从小到大的顺序把每一行进行排序) size(A) = 3 3(size函数的作用就是计算出矩阵有多少行多少列) length
3、利用文件建立矩阵 当矩阵尺寸较大或为经常使用的数据矩阵,则可以将此矩阵保存为文件,在需要时直接将文件利用load命令调入工作环境中使用即可。同时可以利用命令reshape对调入的矩阵进行重排。...矩阵元素的序号就是相应元素在内存中的排列顺序。 在MATLAB中,矩阵元素按列存储。...(5) 矩阵的转置 对实数矩阵进行行列互换,对复数矩阵,共轭转置,特殊的,操作符.’共轭不转置(见点运算); (6) 点运算在MATLAB中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,...若关系成立,关系表达式结果为1,否则为0; (2) 当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。...4、矩阵的翻转 对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,…,依次类推。
3、利用文件建立矩阵 当矩阵尺寸较大或为经常使用的数据矩阵,则可以将此矩阵保存为文件,在需要时直接将文件利用load命令调入工作环境中使用即可。同时可以利用命令 reshape对调入的矩阵进行重排。...也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素的序号就是相应元素在内存中的排列顺序。在MATLAB中,矩阵元素按列存 储,先第一列,再第二列,依次类推。...(5) 矩阵的转置 对实数矩阵进行行列互换,对复数矩阵,共轭转置,特殊的,操作符.’共轭不转置(见点运算); (6) 点运算 在MATLAB中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,...若关系成立,关系表达式结果为1,否则为0; (2) 当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。...4、矩阵的翻转 对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,…,依次类推。
作为 MathWorks 开发的一种专用编程语言,MATLAB 允许矩阵运算、函数和数据绘图、算法实现、用户界面创建,以及与用其他语言(包括 C、C++、C#、Java、Fortran、Python)写成的程序进行交互...Octave Octave 可以看作是商业语言 MATLAB 的 GNU 版本,它是一种脚本矩阵语言(scripting matrix language),其语法有大约 95% 可与 MATLAB 兼容...Octave 由工程师设计,因此预装了工程师常用的程序,其中很多时间序列分析程序、统计程序、文件命令和绘图命令与 MATLAB 语言相同。...Octave 有很多可用工具箱,只要程序不要求图输出,那么在不进行大量更改的前提下,使用 Octave 运行和使用 Matlab 运行差不多。 图方面的能力是 Matlab 的优势。...Octave 使用 GNU Plot 或 JHandles 作为图程序包,JHandles 与 Matlab 中的图程序包更接近一些。
我在使用 Octave 的过程中,最舒服的地方就是它对矩阵操作的支持非常全面,使用起来也很简单,一些看似很复杂的逻辑,用 Octave 可能一两行就可以轻松解决。我将带大家认识和入门 Octave。...上面的说法不太通俗,简而言之,Octave 是一些科学计算软件,对于一些矩阵啊,一些高级的工程运算方面的工作,它比较擅长,而另一个功能类似的软件就是大名鼎鼎的 Matlab。...「%」号后面是注释,在运行的时候不会被编译进去。Octave 中的 True 和 False 是用 1 和 0 来表示的。同时,1 不等于 2 是通过 1 ~= 2 来表示的,而不是用 1 !...总结 这篇文章帮助大家认识一下 Octave ,并且介绍了安装步骤和一些基本的操作。Octave 强大的地方在它的矩阵运算和图形绘制上,我将在下篇文章详细的介绍。...Python 在机器学习领域,使用的很广泛,我们学习它自然不会错,而且 Python 本身的趣味性也值得你去学习,当然,这并不影响我们去使用和学习 Octave,因为,可能你看完我这两篇入门文章,就能够满足你在机器学习过程中大部分的使用需求了
而商业软件通常受到许可协议的限制,不允许用户对源代码进行修改。 社区支持和发展:许多开源科学计算软件拥有庞大的用户社区和活跃的开发者群体。这意味着用户可以从其他用户的经验、建议和贡献中受益。...它们提供了类似Matlab的功能,并且依靠广泛的用户社区进行支持和开发。 Octave Octave是一个功能强大、免费开源的科学计算软件,可以作为Matlab的替代选择。...其功能包括: 数值计算功能:Octave提供了强大的数值计算功能,包括矩阵操作、线性代数、数值积分、微分方程求解等。它支持复杂的数学运算和函数,可以进行高精度的数值计算。...跨平台支持:Octave可以在多个操作系统上运行,包括Windows、Mac和Linux等。这使得用户可以在不同的平台上使用相同的软件,并且能够与其他用户和研究团队进行无缝的合作和交流。...社区支持:Octave拥有一个积极的用户社区和开发者群体。用户可以从社区中获取帮助、分享经验,并参与到Octave的发展和改进中。
缺点 比 Python 慢,尤其是在迭代循环和非向量化函数中; 比 Matlab 绘图差,难以实现交互式图表; 创建独立应用程序的能力有限。...作为 MathWorks 开发的一种专用编程语言,MATLAB 允许矩阵运算、函数和数据绘图、算法实现、用户界面创建,以及与用其他语言(包括 C、C++、C#、Java、Fortran、Python)写成的程序进行交互...Octave Octave 可以看作是商业语言 MATLAB 的 GNU 版本,它是一种脚本矩阵语言(scripting matrix language),其语法有大约 95% 可与 MATLAB 兼容...Octave 由工程师设计,因此预装了工程师常用的程序,其中很多时间序列分析程序、统计程序、文件命令和绘图命令与 MATLAB 语言相同。...Octave 有很多可用工具箱,只要程序不要求图输出,那么在不进行大量更改的前提下,使用 Octave 运行和使用 Matlab 运行差不多。 图方面的能力是 Matlab 的优势。
xji: 代表样本矩阵中第 i 行的第 j 列,也就是第 i 个训练实例的第 j 个特征。...X−1: 矩阵 X 的逆,在 Octave 中,inv 函数用于计算矩阵的逆,类似的还有 pinv 函数。...X': 在 Octave 中表示矩阵 X 的转置,即 XT 下表列出了正规方程法与梯度下降算法的对比 条件 梯度下降 正规方程...这种情况下,如果还想使用正规方程法,在Octave中,可以选用 pinv 函数,pinv 区别于 inv,pinv 函数被称为伪逆函数,在矩阵不可逆的时候,使用这个函数仍可正确地计算出 θ 的值。...5 Octave/Matlab Tutorial 复习时可直接倍速回顾视频,笔记整理暂留。
领取专属 10元无门槛券
手把手带您无忧上云