读书频道 > 网站 > 网页设计 > 机器学习算法原理与编程实践
1.2.4 理解数学公式与Numpy矩阵运算
15-11-26    下载编辑
收藏    我要投稿   
本书从结构上阐明了研究机器学习理论和算法的方法。最重要的不是数学,也不是这些算法本身,而是思想的发展过程,这与之前所有的书籍都有所不同。全书分为三条主线:第一条主线:从第一代神经网络(线性分类器)立即去当当网订购

为了便于理解后续章节算法部分的讲解,本节将常用的矩阵数学公式和程序代码对应出来,读者可根据自己需求有选择的学习。因使用矢量编程的方法,矩阵的基本运算得到了较大的简化。

1.矩阵的初始化:

import numpy as np  # 导入numpy包

1.1创建一个3*5的全零矩阵和全1矩阵

myZero = np.zeros([3,5]) # 3*5的全零矩阵
print myZero
myOnes = np.ones([3,5]) # 3*5的全1矩阵
print myOnes
输出结果:
[[ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]]
 [[ 1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.]]

1.2生成随机矩阵:

myRand = np.random.rand(3,4) # 3行4列的0~1之间的随机数矩阵
print myRand
输出结果:
[[ 0.79473503  0.4682515   0.53933591  0.94568244]
 [ 0.52199975  0.81190881  0.41920671  0.16756969]
 [ 0.57211218  0.53727222  0.83488426  0.30227915]]

1.3单位阵:

myEye = np.eye(3) # 3*3的单位阵
print myEye
输出结果:
[[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]]

2.矩阵的元素运算:是指矩阵在元素级别的加、减、乘、除运算

from numpy import *  #导入numpy包

2.1元素相加和相减:条件,矩阵的行数和列数必须相同

数学公式:

 

myOnes = ones([3,3])  # 3*3的全1矩阵
myEye = eye(3)       # 3*3的单位阵
print myOnes+myEye  # 矩阵相加
print myOnes-myEye   # 矩阵相减
输出结果:
[[ 2.  1.  1.]
 [ 1.  2.  1.]
 [ 1.  1.  2.]]
[[ 0.  1.  1.]
 [ 1.  0.  1.]
 [ 1.  1.  0.]]

2.2矩阵数乘:一个数乘以一个矩阵

数学公式:
 

mymatrix = mat( [[1,2,3],[4,5,6],[7,8,9]])
a = 10
print a*mymatrix
输出结果:
[[10 20 30]
 [40 50 60]
 [70 80 90]]

2.3矩阵所有元素求和:

数学公式:

mymatrix = mat([[1,2,3],[4,5,6],[7,8,9]] )
print sum(mymatrix)
输出结果:
45

2.4矩阵各元素的积:矩阵的点乘同维对应元素的相乘。当矩阵的维度不相同时,会根据一定的广播规则将维数扩充到一致的形式,

数学公式:(A.*B)ij = Aij* Bij
mymatrix = mat( [[1,2,3],[4,5,6],[7,8,9]])
mymatrix2 = 1.5*ones([3,3])
print multiply(mymatrix,mymatrix2)
输出结果:
[[  1.5   3.    4.5]
 [  6.    7.5   9. ]
 [ 10.5  12.   13.5]]

2.5 矩阵各元素的n次幂:n=2

数学公式:
 

mylist = mat( [[1,2,3],[4,5,6],[7,8,9]])
print power(mymatrix,2)
输出结果:
[[ 1  4  9]
 [16 25 36]
 [49 64 81]]

4.矩阵的乘法:矩阵乘矩阵

数学公式:

 

from numpy import *

mymatrix = mat([[1,2,3],[4,5,6],[7,8,9]])
mymatrix2 = mat([[1],[2],[3]])
print mymatrix*mymatrix2
输出结果:
[[14]
 [32]
 [50]]

5.矩阵的转置:

数学公式:

 

from numpy import *

mymatrix = mat([[1,2,3],[4,5,6],[7,8,9]])
print mymatrix.T   # 矩阵的转置
mymatrix.transpose()  # 矩阵的转置
print mymatrix
输出结果:
[[1 4 7]
 [2 5 8]
 [3 6 9]]
[[1 2 3]
 [4 5 6]
 [7 8 9]]

5. 矩阵的其他操作:行列数、切片、复制、比较

from numpy import *

mymatrix = mat([[1,2,3],[4,5,6],[7,8,9]])
[m,n]=shape(mymatrix)   # 矩阵的行列数
print "矩阵的行数和列数:",m,n

myscl1 = mymatrix[0] # 按行切片
print "按行切片:",myscl1

myscl2 = mymatrix.T[0]  # 按列切片
print "按列切片:",myscl2

mycpmat = mymatrix.copy() # 矩阵的复制
print "复制矩阵:\n",mycpmat

#比较
print "矩阵元素的比较:\n",mymatrix < mymatrix.T
输出结果:
矩阵的行数和列数: 3 3
按行切片: [[1 2 3]]
按列切片: [[1 4 7]]
复制矩阵:
[[1 2 3]
 [4 5 6]
 [7 8 9]]
矩阵元素的比较:
[[False  True  True]
 [False False  True]
 [False False False]]

 

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站