机械学习(一)

目录

基础知识:

梯度下降:

多元梯度梯度和正规方程:

基本语法:

移动数据:

计算数据:

数据绘制:

控制语句:


基础知识:

一、监督学习:是指给算法一个数据集其中包含正确答案,算法的目的就是给出更多的正确答案。

例如回归问题:回归是指我们的目标是预测一个连续值输出

例如分类问题:其目的预测离散值输出

二、监督学习:对于给定的数据集,无监督学习算法可能判定该数据集有两个不同的簇。

例如聚类算法。

三、代价函数

梯度下降:

由代价函数引出梯度下降的知识,然后得出梯度下降算法

梯度下降算法:

根据梯度下降算法和线性回归模型得出线性回归算法:

线性回归算法:

矩阵相乘:

线代基础知识中的矩阵相乘的利用

(这里讲解了许多线代方面的知识例如矩阵加法、逆和矩阵、矩阵乘法特征之类的就不多讲解了)

多元梯度梯度和正规方程:

多元梯度下降:

多元梯度下降两个知识点:

  1. 特征缩放(Feature Scaling): 特征缩放是指将输入特征的值进行缩放或标准化,以便更好地进行梯度下降优化。这是因为不同特征可能具有不同的数值范围,如果不进行特征缩放,梯度下降可能会因为特征值的差异而收敛缓慢或不稳定。两种常见的特征缩放方法是:

    • 均值归一化(Mean Normalization):将特征值减去其均值,然后除以标准差。这使得特征的均值接近于零,标准差接近于一。
    • 最小-最大缩放(Min-Max Scaling):将特征值缩放到一个固定的范围,通常是[0, 1]。这种方法可以保持特征值的相对比例。
  2. 学习率(Learning Rate): 学习率是梯度下降算法中的一个超参数,它决定了每次更新模型参数时应该改变多少。学习率的选择对于梯度下降的性能至关重要。如果学习率太小,模型训练可能会收敛得很慢,而如果学习率太大,可能会导致模型参数跳过最优解并发散。

    通常,学习率的选择是一个经验性的过程。可以尝试不同的学习率值,并观察模型的性能。常见的学习率调整策略包括固定学习率、学习率衰减和自适应学习率方法(如Adam优化算法)。

正规方程:

正规方程和梯度下降对比(缺优点):

基本语法:

移动数据:

首先需要查看自己octave的位置

pwd

然后可以更改octave到需要移动数据的文件位置

cd 文件位置

可以查看是否准确

ls

ls可以查看自己的文件是否在里面

然后将数据移动到octave中

如果是二进制mat形式的文件这有两种方式

load 文件名
load(‘文件名’)

如果不是mat的形式需要另做代码

最后可以查看数据是否移动到octave中去

who/whos

whos可以更清楚的查看数据

如果想要删除某个数据:

clear 文件名

如果只有一个clear那么octave中的数据都会被清除

赋值数据: 

v=文件(1:10)  %表示数据文件前十个数据存储到了v中

存储数据:

save 自定义文件名 v

这样v就会被存储到文件位置中。

二进制文件转文本文件:

save 自定义文件名.txt v -ascii %save as text(ASCII)

索引:

A=[1 2;3 4;5 6]
A(2,:)  %输出第二行所有元素
A(:,2)  %输出第二列所有元素
A([1 3],:) %输出第一行和第三行所有元素
A=[A,[1;2;3]]  %加入一条新的行列式
A=(:) %输出一条列向量

计算数据:

A=[1 2;3 4;5 6]

1 ./ A  %.在这里代表只对A中的各个元素进行计算
1 / A   %代表对矩阵A进行计算

log(A) %表示对A中的各个元素进行以e为底的对A中的元素进行指数运算

exp(A)  %表示计算A中的各个元素以e为底的幂次方

abs(A)  %对A中的元素绝对值

A'  %表示对A矩阵的转置

A=[1 2 3 4]

max(A)  %输出A矩阵中最大的元素

