首页 > 代码库 > 《机器学习算法原理与编程实践》学习笔记(二)

《机器学习算法原理与编程实践》学习笔记(二)

(上接第一章)

1.2 对象、矩阵与矢量化编程

1.2.1对象与维度(略)

1.2.2初识矩阵(略)

1.2.3矢量化编程与GPU运算(略)

1.2.4理解数学公式与NumPy矩阵运算

1.矩阵的初始化

#coding:utf-8
import numpy as np #导入NumPy包
#创建3*5的全0矩阵和全1的矩阵
myZero = np.zeros([3,5])#3*5的全0矩阵
print myZero
myZero = np.ones([3,5])##3*5的全1矩阵
print myZero

输出结果:

Connected to pydev debugger (build 141.1580)
[[ 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.]]
#生成随机矩阵
myRand = np.random.rand(3,4)#3行4列的0~1之间的随机数矩阵
print myRand
输出结果如下:
[[ 0.14689327  0.15077077  0.88018968  0.75112348]
 [ 0.30944489  0.77563281  0.82905038  0.25430367]
 [ 0.53958541  0.89695376  0.90681161  0.25453046]]
#单位阵
myEye = np.eye(3)#3*3的矩阵
print myEye
输出结果如下:
[[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]]

2.矩阵的元素运算

矩阵的元素运算是指矩阵在元素级别的加减乘除运算。

#元素的加和减:条件是矩阵的行数和列数必须相同
from numpy import *#导入NumPy包
myOnes = ones([3,3])#3*3的全1矩阵
myEye  = eye(3print myOnes+myEye
print  myOnes-myEye
输出结果如下:
[[ 2.  1.  1.]
 [ 1.  2.  1.]
 [ 1.  1.  2.]]
[[ 0.  1.  1.]
 [ 1.  0.  1.]
 [ 1.  1.  0.]]
#矩阵乘法
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]]
#矩阵所有元素求和
mymatrix = mat([[1,2,3],[4,5,6],[7,8,9]])
print mymatrix.sum()
输出结果:
45
‘‘‘
矩阵各元素的积:矩阵的点乘同维对应元素的相乘。
当矩阵的维度不同时,会根据一定的广播将维数扩
充到一致的形式
‘‘‘
mymatrix1 = mat([[1,2,3],[4,5,6],[7,8,9]])
mymatrix2 = 1.5*ones([3,3])
print multiply(mymatrix1,mymatrix2)
输出结果:
[[  1.5   3.    4.5]
 [  6.    7.5   9. ]
 [ 10.5  12.   13.5]]
#矩阵各元素的n次幂:n=2
mymatrix1 = mat([[1,2,3],[4,5,6],[7,8,9]])
print power(mymatrix1,2)
输出结果:
[[ 1  4  9]
 [16 25 36]
 [49 64 81]]
#矩阵乘以矩阵
mymatrix1 = mat([[1,2,3],[4,5,6],[7,8,9]])
mymatrix2 = mat([[1],[2],[3]])
print mymatrix1*mymatrix2
输出结果:
[[14]
 [32]
 [50]]

 

#矩阵的转置
mymatrix1 = mat([[1,2,3],[4,5,6],[7,8,9]])
print mymatrix1.T    #矩阵的转置
mymatrix1.transpose() #矩阵的转置
print  mymatrix1
输出结果如下:
[[1 4 7]
 [2 5 8]
 [3 6 9]]
[[1 2 3]
 [4 5 6]
 [7 8 9]]
mymatrix = mymatrix1[0]#按行切片
print u"按行切片:",mymatrix
mymatrix = mymatrix1.T[0]#按列切片
print u"按列切片:",mymatrix
mymatrix = mymatrix1.copy()#矩阵的复制
print u"复制矩阵:",mymatrix
#比较
print u"矩阵元素的比较:\n",mymatrix<mymatrix1.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]]

资料来源:《机器学习算法原理与编程实践》郑捷

 

《机器学习算法原理与编程实践》学习笔记(二)