社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

机器学习笔记 DAY9

Peng_001 • 4 年前 • 350 次点击  

012 正规方程及不可逆性

  • 有些矩阵是不可逆的。即不存在 X*X**-1=I 。一般称这类不可逆矩阵为奇异或退化矩阵。
  • 一般方程的推导着实需要一定的矩阵基础。放弃了。。*。尝试以后再来学习。


  • 结论如上。

通过brew 安装octave

  • 由于反复报错,直接卸载了先。
 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
  • 再次安装
 /bin/bash -c "$(curl -fsSL --insecure https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
  • 安装octave
brew update
brew install octave 
  • 启动octave
    终端直接输入 octave 即可

  • 使用octave

octave:1> 3*1
ans =  3
octave:2> 12/2
ans =  6
octave:3> 23+3
ans =  26

013 Octave 基本教程

Octave是一种很好的原始语言(prototyping language),使用Octave你能快速地实现你的算法。

  • 有些人会使用matlab学习机器学习。(ps: 其他还有Python、NumPy 和R)

  • 相比起这些,octave 是开源的(免费),而且作为高级语言,它也能实现机器学习中必要的算法。

  • 可以通过指令修改默认提示octave 界面

PS1('>> ')
# 修改为空字符。当然也可以使用其他的字符更改。
  • 可以通过";" 抑制打印输出
octave:12> a = 3
a =  3
octave:14> a =3;
# 此时就没有输出了

1. 简单数学运算

基本数学运算、逻辑运算

2. 矩阵

  • 生成矩阵的方法

通过分号分离矩阵元素建立

A = [1 2; 3 4; 5 6]
# 输出
A =

   1   2
   3   4
   5   6

列向量为

octave:36> C =[1;2;3]
C =

   1
   2
   3

行向量为

octave:35> B = [2 3 1]
B =

   2   3   1

通过指令构建矩阵

octave:37> a = ones(2,3)
# 建立 2x3 矩阵,且元素都为1
a =

   1   1   1
   1   1   1
octave:38> v = [1:2:10]
# 建立行向量,从1-10,且间隔为2
v =

   1   3   5   7   9
  • 使用rand 命令
octave:42> rand(2,2)
# 生成2x2 矩阵,元素在0-1 取值
ans =

   0.366373   0.258291
   0.030356   0.630887
  • 生成单位矩阵 eye
octave:46> eye(3)
ans =

Diagonal Matrix

   1   0   0
   0   1   0
   0   0   1
  • 绘制直方图
hist(1,3)

014 在octave 中移动数据

  • 通过size()返回矩阵尺寸
octave:49> size(A)
# A为3x2 矩阵
ans =

   3   2

octave:50> A
A =

   1   2
   3   4
   5   6
octave:55> size(A,1)
# 返回矩阵的第一个元素(矩阵的行)。
# ps:矩阵的列为第二个元素。也即size(A,2) 会返回2
ans =  3
  • 在向量中使用length()返回长度。一般不在矩阵中使用。
octave:56> B = [1:6]
B =

   1   2   3   4   5   6

octave:57> length(B)
ans =  6
  • octave遵从一般linux/unix 指令
    如ls,cd,pwd等等。

  • 载入和保存文件

load(' ')
# 加载文件xxx
who
# 显示当前环境下变量
whos
# 显示当前环境下变量及其基本参数,attr, name, size, bytes, class
save XXX.xxx v
# 保存变量v到文件XXX中
save hello.txt v -ascii
# 将文件保存为ascii形式
  • 合并矩阵
C = [A B]
# 将矩阵B直接加在矩阵A的左边(需满足A、B矩阵行数相同)
C =[A;B]
# 将矩阵B直接加在矩阵A的下方(需满足A、B矩阵列数相同)

014 Octave 计算数据

  • 通过.x(运算符号)实现元素间的运算
    如 3X2 矩阵和 3X2矩阵直接相乘 A*B 会报错。但可以通过 A.*B 计算元素之间的运算(相同规格的矩阵)。
B =

   2   3
   4   5
   6   7
A =

   1   2
   3   4
   5   6
octave:88> A.*B
ans =

    2    6
   12   20
   30   42
  • 其他常用运算符号(对矩阵中元素的计算)
log(v)
# 对数
exp(v)
# 幂
v+1
# 元素均+1,也可以构造和v同规格矩阵,相加即可
  • 矩阵的转置
A =

   1   2
   3   4
   5   6

octave:98> A'
ans =

   1   3   5
   2   4   6
  • 一些有用的函数
[val, ind] =max(a)
# 将a矩阵中每列元素中最大值保存为1*n的矩阵存入val中(n为a矩阵列数)。
#并将最大值的索引(最大值所在的行数)存入ind并保存为1*n的矩阵。
a<3
# 遍历a中所有元素,满足返回1,否则为0
find(a<3)
# 返回满足条件的a中的元素的值
magic(3)
# 生成3X3的矩阵,并满足行列对角线加和数值均相等。
  • 求矩阵的逆
    若A与a为逆,则A*a = I(单位矩阵)
a = pinv(A)
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/57149
 
350 次点击