Stanford公开课机器学习---week2-2.Matlab/Octave 快速教程
Basic Operations 基本操作
a =1.0000 15.0000 2.0000 0.5000
% ================format ================
>> format long
>> aa =1.000000000000000 15.000000000000000 2.000000000000000 0.500000000000000
% ================fprintf ================
>> fprintf('%f %f \n',1, 2);
1.000000 2.000000
% ================ ================
>> v=1:0.1:2 % start;步长;endv =1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 2.0000>> v=1:6v =1 2 3 4 5 6
% ================help ================
help
A=rand(3,2);
A=randn(3,2);
w = -6 + sqrt(10)*(randn(1,10000));
hist(w); %柱状图
eye();
ones();
zeros(1,3)
Moving Data Around 移动数据
% ================A ================
>> A=[1 2;3 4;5 6]
A =1 23 45 6
% ================ size ================
>>size(A) %返回矩阵维度:行数 列数
ans = 3 2
>>size(A,1) %返回矩阵维度:行数
ans = 3
>>size(A,2) %返回矩阵维度:列数
ans = 2% ================ length================
>>v = [1 2 3 4] %返回矩阵维度:行数
v = 1 2 3 4
>>length(v) %返回矩阵最大维度大小
ans = 4
>>length(A) %返回矩阵最大维度大小
ans = 3% ================ ================
pwd %当前路径
ls %当前路径下的文件
cd %切换目录
% ================ load clear save data ================
data = load('ex1data2.txt');who %当前工作空间的所有变量whos %当前工作空间的所有变量的详细信息clear variablename %删除变量
clear variable %删除当前工作空间的所有变量>> save test.mat A
>> save testtext.txt A –ascii % save as text (ASCII)
% ================ 矩阵 Matrix================
>> A=[1 2;3 4;5 6]
A =1 23 45 6>> A(3,2) %(行,列)ans =6>> A(2,:) %第二行ans =3 4>> A([1 3],:) %select the 1st and 3rd rowans =1 25 6>> A(:,2)=[10,11,12]A =1 103 115 12>> A=[A,[101;102;103]]%append another column vectorA =1 10 1013 11 1025 12 103>> A(:) %put all elements of A into a single vectorans =135101112101102103B=[11,12;13,14;15,16]B =11 1213 1415 16>> C=[A B]C =1 10 101 11 123 11 102 13 145 12 103 15 16A=[1 2;3 4;5 6]A =1 23 45 6>> C=[A;B]C =1 23 45 611 1213 1415 16
Computing on Data 计算数据
% matlab默认 * / 是矩阵操作 .* ./是对每个元素操作
>>A
ans = 1 23 45 6>>A.*B %对应位置的数据相乘,即element productans =11 2439 5675 96>>A.^2 % 对应位置的数据的平方ans =1 49 1625 36>>1 ./A % 对应位置的数据的除法ans =1.00000 0.500000.33333 0.250000.20000 0.16667>>-A % -1 * A
ans =-1 -2-3 -4-5 -6>>abs(A) % 绝对值>> A + 1 % 或者 A + ones(3,2)ans =2 34 56 7>>A'%转置
ans =1 3 52 4 6>> A<3 %小于3的元素对应位置为1(真),否则为0(假)ans = 1 10 00 0>> find(A<3) % A中哪些元素小于3:第一个,第四个(从上到下数,列优先)ans =14A =8 1 63 5 74 9 2>> [r,c]=find(A>=6) %r是行 c是列 所以大于等于6的数的位置是 第一行第一列,第3行第2列。。。r = 1312c =1233>> a=[1 15 2 0.5]a = 1.0000 15.0000 2.0000 0.5000>> [val,ind] = max(a) % val是a中最大的数的值,ind是这个值的位置val =15ind =2>> sum(a)ans = 18.5000>> sum(A) % 默认求每列的和,相当于sum(A,1)
% 1 — Default. Returns sum of elements in each column.
% 2 — sum(A,2)Returns sum of elements in each row.每行的和ans =9 12>> prod(a) %a中元素的乘积ans =15>> prod(A) %求每列的乘积,相当于prod(A,1)
% 1 — Default. Returns prod of elements in each column.
% 2 — prod(A,2)Returns prod of elements in each row.每行的乘积
ans =15 48 >> floor(a) %取下界ans =1 15 2 0>> ceil(a)%取上界ans =1 15 2 1>> rand(3)%创建3*3的random矩阵,每个值在[0,1]之间ans =0.6463 0.2760 0.16260.7094 0.6797 0.11900.7547 0.6551 0.4984>> max(rand(3),rand(3)) %在两个random的3*3矩阵中找对应位置的maxans =0.9597 0.2238 0.50600.5472 0.7513 0.81430.5853 0.8407 0.8909>> A=magic(3)A = 8 1 63 5 74 9 2>> max(A,[],1) %找每列最大值,1表示第一维,即列ans =8 9 7>> max(A,[],2) %找每行最大值,2表示第二维,即行ans =879>> max(A) %defaultis column maxans =8 9 7>> max(max(A)) %A中最大元素ans =9>> A(:)ans =834159672>> max(A(:))ans =9>> A=magic(9) % 行,列,对角线加起来的值相等的9*9矩阵A =47 58 69 80 1 12 23 34 4557 68 79 9 11 22 33 44 4667 78 8 10 21 32 43 54 5677 7 18 20 31 42 53 55 666 17 19 30 41 52 63 65 7616 27 29 40 51 62 64 75 526 28 39 50 61 72 74 4 1536 38 49 60 71 73 3 14 2537 48 59 70 81 2 13 24 35>> sum(A,1)%column sumans =369 369 369 369 369 369 369 369 369>> sum(A,2)%sum each rowans =369369369369369369369369369>> eye(9)ans =1 0 0 0 0 0 0 0 00 1 0 0 0 0 0 0 00 0 1 0 0 0 0 0 00 0 0 1 0 0 0 0 00 0 0 0 1 0 0 0 00 0 0 0 0 1 0 0 00 0 0 0 0 0 1 0 00 0 0 0 0 0 0 1 00 0 0 0 0 0 0 0 1>> A.*eye(9)%takethe element product of the 2 matrixans =47 0 0 0 0 0 0 0 00 68 0 0 0 0 0 0 00 0 8 0 0 0 0 0 00 0 0 20 0 0 0 0 00 0 0 0 41 0 0 0 00 0 0 0 0 62 0 0 00 0 0 0 0 0 74 0 00 0 0 0 0 0 0 14 00 0 0 0 0 0 0 0 35>> sum(sum(A.*eye(9))) %sum(sum(A.*flipud(eye(9)))) ans = 369>> flipud(A) %returns X with the order of elements flipped upside down along the first dimension. 列数据颠倒,第一行的到最后一行,第二行到倒数第二行,以此类推ans =5 63 41 2 >> A=magic(3)A =8 1 63 5 74 9 2>> temp=pinv(A) %矩阵求逆 伪逆矩阵temp =0.1472 -0.1444 0.0639-0.0611 0.0222 0.1056-0.0194 0.1889 -0.1028>> temp*Aans =1.0000 -0.0000 -0.0000-0.0000 1.0000 0.00000.0000 0.0000 1.0000
Plotting Data 绘图数据
>> t=[0:0.01:0.98];
>> y1=sin(2*pi*4*t);
>> plot(t,y1)
>> hold on;%plot new figure on the old ones
>> y2=cos(2*pi*4*t);
>> plot(t,y2,'r')
>> xlabel('time') %x坐标标签
>> ylabel('value') %y坐标标签
>> legend('sin','cos') %图例
>> title('my plot')
>> print -dpng 'myplot.png' %save as a file in default catalog
>> cd 'C:\Users\x\Desktop'; print -dpng 'myplot.png' % 保存到相应的路径
>> close %关闭图片
%分别显示两幅图像
>> figure(1);plot(t,y1);
>> figure(2);plot(t,y2)
%一幅图中显示两个subplot figure
subplot(1,2,1); % Divides plot a 1* 2 grid, access fisrt element
plot(t,y1);
subplot(1,2,2);% Divides plot a 1* 2 grid, access second element
plot(t,y2);
axis([0.5 1 -1 1]) %改变正在编辑的图的x坐标范围为[0.5 1]y坐标范围为[-1 1]
clf % clear figure
>> A=magic(5)A =17 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 9
>> imagesc(A) %可视化矩阵
>> imagesc(A), colorbar
>> imagesc(A), colorbar, colormap gray; % 逗号运算符,多个命令运行>> a=1;b=2;c=3; %多个命令运行,但不会输出
>> a=1,b=2,c=3 % 逗号运算符,多个命令运行,有输出a =1b =2c =3
Control Statements: for, while, if statement 控制语句:for,while,if 语句
>> v = zeros(10,1)
v =0000000000>> for i = 1:10,v(i) = 2^i;end;
>> v
v =2481632641282565121024
% ================ ================
>> indices = 1:10;
>> indices
indices =1 2 3 4 5 6 7 8 9 10>> for i = indices,disp(i);end;12345678910
% ================ ================
>> i = 1;
>> while i <=5,v(i) = 100;i = i + 1;end;
>> v
v =100100100100100641282565121024
% ================ ================
>> i = 1;
>> while true,v(i) = 999;i = i +1;if i == 6,break;end;end;
>> v
v =999999999999999641282565121024
% ================ ================
>> v(1)
ans =999
>> v(1) = 2;
>> if v(1) == 1,disp('The value is one');elseif v(1) == 2,disp('The value is two');elsedisp('The value is not one or two');end;
The value is two
% ================ function 函数 ================
function [y1, y2] = squareAndCubeThisNumber(x)
y1 = x^2;
y2 = x^3;
end[a, b] = squareAndCubeThisNumber(5);
>>b
b = 125
% ================代价函数方程 ================
function J = computeCostMulti(X, y, theta)
%COMPUTECOSTMULTI Compute cost for linear regression with multiple variables
% J = COMPUTECOSTMULTI(X, y, theta) computes the cost of using theta as the
% parameter for linear regression to fit the data points in X and y% Initialize some useful values
m = length(y); % number of training examples% You need to return the following variables correctly
J = 0;% ====================== YOUR CODE HERE ======================
% Instructions: Compute the cost of a particular choice of theta
% You should set J to the cost.J = sum((X * theta - y).^2)/(2*m);% =========================================================================end
Vectorization 向量化
下图右边的是用C++的库:
梯度下降
theta=theta−alpha/m∗X′∗(X∗theta−y);
Normal Equation Noninvertibility 正规方程 不可逆性
不可逆性矩阵:奇异矩阵,退化矩阵
计算逆矩阵有两个函数:pinv 和inv
区别:
- 伪逆函数pinv可以计算出θ\theta,即使 X’ * X 不可逆
不可逆的原因:
- 特征之间不线性独立
- 特征数量大于训练集的数量
Stanford公开课机器学习---week2-2.Matlab/Octave 快速教程相关推荐
- 【斯坦福公开课-机器学习】1.机器学习的动机和应用(吴恩达 Andrew Ng)
文章目录 0三个目标 0先修课程要求 基本工具 1-网址 2-邮箱 3-本系列课程链接 1机器学习的定义 1-1非正式定义 1-2正式的定义 2监督学习(Supervised Learning) 2- ...
- HTML4基本编译原理,Stanford公开课《编译原理》学习笔记(1~4课)
课程里涉及到的内容讲的还是很清楚的,但个别地方有点脱节,任何看不懂卡住的地方,请自行查阅经典著作<Compilers--priciples, Techniques and Tools>(也 ...
- Stanford公开课《编译原理》学习笔记(2)递归下降法
[摘要] javascript实现递归下降语法解析 示例代码托管在:http://www.github.com/dashnowords/blogs B站地址:[编译原理] Stanford公开课:[S ...
- Stanford公开课《编译原理》学习笔记(1~4课)
[摘要] 编译原理基础 示例代码托管在:http://www.github.com/dashnowords/blogs B站地址:[编译原理] Stanford公开课:[Stanford大学公开课官网 ...
- 虹软android工程师,虹软人脸识别技术公开课开讲!AI工程师如何快速进阶
原标题:虹软人脸识别技术公开课开讲!AI工程师如何快速进阶 随着刷脸乘坐公交.公租房人脸识别管理系统.景区人证核验入园等创新应用的加速普及,人脸识别技术已经在广泛的行业.领域中得到使用.在见证人脸识别 ...
- matlab将每次迭代结果画图,机器学习-线性回归以及MATLAB octave实现
参考资料: 斯坦福大学公开课 :机器学习课程 [第2集]监督学习应用.梯度下降 http://v.163.com/movie/2008/1/B/O/M6SGF6VB4_M6SGHJ9BO.html h ...
- octave运行matlab函数,机器学习-线性回归以及MATLAB octave实现
参考资料: 斯坦福大学公开课 :机器学习课程 http://v.163.com/movie/2008/1/B/O/M6SGF6VB4_M6SGHJ9BO.html http://blog.csdn.n ...
- 免费公开课 | 机器学习的第二次入门
机器学习第二次入门 AI科技大本营在线公开课第15期 主题:机器学习第二次入门 时间:9月6日 20:00-21:00 扫码添加小助手,备注:机器学习,邀你入群 入群福利:讲师交流+PPT分享+抽奖送 ...
- 斯坦福大学公开课机器学习:Neural Networks,representation: non-linear hypotheses(为什么需要做非线性分类器)...
如上图所示,如果用逻辑回归来解决这个问题,首先需要构造一个包含很多非线性项的逻辑回归函数g(x).这里g仍是s型函数(即 ).我们能让函数包含很多像这的多项式,当多项式足够多时,那么你也许能够得到可以 ...
最新文章
- 解决第一个div浮动,后面div覆盖的问题
- 如何在生产环境使用Btrace进行调试
- php 修改文件访问时间,php获取文件的创建、修改时间及访问时间
- python int32 int8_python-使用numpy视图将int32转换为int8
- 吴恩达机器学习(十)支持向量机(SVM)
- 小米手机访问电脑共享文件_小米随身Wifi让手机共享电脑文件教程
- 实现百度语音识别功能
- mysql显示1146_MySQL查询报错:ERROR 1146 (42S02): Table 'craw.sitePageConfig' doesn't exist
- STEP和IGES模型转换为适用Web的glb格式
- 最小费用流算法不完全指南-2017华为软件精英挑战赛
- “十问”彻底弄懂APS、ERP、MES的集成问题
- 蜘蛛和露珠的故事(得不到的和失去的)
- 自己修好了乐视电视!
- 拳王虚拟项目公社:拳王的个人IP打造之路,助你百度霸屏,与个人成长学习经历分享
- 软件定义的网络(中)
- ubuntu 环境搭建问题归纳
- 浅析城市交通现状及问题
- 电商黑马,集体倒在2019!
- Excel---条件格式与公式
- “单模型轻量化”技术全新上线——老子云服务开发企业近600家,平台用户超10万