[a,b]=max(A) %a表示A最大的元素,b表示在A中的索引

//注意:如果max的是一个矩阵,输出的会是每列的最大值

A<3 %表示对A中的每个元素进行比对计算输出的会是1 1 0 0

find(A<3)会输出小于3的所有索引

magic函数会制造一个幻方矩阵:矩阵的每行每列对角线相加都相等

[r,c]=find(A<3) %r代表行c代表列,会输出满足元素的行和列

help可以帮助你记起忘记的函数功能例如help find就能输出关于find函数的解释

A=[1 2;3 4;5 6]

sum(sum(A)) %输出所有元素相加之和

sum(A,1)  %输出每一列相加之和以行向量输出
sum(A,2)  %输出每行之和以列向量输出

prod(A) %输出所有元素相乘之积

floor(A) %输出所有元素向下取整
就是四舍五入
ceil(A) %输出所有元素向上取整

rand(3) %输出随机数的3*3矩阵

max(A,[],1) %输出每列的最大一个数成行向量(1在这代表第一维度也就是列)

max(A,[],2) %输出每行的最大一个数成列向量(2在这代表第二维度也就是阶)

(如果只有max(A)会默认为求每列最大值)

max(max(A)) %输出A矩阵中最大的元素

将A变为向量也是一样的答案max(A(:))

flipud函数是将矩阵上下倒转:

A =

   16    2    3   13
    5   11   10    8
    9    7    6   12
    4   14   15    1

>> flipud(A)
ans =

    4   14   15    1
    9    7    6   12
    5   11   10    8
   16    2    3   13

数据绘制:

先做出一个正弦函数和一个余弦函数:

>> t=[0:0.01:0.98];
>> y1=sin(2*pi*4*t);
>> plot(t,y1);
>> y2=cos(2*pi*4*t);
>> plot(t,y2);

想要两个函数同时出现需要引入一个hold on;

最后分别输入两个函数就能显示两个函数线路图。

在这个基础上我讲其中一个函数图用红色线表示(plot(t,y2,'r');)

然后设置x,y坐标系:

>> hold on;
>> plot(t,y1);
>> plot(t,y2,'r');
>> xlabel('time');
>> ylabel('value');
>> legend('sin','cos');    %将分好的线备注
>> title('my plot');    %命名标题
>> print -dpng 'myPlot.png'    %下载图片
>> cd 'C\Userprint -dpng 'myPlot.png'    %保存到指定文件夹

最后如果你想要关掉这个图片输入close就行了

>> figure(1); plot(t,y1);    %单独一个图片绘制y1
>> figure(2); plot(t,y2);    %单独一个图片绘制y2
>> subplot(1,2,1);            %将一个图片分为两个区域(第一个1代表第一个图片,第二个数字2代表划分为两个区域,第三个数字1代表对第一个区域绘制)
>> plot(t,y1);            %在第一个区域绘制y1
>> subplot(1,2,2);        %对第二个区域绘制
>> plot(t,y2);            %在第二个区域绘制y2

提一下axis函数:例如现在我输入axis([0.5 1 -1 1])意思就是将第二个图的横坐标的范围改为0.5到1。

clf函数:会将一副图清空。

这里再提一下将矩阵绘制图

imagesc(magic(15)),colorbar,colormap gray;

通过上面代码可以将矩阵可视化。

控制语句:

先设置一个v向量>>v=zeros(10:1)

for循环语句:

for i=1:10,  %i从1到10
 v(i)=2^i;
end;

while循环语句:

i=1;
while i<=5,
 v(i)=100;
 i=i+1;
end;

break语句:

>> i=1;
while true,
  v(i)=199;
  i=i+1;
    if i==6,
      break;
    end;
end;

 if-else语句:

>> v(1)=2;
>> if v(1)==1,
     disp('这是1');
   elseif v(1)==2,
     disp('这是2');
   else
     disp('这既不是1也不是2');
   end;
>>这是2

注:如果你想要退出octave可以输入quit或者exit。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

某用

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值