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

2018-12-04  本文已影响0人  Vekaco
1.2.1对象与维度的概念

1.类比面向对象开发程序语言中的对象概念,在机器学习中,对象指的是含有一组特征的行向量
2.对象的维度指的是行向量的列数

表1.1
如上表中,非洲象就是一个对象实例,他的特征向量维度为5。
2.在机器学习中,对于图片的处理也会进行向量化。一张图片可以处理成一个高维度的向量。
3.在文本类数据集的处理中,机器学习会根据文本内容生成词袋列表,将每个词出现的词频数数值化,未出现为0,出现记为1,多次出现则累加。
1.2.2初识矩阵

1.矩阵的特征

1.2.3矢量化编程与GPU运算

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

1.矩阵初始化

#创建3*5的全0矩阵
myZeros = np.zeros([3, 5])
print myZeros

#创建3*5的全1矩阵
myOnes = np.ones([3, 5])
print myOnes
#生成随机矩阵
myRand = np.random.rand(3, 4)#3*4的0~1为元素的随机数矩阵
print myRand
#单位矩阵(方阵)
myEye = np.eye(3)
print myEye

2.矩阵的元素运算

# 条件:矩阵的行数和列数必须相同
myOnes = ones(3)
myEye = eye(3)
print myOnes + myEye
print myOnes - myEye
# 条件:矩阵的每个元素都与该数相乘
mymatrix = mat("1,2,3;4,5,6;7,8,9")
a = 10
print a * mymatrix
mymatrix = mat("1,2,3;4,5,6;7,8,9")
print sum(mymatrix)
# 条件:同维度元素相乘,维度不同时可通过广播规则扩充
mymatrix2 = 1.5 * ones(3)
print np.multiply(mymatrix, mymatrix2)
mylist = mat("1,2,3;4,5,6;7,8,9")
print np.power(mylist, 2)
  1. 矩阵运算
#条件:m*p矩阵a与p*n矩阵b相乘,得到m*n结果矩阵c, c矩阵(i,j)位置元素为a矩阵i行与b矩阵j列各元素乘积之和
mymatrix = mat("1,2,3;4,5,6;7,8,9")
mymatrix2 = mat("1;2;3")
print mymatrix * mymatrix2
#条件:矩阵元素行列互换
mymatrix = mat("1,2,3;4,5,6;7,8,9")
print mymatrix.T
np.transpose(mymatrix)
print mymatrix

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

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[:,0]
print "按列切片:", myscl2
#按列切片2
myscl3 = mymatrix.T[0]
print "按列切片:", myscl3
#浅拷贝
a = mymatrix
#深拷贝
b = np.copy(mymatrix)
#当改变mymatrix元素时,浅拷贝矩阵也会改变其元素,而深拷贝不会改变
mymatrix[0] = mat("7,7,7")
print a
print b
#矩阵比较:会对两个矩阵的各元素依次比较,符合条件为True
print mymatrix < mymatrix.T

项目源代码:github地址

上一篇下一篇

猜你喜欢

热点阅读