前言:本文是学习网易微专业的《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∑n​ai​bi​=a1​b1​+a2​b2​+...+an​bn​
或者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=ax​i+ay​j​+az​k和b⃗=bxi⃗+byj⃗+bzk⃗\vec{b} = b_x\vec{i} + b_y\vec{j} + b_z\vec{k}b=bx​i+by​j​+bz​k,则:
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=∣∣∣∣∣∣​iax​bx​​j​ay​by​​kaz​bz​​∣∣∣∣∣∣​=(ay​bz​−az​by​)i+(az​bx​−ax​bz​)j​+(ax​by​−ay​bx​)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}∣∣∣∣∣∣​i19​j28​k37​∣∣∣∣∣∣​=(2×7−3×8)i+(1×8−2×9)j​=−10i+20j​−10k
np.cross()的参数不仅仅可以是一维数组(矢量),还可以是多维。

三、课程小结

  • 01 矩阵乘法
  • 02 标量积、矢量积

Python数据分析 - 机器学习笔记:第一章数据分析 - 1.2.4.矩阵和矢量运算相关推荐

  1. 吴恩达机器学习笔记——第一章

    每学完一章都来写一篇博客,用来总结回顾和反思. 一.机器学习的一些简单应用 我们可以利用计算机实现基础的功能:例如计算A到B的最短路径. 但是 网页搜索.垃圾邮件的过滤.图片识别 等功能需要应用机器学 ...

  2. 《谁说菜鸟不会数据分析》学习笔记 第一章总览 第二章数据分析思路

    网上的信息太琐碎了,根本没搞懂什么是数据分析方法什么是数据分析方法论,所以找了一本比较简单的书来系统学习一下,本来打算粗略看完,但是觉得这本书知识还是不错的,所以决定在未来一周把这本书用心学一下. 这 ...

  3. Python数据分析 第一章 数据分析的概述

    目录 第一章 数据分析的概述 1.数据分析的概述 1.Python在数据分析方面的优势 2.数据分析流程 3.数据分析层次 4.数据分析常见应用场景 2. Python数据分析模块 1. Numpy ...

  4. 《Python深度学习》第一章笔记

    <Python深度学习>第一章笔记 1.1人工智能.机器学习.深度学习 人工智能 机器学习 深度学习 深度学习的工作原理 1.2深度学习之前:机器学习简史 概率建模 早期神经网络 核方法 ...

  5. 小吴的《机器学习 周志华》学习笔记 第一章 绪论

    小吴的<机器学习 周志华>学习笔记 第一章 绪论 近一年时间接触到不少机器学习的知识,虽然断断续续学了一些,总感觉还没有入门(只学会了疯狂调包).因此,最近开始系统学习Machine Le ...

  6. 于剑《机器学习》第一章笔记

    于剑<机器学习>第一章引言笔记 对象特性输入表示:观测得到的对象特性描述. 对象特性输出表示:学习得到的对象特性描述. 丑小鸭定理 不存在独立于问题而普遍适用的特征表示,特征的有效与否是问 ...

  7. 机器学习笔记 (第一周)

    机器学习笔记 (第一周) 目录 机器学习笔记 (第一周) 引言(Introduction) 1.1 什么是机器学习,机器学习能做些什么事情 1.2 机器学习是什么? 1.3 监督学习 1.4 无监督学 ...

  8. 吴恩达机器学习笔记第一周

    第一周 吴恩达机器学习笔记第一周 一. 引言(Introduction) 1.1 欢迎 1.2 机器学习是什么? 1.3 监督学习 1.4 无监督学习 二.单变量线性回归(Linear Regress ...

  9. 《Go语言圣经》学习笔记 第一章 Go语言入门

    Go语言圣经学习笔记 第一章 Go语言入门 目录 Hello, World 命令行参数 查找重复的行 GIF动画 获取URL 并发获取多个URL Web服务 本章要点 注:学习<Go语言圣经&g ...

  10. 认识机器学习 机器学习实战第一章

    学习目标 机器学习实战第一章 学习内容 1. 什么是机器学习? 答:简单地说,机器学习就是把无序的数据转换成有用的信息. 2. 数据来源? 从互联网上可以获取大量的人为数据,比如某用户的购物记录,刷过 ...

最新文章

  1. 游戏开发者需要注意的4个内存使用问题
  2. [SDOI2013]直径 (树的直径,贪心)
  3. C++ 对象和实例的区别,以及用new和不用new创建类对象区别
  4. 【转】构建Android平台Google Map应用
  5. linux 查杀php木马,linux上php木马、后门查杀总结
  6. php echo nbsp,关于include里面的函数echo的问题
  7. 使用 .NET 平台,如何玩转 Universal Windows 应用?
  8. HTML5与CSS3权威指南.pdf7
  9. python hasattr内建函数测试
  10. 《产品经理面试攻略》PART 9:HR面试题
  11. CIS基线合集-常用版本操作系统、数据库及中间件
  12. spark学习之资源调度
  13. myeclipse误删文件恢复
  14. 软件工程导论第九到十二章章节复习总结附思维导图
  15. 什么叫做实体经济危机?
  16. linux查看目录的所属组,linux分配文件文件夹所属用户及组
  17. QT入门系列(6) 生成UUID
  18. 流量消费透明化成为运营商新课题
  19. 中兴a2018刷android,中兴A2018刷机教程 中兴A2018 天机7S卡刷升级更新官方系统
  20. AlexNet创新点

热门文章

  1. VB Shell 函数
  2. [Haxe] Reflect
  3. 简单实用的Chrom浏览器模拟POST请求方式
  4. capistrano 部署后自动清理之前的release
  5. 雷军宣布小米IoT全面升级:WiFi模组降到9.9 接入宜家灯泡 推门锁新品
  6. 网络编程_HTTP协议_Web服务器_(TCP3次握手4次挥手,长短连接,伪静态、静态和动态)
  7. Leetcode刷题笔记——剑指offer II (五)【二分、排序、回溯】
  8. Layui数据表格请求添加参数
  9. 软件工程——从艺术走向科学
  10. 分类、标签设计及查询优化