吴恩达机器学习笔记 001

吴恩达机器学习笔记

基础概览

当前分类

  1. 监督学习 supervised
    1. 回归 regression
    2. 分类 classification
  2. 非监督学习unsupervised
    1. cluster
  3. 强化学习 reinforcement
  4. recommender systems

基本模型

  • 假设函数
  • 欲求参数
  • 代价函数:常用的这个叫 square error cost function
  • 目标:通过逐步确定参数,使得代价最小

在这里插入图片描述

=================================================

怎么确定参数呢?

确定参数方法1 梯度下降法

gradient descent : 适合大多数情况

在这里插入图片描述

  • alpha 是 学习率,就是逐步靠近代价函数最小值时,那个”逐步“的步子长度。
  • 注意两种编程 求参数的方法,右边那个是错的。

在这里插入图片描述

确定参数方法2 正规方程法

normal equation

既然是求代价函数的最小值,求导为0就好啊!

  • 中间要求矩阵的逆,不适合特征值太多的情况,一般大于10000特征值,就不能用这个。
  • 不需要特征放缩之类的。

推导过程省略,最优参数求解方程如下

在这里插入图片描述

多元线性回归

线性回归 = 平方差代价函数 + 梯度下降

多元线性回归的模型

在这里插入图片描述
在这里插入图片描述

先看我 : 一些技巧

feature scaling 特征放缩
x1 = size 范围是0-2000

x2 = num  范围是0-5

这种情况下画的图是 瘦长 的,回归可能很慢

可以这样处理

x1 = x1/2000

x2 = x2/5
mean normalization 均值归一
x1 = size 范围是0-2000

x2 = num  范围是0-5

减去均值,再除以总数

x1 = (x1 - mean(x1))/2000
x2 = (x2 - mean(x2))/5

然后再处理

确保学习率alpha
  • 太大,就会震荡,甚至发散
  • 太小,收敛速度太慢

octave操作

系统命令

代码功能
ps1(‘>> ’)更改命令行提示符
disp()disp(pi) :显示一个东西
format long/short定义全局显示方式,默认是short
pwd当前所在目录
cd切换目录
ls看看当前目录有啥
who当前内存中的变量
whos查看内存中变量的详细信息
clear清空内存中所有变量
loadload aa.txt , aa = load(‘aa.txt’),加载文件
savesave xxx.mat V :把矩阵V保存到xxx.mat,使用二进制格式。
savesave xxx.txt V --ascii :把矩阵V保存到xxx.txt,人类可直接阅读
addpath(‘c:\users’)添加搜索路径

运算符

代码功能
+ - * /四则运算
^2^4 == 16
==判断是否相等
~=判断是否不等
&& ||与 或
xor()异或

矩阵命令

代码功能
ones(2,3)2x3 的矩阵, 全是1
zeros(2,3)2x3 的矩阵, 全是0
rand(2,3)2x3 的矩阵, 0-1之间的随机数
randn(2,3)2x3 的矩阵, 0-1之间正态分布的随机数
size()查看 行x列
size(A,1)查看第一维度,也就是行数
size(A,2)查看第二维度,也就是列数
length([向量V])长度
magic(8)生成一个8x8的魔幻方阵,魔幻方阵的行列对角之和 均相等。
*A*B表示 矩阵乘法
.*.表示对应的每个元素,A.*B表示 对应元素相乘
A,^2矩阵每个元素都都平方
1./A矩阵每个元素都倒数
log()求log
exp(n)求e^n
abs()绝对值
A’求转置
pinv(A)求逆
max(A)每列的最大值,和max(A,[],1) 效果一样
max(A,[],2)每行的最大值
sum()sum(A,1)表示按列求和,sum(A,2)表示按行求和,默认按列
prod()prod(A,1)表示按列求积,prod(A,2)表示按行求积,默认按列
floor()向上取整
ceil()向下取整
[r,c] = find(A>=5);[r,c][r,c]会返回每个查找出来的元素的索引
flipud()矩阵垂直翻转

for example:

求对角线之和:sum(sum(A.*eye(5)))

求副对角线之和:sum(sum(flipud(eye(5))))

绘图函数

代码功能
plot(x,y)绘制曲线
hist(object,hist_num)hist(randn(1,1000),100) : 用一百个hist绘图正态分布
subplot(1,2,1)创建1x2的图像,使用第一个
figure(n)画出一张图,编号为n
imagesc(V);colorbar;colormap grey;方块灰度图像
title设置标题
xlabel(‘xx’)设置x轴文字
ylabel(‘yy’)设置Y轴文字
legend(‘tips’)给每个图形打上标签
axis([0 1 -1 1])制定x轴范围是(0,1),y轴的范围是(-1,1)
print -dpng ‘mytest.png’在当前目录生成图像
close关闭所有图像

for example:

常常把一些列操作放在一行,直接处理好一张图片

逗号和分好都能用。分号会屏蔽即时显示。

plot(xxxx);hold on;plot(yyyy);             %把两张图绘到一起
figure(1),plot(x,y),legend('hello')

玩耍矩阵

移动数据
# 矩阵基本操作

行内用 空格或者逗号 隔开,行间用;隔开
A = [1 2 ; 3 6 ; 87 14]

取出第二列
A = [:,2]

第三行第一个
A(3)

第三行
A(3,:)

第一行 和 第三行
A([1,3],:)

修改第二列
A(:,2) = [10,11,12]

加行
A = [A;[3,4]]

加列
A = [A,[12,54,6]]

合并两个矩阵
C = [A,B]
C = [A;B]

控制语句(if for while 函数)

if for while
for i=1:10; disp(i); end;

if V(1)==1; xxx;
elseif v(2)==2; xxxx;
else xxxx;
end;

while true; xxxx; end;
函数

octave函数得写到文件里面

比如想要一个名为 two_test() 的函数,

  1. 建立一个文件,名为 two_test.m

  2. 写入如下

    function [y1,y2] = two_test(x);
    y1 = x^2
    y2 = x^3
    
  3. addpath 或者 cd到函数文件的目录 ,直接使用函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值