Python数据分析 - 机器学习笔记:第一章数据分析 - 1.2.4.矩阵和矢量运算
前言:本文是学习网易微专业的《python全栈工程师》 中的《数据分析 - 机器学习工程师》专题的课程笔记,欢迎学习交流。
一、课程目标
- 掌握矩阵的创建方法
- 掌握矢量运算的基本方法
二、详情解读
2.1.掌握矩阵的创建方法
2.1.1.区分
- 矩阵:矩阵是
numpy
库的一种对象 - 矩阵 ≠\neq= 二维数组
1.创建矩阵:
方法一:
import numpy as np
A = np.mat([1, 2, 3])
运行结果:
矩阵也有shape
属性
A.shape
运行结果:
方法二:
B = np.mat('1 2 3; 4 5 6; 7 8 9') # 方阵
运行结果:
方法三:
# 数组作为参数,创建矩阵
M1 = np.mat(np.eye(3))
M2 = 2 * M1
运行结果:
方法四:矩阵的合并
np.bmat('M1 M2; M2 M1')
运行结果:
2.矩阵间的乘法:
先初始化两个数组:
a = np.arange(1, 10).reshape((3, 3))
b = np.array([[1, 0, 1], [0, 1, 1], [1, 1, 0]])
print(a)
print('-'*10)
print(b)
运行结果:
两个数组用“*”相乘,对应元素相乘
a * b
运行结果:
两个矩阵用“*”相乘
A = np.mat(a)
B = np.mat(b)
A * B
运行结果:
原理图解:
下面的计算与上述等价:
np.dot(a, b)
运行结果:
矩阵的转置:
A.T
运行结果:
2.2.矢量运算
2.2.1.标量积
- 标量积(英语:
Scalar Product
)是两个矢量相乘的一种方式和结果。 - 也被称为数量积、点积(英语:
Dot Product
)、内积(英语:Inner Product
)。 - 按照这种方式两个矢量相乘的结果是一个标量。
代数理解:
假设两个矢量a⃗=[a1,a2,a3,...an]\vec{a} = [a_1, a_2, a_3, ... a_n]a=[a1,a2,a3,...an] 和b⃗=[b1,b2,b3,....bn]\vec{b} = [b_1, b_2, b_3, .... b_n]b=[b1,b2,b3,....bn],它们的点积定义为:
a⃗⋅b⃗=∑i=1naibi=a1b1+a2b2+...+anbn\vec{a} \cdot \vec{b} = \sum_{i=1}^na_ib_i = a_1b_1 + a_2b_2 + ... + a_nb_n a⋅b=i=1∑naibi=a1b1+a2b2+...+anbn
或者a⃗⋅b⃗=∣a⃗b⃗T∣\vec{a}\cdot\vec{b} = |\vec{a}\vec{b}^T|a⋅b=∣abT∣
其中b⃗T\vec{b}^TbT是向量b⃗\vec{b}b的转置,而∣a⃗b⃗T∣|\vec{a}\vec{b}^T|∣abT∣是a⃗b⃗T\vec{a}\vec{b}^TabT的行列式。
几何理解:
以平面坐标系中的两个矢量为例,两个矢量a⃗\vec{a}a和b⃗\vec{b}b,它们的夹角是θ\thetaθ,则
a⃗⋅b⃗=∣a⃗∣∣b⃗∣cosθ\vec{a}\cdot\vec{b} = |\vec{a}||\vec{b}|cos\thetaa⋅b=∣a∣∣b∣cosθ
示例:
计算函数:np.dot()
c = np.array([[1, 2], [3, 4]])
d = np.array([[5, 6], [7, 8]])
np.dot(c, d)
运行结果:
对比另外一个:np.inner()
np.inner(c, d)
运行结果:
对于二维数组,1
轴是最后轴(last axes
),np.inner()
即是将两个数组1
轴上的元素分别对应相乘并求和,并得到最终的数组。
2.2.2.矢量积
- 矢量积(英语:
Vector Product
),又可以称为叉积(英语:Cross Product
)或外积(英语:Outer Product
) - 其运算结果是一个矢量,并且矢量方向与原来两个矢量所构成的平面垂直
代数理解:
我们以三维坐标系中的两个矢量为例,即a⃗=axi⃗+ayj⃗+azk⃗\vec{a} = a_x\vec{i} + a_y\vec{j} + a_z\vec{k}a=axi+ayj+azk和b⃗=bxi⃗+byj⃗+bzk⃗\vec{b} = b_x\vec{i} + b_y\vec{j} + b_z\vec{k}b=bxi+byj+bzk,则:
a⃗×b⃗=∣i⃗j⃗k⃗axayazbxbybz∣=(aybz−azby)i⃗+(azbx−axbz)j⃗+(axby−aybx)k⃗\vec{a}\times\vec{b} =\begin{vmatrix} \vec{i} & \vec{j} & \vec{k}\\ a_x & a_y & a_z\\ b_x & b_y & b_z\\ \end{vmatrix} = (a_yb_z - a_zb_y)\vec{i} + (a_zb_x - a_xb_z)\vec{j} + (a_xb_y - a_yb_x)\vec{k} a×b=∣∣∣∣∣∣iaxbxjaybykazbz∣∣∣∣∣∣=(aybz−azby)i+(azbx−axbz)j+(axby−aybx)k
代数理解:
还是以平面坐标系中的两个矢量为例,两个矢量a⃗\vec{a}a和b⃗\vec{b}b,它们的夹角是θ\thetaθ,如果对这两个矢量计算矢量积,最后结果的大小等于这两个矢量为相邻两边的平等四边形的面积,即:
a⃗×b⃗=∣a⃗∣∣b⃗∣sinθ\vec{a}\times\vec{b} = |\vec{a}||\vec{b}|sin\thetaa×b=∣a∣∣b∣sinθ
numpy
中计算矢量积:np.cross()
v = np.array([1, 2, 3])
b = np.array([9, 8, 7])
np.cross(v, b)
运行结果:
计算过程:
∣ijk123987∣=(2×7−3×8)i⃗+(1×8−2×9)j⃗=−10i⃗+20j⃗−10k⃗\begin{vmatrix} i & j & k \\ 1 & 2 & 3 \\ 9 & 8 & 7\\ \end{vmatrix} = (2 \times 7 - 3 \times 8)\vec{i} + (1\times8 - 2\times 9)\vec{j} = -10\vec{i} + 20\vec{j} - 10\vec{k}∣∣∣∣∣∣i19j28k37∣∣∣∣∣∣=(2×7−3×8)i+(1×8−2×9)j=−10i+20j−10k
np.cross()
的参数不仅仅可以是一维数组(矢量),还可以是多维。
三、课程小结
- 01 矩阵乘法
- 02 标量积、矢量积
Python数据分析 - 机器学习笔记:第一章数据分析 - 1.2.4.矩阵和矢量运算相关推荐
- 吴恩达机器学习笔记——第一章
每学完一章都来写一篇博客,用来总结回顾和反思. 一.机器学习的一些简单应用 我们可以利用计算机实现基础的功能:例如计算A到B的最短路径. 但是 网页搜索.垃圾邮件的过滤.图片识别 等功能需要应用机器学 ...
- 《谁说菜鸟不会数据分析》学习笔记 第一章总览 第二章数据分析思路
网上的信息太琐碎了,根本没搞懂什么是数据分析方法什么是数据分析方法论,所以找了一本比较简单的书来系统学习一下,本来打算粗略看完,但是觉得这本书知识还是不错的,所以决定在未来一周把这本书用心学一下. 这 ...
- Python数据分析 第一章 数据分析的概述
目录 第一章 数据分析的概述 1.数据分析的概述 1.Python在数据分析方面的优势 2.数据分析流程 3.数据分析层次 4.数据分析常见应用场景 2. Python数据分析模块 1. Numpy ...
- 《Python深度学习》第一章笔记
<Python深度学习>第一章笔记 1.1人工智能.机器学习.深度学习 人工智能 机器学习 深度学习 深度学习的工作原理 1.2深度学习之前:机器学习简史 概率建模 早期神经网络 核方法 ...
- 小吴的《机器学习 周志华》学习笔记 第一章 绪论
小吴的<机器学习 周志华>学习笔记 第一章 绪论 近一年时间接触到不少机器学习的知识,虽然断断续续学了一些,总感觉还没有入门(只学会了疯狂调包).因此,最近开始系统学习Machine Le ...
- 于剑《机器学习》第一章笔记
于剑<机器学习>第一章引言笔记 对象特性输入表示:观测得到的对象特性描述. 对象特性输出表示:学习得到的对象特性描述. 丑小鸭定理 不存在独立于问题而普遍适用的特征表示,特征的有效与否是问 ...
- 机器学习笔记 (第一周)
机器学习笔记 (第一周) 目录 机器学习笔记 (第一周) 引言(Introduction) 1.1 什么是机器学习,机器学习能做些什么事情 1.2 机器学习是什么? 1.3 监督学习 1.4 无监督学 ...
- 吴恩达机器学习笔记第一周
第一周 吴恩达机器学习笔记第一周 一. 引言(Introduction) 1.1 欢迎 1.2 机器学习是什么? 1.3 监督学习 1.4 无监督学习 二.单变量线性回归(Linear Regress ...
- 《Go语言圣经》学习笔记 第一章 Go语言入门
Go语言圣经学习笔记 第一章 Go语言入门 目录 Hello, World 命令行参数 查找重复的行 GIF动画 获取URL 并发获取多个URL Web服务 本章要点 注:学习<Go语言圣经&g ...
- 认识机器学习 机器学习实战第一章
学习目标 机器学习实战第一章 学习内容 1. 什么是机器学习? 答:简单地说,机器学习就是把无序的数据转换成有用的信息. 2. 数据来源? 从互联网上可以获取大量的人为数据,比如某用户的购物记录,刷过 ...
最新文章
- 游戏开发者需要注意的4个内存使用问题
- [SDOI2013]直径 (树的直径,贪心)
- C++ 对象和实例的区别,以及用new和不用new创建类对象区别
- 【转】构建Android平台Google Map应用
- linux 查杀php木马,linux上php木马、后门查杀总结
- php echo nbsp,关于include里面的函数echo的问题
- 使用 .NET 平台,如何玩转 Universal Windows 应用?
- HTML5与CSS3权威指南.pdf7
- python hasattr内建函数测试
- 《产品经理面试攻略》PART 9:HR面试题
- CIS基线合集-常用版本操作系统、数据库及中间件
- spark学习之资源调度
- myeclipse误删文件恢复
- 软件工程导论第九到十二章章节复习总结附思维导图
- 什么叫做实体经济危机?
- linux查看目录的所属组,linux分配文件文件夹所属用户及组
- QT入门系列(6) 生成UUID
- 流量消费透明化成为运营商新课题
- 中兴a2018刷android,中兴A2018刷机教程 中兴A2018 天机7S卡刷升级更新官方系统
- AlexNet创新点
热门文章
- VB Shell 函数
- [Haxe] Reflect
- 简单实用的Chrom浏览器模拟POST请求方式
- capistrano 部署后自动清理之前的release
- 雷军宣布小米IoT全面升级:WiFi模组降到9.9 接入宜家灯泡 推门锁新品
- 网络编程_HTTP协议_Web服务器_(TCP3次握手4次挥手,长短连接,伪静态、静态和动态)
- Leetcode刷题笔记——剑指offer II (五)【二分、排序、回溯】
- Layui数据表格请求添加参数
- 软件工程——从艺术走向科学
- 分类、标签设计及查询优化