机器学习备忘录

plot用法:

plot函数输出散点图以及折线图,具体用法为:

plot(x,y) //输出y关于x的图像
plot(x,y,‘ro’) //‘ro’r为red,o为所有点表示为圈,即图形形状,此处可用
MATLAB中的不同形状的标记点:


1- 实线(默认)        -- 虚线        : 点线        -. 点划线       

2、o 圆圈        + 加号        * 星号        .3、x 叉号        s 方形        d 菱形

4^ 上三角        v 下三角        >  右三角        < 左三角

5、p 五角形        h 六角形

通过Markersize来改变点标记的大小
plot(x,y,'rx','Markersize',10)//10 代表x(图标)大小

在这里插入图片描述

MATLAB中(:,1)是什么含义

f(:,1)就是取f 矩阵的第1列。
f=[1,2,3; 3,4,6; 7,8,9]
f(:,1)

octave 出现error: can’t perform indexing operations for type错误

octave运行.m文件
把要运行的.m文件移动到当前octave的工作目录下,然后执行命令run(‘文件名.m’)

ones(x,y)

创建全部为 1 的数组
x,y分别表示行列

语句执行特性

加; 为不显示执行结果 不加为显示执行结果

MATLAB中的.* 和 * 和.^和 ^

. * : 是对应元素的相乘或者相除;点乘要求参与运算的两个两必须是维数相同;(点乘)

 * : 是矩阵相乘或者相除;要求前一个矩阵的列的维数等于后一个矩阵的行的维数。(叉乘)

.^:是对每个元素都进行乘幂运算。比如A是一个矩阵,A^2=A*A,(normal use)

^: 如:A.^2=B,B为A中所有元素都平方后的矩阵,即对A中的某个aij,B中对应位置的是aij^2

条件 前列 等于 后行 方可 矩阵相乘

在matlab中,什么是矩阵,什么是向量?

行列数 都大于1 的叫矩阵
行列数 其中一个为 1 的成为 行向量 或 列向量

X * theta 与theta * X 的区别

例子


X =                                       theta= 0
	1.0000    6.1101                             0 
    1.0000    5.5277
    1.0000    8.5186
    1.0000    7.0032
    1.0000    5.8598
    1.0000    8.3829
    1.0000    7.4764
    1.0000    8.5781
    1.0000    6.4862
    1.0000    5.0546
    1.0000    5.7107
    1.0000   14.1640
    1.0000    5.7340
    1.0000    8.4084
    1.0000    5.6407
    1.0000    5.3794
    1.0000    6.3654
    1.0000    5.1301
    1.0000    6.4296
    

在这里插入图片描述
X每一行都是一对数据
每对数据都与theta叉乘
得到的结果即为第一个x1 与 Θ相乘的结果
得到的结果即为第一个x2 与 Θ相乘的结果

得到的结果即为第一个xn 与 Θ相乘的结果
‘*’ 前 为样本集 ‘ * ’后为θ (样本集要乘的矩阵系数)

过拟合与欠拟合

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

matlab中./与/有什么区别

(也就是说加 点 是 为了计算矩阵
点运算是处理元素之间的运算
直接/在矩阵计算中只能处理符合矩阵运算法则的运算
矩阵计算和作图都是点运算
在对数值计算时,“./”和“/”其实是没有区别的。
例:对于矩阵A=[a b c d],1./A=[1/a 1/b 1/c 1/d],而1/A表示的是A的逆
1 ./点除

如果a、b是矩阵,a./b就是a、b中对应的每个元素相除,得到一个新的矩阵;
如果a、b是两个数,那么a./b就是普通的除法
2 /
如果a、b是矩阵, 比如aX=b,求出X。那么X=a\b(代表a的逆乘以b);或者Xa=b,X=b/a(代表b乘以a的逆)。
如果a、b是两个数,那么a/b就是普通的除法。

matlab function函数

function [输出变量] = 函数名称(输入变量)

function y=myfunction(a,b)其中a,b是输入函数的参数,y是函数返回的值。当需要返回多个值时,可以将y看作一个数组,或者直接将函数的开头写成如function [x,y]=myfunction(x,y)的形式。然后就是定义函数的内容,通俗的说就是怎样由输入参数a,b得到返回值y。比如最简单的y=a+b。

y ’ * log(sigmoid(X*theta)

y的转置乘log

Fminunc和Optimset

costFunction函数是自定义函数;输入是theta,输出是jVal和gradient,其中jVal是对照左边求损失函数的,gradient是对照左边求损失函数的偏导。

Optimset函数:‘Gradobj’指用户自定义的目标函数梯度;‘MaxITer’指最大迭代次数,‘100’也就是最大迭代次数,这一项只能为整数。

Fminunc函数:有三个输入,第一个输入为costfunction函数的句柄,第二个输入为设置的初始theta值,第三个输入为optimset函数的返回值。
有三个输出,optTheta为经函数计算得出的theta值,也就是损失函数最小时theta的取值,以上图为例,令损失函数取最小值的theta值都是5,下面会验证。exitFlagexitflag返回值为0或1,表示在theta点定义的损失函数是否收敛,值为1表示收敛。functionVal为costFunction函数中jVal的值。

MATLAB的函数句柄

句柄(handle)是 MATLAB 的标准数据类型之一。利用函数句柄可以实现对函数的间接调用,可以通过将函数句柄传递给其他函数实现对函数的操作,也可以将函数句柄保存在变量中。

函数句柄通过@符号创建,语法为:
fhandle = @functionname

其中,functionname 为函数名,fhandle 就是为该函数创建的句柄。

函数句柄也可以通过创建匿名函数的方式创建,语法为:
fhandle = @(arglist)expr

其中,expr 为函数体,arglist 为逗号分隔开的输入变量列表。比如,expr = @(x) x.^2 创建了用于计算输入变量平方的匿名函数。

如果输入变量为空,则 arglist 为空。t = @()datestr(now) 匿名函数的输入变量为空。

可以通过函数句柄实现对函数的间接调用,其调用语法为:
fhandle(arg1, arg2, …, argN) %其中fhandle为函数句柄

理解语句[theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options)

理解语句[theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options)的意思为:
(1)@(t)(costFunction(t, X, y)为匿名函数,原本函数costFunction为输入三个参数theta,X,y输出两个参数J,gradient,通过匿名函数后,其输入参数变成一个t,另外两个参数X,y变成固定值(X,y前面已经定义),故该表达符合fminunc函数的第一个输入参数,即输入为函数,且该函数仅有一个输入,输出第一个值为计算的最小值,输出第二个值为用户自定义梯度计算值;
(2)initial_theta为寻找局部最小值的起始位置;
(3)options为函数fminunc的优化配置,即最大迭代次数为400,用户梯度函数设置为On;
(4)根据解释[X,FVAL] = fminunc(FUN,X0,…) returns the value of the objective function FUN at the solution X。
[theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options)表示的是返回函数costFunction的局部最小值,其在点theta处,函数costFunction在theta处值为cost。

Suppose you are learning to recognize cars from 100×100 pixel images (grayscale, not RGB). Let the features be pixel intensity values. If you train logistic regression including all the quadratic terms (xixj) as features, about how many features will you have?

有10000个像素点,最后结果取C 2 10000 ,so,50000000,

XOR (exclusive OR)

如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。

ravel

在这里插入图片描述

需要导入numpy库
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值