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地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 如果不熟悉线性代数的概念,要去学习自然科学,现在看来就和文盲差不多。”,然而“按照现行的国际标准,线性代数是通过公...
    Drafei阅读 5,614评论 0 3
  • 出于盈利和引流两个不同的目的,同一商品,有的卖家设置了两种不同的价格,一种公开价(原价),一种用来引流(内部券),...
    刘俐利社群经济阅读 3,907评论 0 1
  • 爱情就像食物,看到的样子和闻到的气味,永远替代不了它给予味蕾的冲击。 同样,别人觉得好吃的东西,未必适合你。 像体...
    柚子纪阅读 2,910评论 0 0
  • 【日精进打卡第0天】 姓名:杜俊杰 公司:浙江省东阳市东元食品有限公司 【知~学习】 诵读《大学》0遍,诵读《六项...
    浙江路人甲阅读 1,027评论 0 0

友情链接更多精彩内容