Coursera-AndrewNg(吴恩达)机器学习笔记——第二周
一.多变量线性回归问题(linear regression with multiple variables)
- 搭建环境Octave
Windows的安装包可由此链接获取:https://ftp.gnu.org/gnu/octave/windows/,可以选择一个比较新的版本进行安装,本人win10操作系统,安装版本4.2.1,没有任何问题。注意不要安装4.0.0这个版本。当然安装MATLAB也是可以的,我两个软件都安装了,在本课程中只使用Octave就已经足够用了! - 符号标记:n(样本的特征数/属性数目),
表示第i个训练样本的第j个特征。样本可能有多个属性值,在房价预测案例中,可能有多种因素如房屋大小、楼层、装修程度等共同决定最终房价。 预测函数(Hypothesis):hθ(x)=θ0+θ1x1+θ2x2+……+θnxn,记x0=1(
)

所以预测函数使用矩阵相乘的形式可写为:hθ(x)=ΘTX.代价函数(Cost Function)形式:其中参数θn的数目和特征数n相同。

- 梯度下降算法:(注意同时更新所有θ值)

- Feature Scaling(特征缩放):确保各个特征的取值近似,否则收敛速度会很慢。建议:将所有特征取值近似缩放到[-1,1]之间,当然也不必特别精准,只是为了梯度下降运算速度更快。
方法(Mean Normalization):xi=(xi-μi)/si,μi是xi的平均值,si是xi的标准差或者是xi的范围(xmax-xmin)。x0不需要进行特征缩放,因为我们在前面将x0记为1。 - 学习速率α:α过大,梯度下降难以收敛,代价函数J(θ)甚至会变大。α过小,梯度下降收敛速度慢。如何判断已经收敛:两次迭代代价函数J(θ)差值是否小于某一个阈值(不好找)。
- 正规方程(Normal Equation):求解θ的解析方法,该方法不需要做特征缩放。
公式如下:θ=(XTX)-1XTY Octave代码:pinv(X`*X)*X`*Y,或者使用inv函数
正规方程和梯度下降方法求解θ特点:不需要选择学习速率α,不需要进行迭代求解。当特征数目n>106很大时,梯度下降可以很好的求解,但是正规方程的求解速度将会很慢。
当存在冗余的特征,十分的接近的特征或者特征过多(n>m)时,XTX会不可逆,这时使用Octave的pinv函数依旧可以求出结果。
二.Octave的简单使用
变量的赋值
%后内容表示注释 ~=为不等号 &&逻辑与 ||逻辑或 xor( , )逻辑异或 format long/short控制输出格式
PSI('>>'); %简化命令行显示
a=3 %变量赋值
a=3; %末尾;可以抑制打印输出
disp(a); %打印变量值,或者直接输出字母a
disp(sprintf('2 decimals: %0.2f',a)) %类似C语言的形式输出两位小数
A=[1 2;3 4;5 6] %定义一个矩阵
V=1:0.1:2 %定义一个1行11列矩阵
C=2*ones(2,3) %定义一个2行3列的矩阵,所有元素都是2
W=zeros(1,3) %定义一个1行3列的矩阵,所有元素都是0
rand(3,3) %随机赋值3*3矩阵
randn(3,3) %随机赋值3*3矩阵,符合高斯分布,平均值为0,方差为1
w=-6+sqrt(9)*(randn(1,1000)); 变量w赋值,w是一个均值为-6,方差为3的矩阵
hist(w) %画直方图,hist为统计函数,默认统计10个区间中,出现w的个数,纵轴值为个数
eye(4)%设置4阶单位矩阵
- 数据的处理
pwd命令显示当前路径 cd命令转换路径 ls命令显示文件列表 who命令显示工作空间中的变量 whos命令显示变量的详细信息
clear features X删除变量X 导入数据命令load featuresX.dat或load('featuresX.dat') clear命令清空工作空间中所有变量
size(A) %求矩阵的维数,返回的值也是一个矩阵,也可用于求向量的维数
length(v) %求向量的维数,一般不用于矩阵
v=priceY(1:10) %将priceY中前10个数据存入v中
save hello.mat v; %将v的数据存入硬盘中,.mat格式文件按照二进制形式存取,占用空间小
save hello.txt v -ascii %将v中的数据按照字符形式进行存储
A(3,2) %矩阵A3行2列的元素值
A(2,:) %矩阵A2行上所有元素的值
A([1 3],:) %矩阵A中1,3行所有元素的值
A(:,2)=[10;11;12] %对矩阵A第二列所有元素重新赋值
A=[A,[1;2;3]] %矩阵A新增一列
A(:) %将矩阵A中元素按列拼接,输出一个向量
C=[A B] %将矩阵A,B左右拼接
C=[A;B] %将矩阵A,B上下拼接
A.*B %矩阵A,B同阶,对应元素相乘
A.^2 %矩阵A中元素做平方
1./A %矩阵A中元素取到数
log(v) %求自然对数,e为底 exp(v) %求指数 abs(v) %求绝对值 A`为A的转置 pinv(A)为A的逆
val=max(a) %返回向量中的最大值
[val ind]=max(a) %返回向量中的最大值和最大值的索引
a<3 %该操作对向量中的元素逐个进行比较 find(a<3) %显示满足条件的下标
A=magic(3)%生成一个3*3维的magic matrix,每行每列值的和相等
[r,c]=find(A>7) %返回满足条件的行列向量索引
sum(a) %将向量所有元素值相加 prod(a) %求向量所有元素值的乘积 floor(a) %将所有元素指向下取整 ceil(a) %将所有元素值向上取整
max(A,[],1) %求每列最大值 max(A,[],2) %求每行最大值 max(max(A)) %求矩阵A中的最大值,也可写为max(A(:))
sum(A,1) %求矩阵A每列的和 sum(A,2) %求矩阵A每行的和
sum(sum(A.*eye(9))) %计算对角线值的和 sum(sum(A.*flipud(eye(9)))) %计算反向对角线的和
绘制数据



- 语句和函数
v=zeros(,)
for i=:, %for语句
v(i)=^i;
end; i=1;
while i<=5, %while语句
v(i)=100;
i=i+1;
end; i=1;
while true, %break语句
v(i)=999;
i=i+1;
if i==6,
break;
end;
end; v(1)=2;
if v(1)==1, %if-elseif-if语句
disp('the value is one');
elseif v(1)==2,
disp('the value is two');
else
disp('the value is not one or two')
end;
- 函数:创建文件,以函数名来命名,以.m后缀结尾。
- 创建Octave搜索路径:% Octave search path (advanced/optimal)
addpath('c:\Users\ang\Desktop')
函数文件在该路径下,自动检索。 - Octave语法中函数可以返回多个值。
- 向量化:建议计算时进行向量计算,不使用循环。
Coursera-AndrewNg(吴恩达)机器学习笔记——第二周的更多相关文章
- Coursera-AndrewNg(吴恩达)机器学习笔记——第二周编程作业
一.准备工作 从网站上将编程作业要求下载解压后,在Octave中使用cd命令将搜索目录移动到编程作业所在目录,然后使用ls命令检查是否移动正确.如: 提交作业:提交时候需要使用自己的登录邮箱和提交令牌 ...
- Coursera-AndrewNg(吴恩达)机器学习笔记——第二周编程作业(线性回归)
一.准备工作 从网站上将编程作业要求下载解压后,在Octave中使用cd命令将搜索目录移动到编程作业所在目录,然后使用ls命令检查是否移动正确.如: 提交作业:提交时候需要使用自己的登录邮箱和提交令牌 ...
- Coursera-AndrewNg(吴恩达)机器学习笔记——第一周
一.初识机器学习 何为机器学习?A computer program is said to learn from experience E with respect to some task T an ...
- 吴恩达机器学习笔记(六) —— 支持向量机SVM
主要内容: 一.损失函数 二.决策边界 三.Kernel 四.使用SVM (有关SVM数学解释:机器学习笔记(八)震惊!支持向量机(SVM)居然是这种机) 一.损失函数 二.决策边界 对于: 当C非常 ...
- Machine Learning|Andrew Ng|Coursera 吴恩达机器学习笔记
Week1: Machine Learning: A computer program is said to learn from experience E with respect to some ...
- Machine Learning|Andrew Ng|Coursera 吴恩达机器学习笔记(完结)
Week 1: Machine Learning: A computer program is said to learn from experience E with respect to some ...
- 吴恩达机器学习笔记 —— 19 应用举例:照片OCR(光学字符识别)
http://www.cnblogs.com/xing901022/p/9374258.html 本章讲述的是一个复杂的机器学习系统,通过它可以看到机器学习的系统是如何组装起来的:另外也说明了一个复杂 ...
- [吴恩达机器学习笔记]12支持向量机5SVM参数细节
12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.5 SVM参数细节 标记点选取 标记点(landma ...
- [吴恩达机器学习笔记]12支持向量机3SVM大间距分类的数学解释
12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.3 大间距分类背后的数学原理- Mathematic ...
随机推荐
- javascript setinterval 正确的语法
前几天我用setinterval 写了一个小程序,这个setinterval是用来干什么的我就不解释了. 写的方法在其它的浏览器里都能用,后来测试组的同事拿去一测就出了问题.因为她们爱用360,还有I ...
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(十)
打开Arm.h,在其接口中添加一个新方法: -(void)armShoot; 接下来在Arm.m中实现该方法: -(void)armShoot{ CGPoint startPoint = [self ...
- 分布式进阶(九)Ubuntu下使用nsenter进入Docker容器
使用nsenter进入Docker容器 Docker容器运行后,如何进入容器进行操作呢?起初我是用SSH.如果只启动一个容器,用SSH还能应付,只需要将容器的22端口映射到本机的一个端口即可.当我启动 ...
- chrome "Provisional headers are shown"
我的问题的,每次打开浏览器,点开有视频的页面(云平台的存储),然后当视频还没有加载完,就马上关闭,连续操作很多次(测试的暴力测试把),F12查看就有很多很多在加载中的连接,因为连续点击太多次了,第一个 ...
- Linux 操作之基础命令
1.罗列出文件和文件夹 –ls ls 是帮助我们罗列出当前目录下的所有的文件和文件夹,当然了,还可以加上许多选项,最为重要的是所加的参数可以进行组合,起到让人意想不到的效果,下面就是常用的一些ls的及 ...
- centos下安装mysql(安装,启动,停止,服务端口查询,用户密码设定)
http://www.2cto.com/database/201305/208114.html http://smilemonkey.iteye.com/blog/673848 netstat -na ...
- centos6.2安装桌面环境 与中文支持
yum groupinstall "X Window System" //安装Xorgyum groupinstall "Desktop" //安装GNOMEy ...
- ITU-T Technical Paper: IP服务性能模型
本文翻译自ITU-T的Technical Paper:<How to increase QoS/QoE of IP-based platform(s) to regionally agreed ...
- ping通windows下虚拟机上的linux系统
直接ping linux的ip 直接就失败了. 现在我的windows有两个虚拟网卡 接下来让linux使用VMnet8网卡 修改我的linux系统下的lo网卡的ip地址为VMnet8的ip地址 现 ...
- javascript语言扩展:可迭代对象(2)
在文章迭代器(1)中我们简单介绍了如何创建一个可迭代对象:出于某种考虑你可能想从可迭代对象中显式获取一个迭代器对象,这时你可以调用Iterator()函数(该函数是定义在JavaScript 1.7中 ...