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

1.2.1对象与维度的概念

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

表1.1

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

1.2.2初识矩阵

1.矩阵的特征

  • 矩阵是具有相同特征和维度的对象集合
  • 一个对象表示为矩阵中的一行,一个特镇表示为矩阵中的一列,每个特镇都有数值型的取值
  • 特征相同、取值相异的对象集合所构成的矩阵,是对象之间既相互独立,又相互联系
  • 有特征列的取值范围所构成的矩阵空间应具有完整性,即能够反映出实物的空间形式或变化
    2.矩阵的用途
  • 解线性方程:比如二维矩阵可以理解为一个平面直角坐标系内的点集,通过计算点与点之间的距离,完成聚类、分类或者预测。
  • 方程降次:利用矩阵的二次型,通过升维将线性不可分的数据集英社到高维中去,转换为线性可分的情形,这是支持向量机的基本原理之一。
  • 变换:矩阵可以通过特征值和特征向量完成维度约简,简化类似图片这种高维度数据集的运算,主成分分析使用的就是这个原理。
1.2.3矢量化编程与GPU运算

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

1.矩阵初始化

  • 全0矩阵和全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)
  • 矩阵各元素的n次幂
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地址

你可能感兴趣的:(1.2对象、矩阵与矢量化编程)