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

(上接第一章)

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(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.]]
#矩阵乘法
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]]

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

时间: 2024-08-02 15:13:00

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

郑捷《机器学习算法原理与编程实践》学习笔记(第六章 神经网络初步)6.3 自组织特征映射神经网路(SMO)

具体原理网址:http://wenku.baidu.com/link?url=zSDn1fRKXlfafc_tbofxw1mTaY0LgtH4GWHqs5rl8w2l5I4GF35PmiO43Cnz3YeFrrkGsXgnFmqoKGGaCrylnBgx4cZC3vymiRYvC4d3DF3 自组织特征映射神经网络(Self-Organizing Feature Map.也称Kohonen映射),简称为SMO网络,主要用于解决模式识别类的问题.SMO网络属于无监督学习算法,与之前的Kmeans算

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

(上接第一章) 1.2.5 Linalg线性代数库 在矩阵的基本运算基础之上,NumPy的Linalg库可以满足大多数的线性代数运算. .矩阵的行列式 .矩阵的逆 .矩阵的对称 .矩阵的秩 .可逆矩阵求解线性方程 1.矩阵的行列式 In [4]: from numpy import * In [5]: #n阶矩阵的行列式运算 In [6]: A = mat([[1,2,3],[4,5,6],[7,8,9]]) In [7]: print "det(A):",linalg.det(A)

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

第一章 机器学习的基础 1.1编程语言与开发环境 1.1.1 Python 安装(略) 1.2.2 Python安装包的安装:可以选选择安装集成包anaconda(略) 1.1.3 IDE配置及安装测试 IDE选择UltraEdit高级文本编辑器,配置步骤如下: (1)选择"高级"-->"用户工具"命令,如图1.4所示. 图1.5 配置UltraEdit步骤1 (2)在如图1.5所示输入各项参数,然后单击"应用按钮" 图1.5 配置Ultr

(转)【D3D11游戏编程】学习笔记二:XNAMath之XMVECTOR

(注:[D3D11游戏编程]学习笔记系列由CSDN作者BonChoix所写,转载请注明出处:http://blog.csdn.net/BonChoix,谢谢~) 一.XNA Math简介 在D3D10及之前的版本中,3D数学库是伴随在D3DX库中的.在D3D11版中,3D数学库被单独隔离出来,为XNA Math库,功能和之前基本一样,但是建立在SIMD指令上,以更好地利用Windows及XBox360上特殊的硬件寄存器(128位,可以同时操作4个32位数). 二.向量类型 在XNA数学库中,核心

(转)【D3D11游戏编程】学习笔记二十四:切线空间(Tangent Space)

(注:[D3D11游戏编程]学习笔记系列由CSDN作者BonChoix所写,转载请注明出处:http://blog.csdn.net/BonChoix,谢谢~) 切换空间,同局部空间.世界空间等一样,是3D图形学中众多的坐标系之一.切换空间最重要的用途之一,即法线映射(Normal Mapping).关于法线映射的细节,将在下一篇文章中详细介绍.但在学习法线映射之前,深刻地理解切换空间非常重要.因此借这一篇文章来学习下它,以为后面学习法线映射.视差映射(Parallax Mapping).Dis

(转)【D3D11游戏编程】学习笔记二十三:Cube Mapping进阶之动态环境图

(注:[D3D11游戏编程]学习笔记系列由CSDN作者BonChoix所写,转载请注明出处:http://blog.csdn.net/BonChoix,谢谢~) 在前面两篇介绍Cube Mapping的文章中,我们所使用到的Cube Map都是事先制作好的,这样的一个好处就是运行时效率很高,适合于大多数情形.但如果对于即时动态变化的场景来说,依靠静态图来实现反射效果就不再适用了.因为在不同时刻,一个物体周围的场景是不断变化的,想要把这些变化在物表的反射中体现出来,就需要一张动态的环境图. 1.C

(转)【D3D11游戏编程】学习笔记二十一:Cube Mapping及其应用之一:天空盒的实现

(注:[D3D11游戏编程]学习笔记系列由CSDN作者BonChoix所写,转载请注明出处:http://blog.csdn.net/BonChoix,谢谢~) 这一节讨论有关纹理映射的进阶内容:Cube Mapping. 1. 简介 单从名字上,就大概可以看出点端倪了,翻译成中文为立方体映射,因此肯定跟立方体有关系.确实,Cube Mapping就是使用六张正方形的图片来进行纹理映射的.这六张图片分别对应了一个立方体中的六个面.由于这个立方体是轴对齐的,因此每个面可以用坐标系中的六个轴方向来惟

JavaScript DOM编程艺术学习笔记(二)

第二章 JavaScript语法 2.1 准备工作 编写JavaScript的环境:文本编辑器 + Web浏览器 用JavaScript编写的代码必须通过HTML/XHTML文档才能执行.有两种方式可以做到这点. 第一种是将JavaScript代码放到文档<head>便签中的<script>标签之间: <!DOCTYPE html> <html lang="en"> <head> <meta charset="

《COM原理与应用》学习笔记二——COM对象和COM接口的实现

COM对象是给用户提供服务的封装的实体.这个应该和C++中类的对象理解起来是相似的.但是有时候也把COM对象当作提供服务的那个类.COM对象也对数据进行了封装,然后也提供了接口.不过和类还是有一些不一样的.类中的数据可以申明为public,然后让用户能够直接访问这些数据成员.但是用户不能对COM对象的数据进行直接访问,只能通过接口(如果有提供这种接口的话)来对数据进行间接的访问.一般COM接口指的是一组提供服务的接口,刚开始看这个定义很不习惯.因为C++中根本没有接口的概念,但是像Java这些语