机器学习笔记 - 行列式
一、概述
矩阵可以看作是空间的线性变换。矩阵A的行列式是一个数字,对应于使用该矩阵变换空间时获得的乘法变化。负行列式意味着方向发生了变化(而不仅仅是重新缩放和/或旋转)。方向的变化意味着例如在2D平面中,进行镜像。
这是一个区分正行列式和负行列式的示例:
可以看到,通过旋转和缩放无法获得负行列式对应的变换。
此外,行列式还为您提供了转换量。 如果你取n维单位立方体并在其上应用矩阵A,则行列式的绝对值对应于变换后图形的面积。
二、例1
为了计算形状的面积,我们将使用二维的简单正方形。 单位平方面积可以用勾股定理取两个单位向量来计算。
i 和 j 的长度为 1,因此单位正方形的面积为 1。
首先,让我们创建一个函数 plotVectors() 来绘制向量:
def plotVectors(vecs, cols, alpha=1):plt.figure()plt.axvline(x=0, color='#A9A9A9', zorder=0)plt.axhline(y=0, color='#A9A9A9', zorder=0)for i in range(len(vecs)):x = np.concatenate([[0,0],vecs[i]])plt.quiver([x[0]],[x[1]],[x[2]],[x[3]],angles='xy', scale_units='xy', scale=1, color=cols[i],alpha=alpha)
让我们从在 Python 中创建向量:
orange = '#FF9A13'
blue = '#1190FF'i = [0, 1]
j = [1, 0]plotVectors([i, j], [[blue], [orange]])
plt.xlim(-0.5, 3)
plt.ylim(-0.5, 3)
plt.show()
我们应用给 i 和 j。 这个是个对角矩阵。 所以它会重新调整我们的空间,但是不会进行旋转。更准确地说,它将以相同的方式重新调整每个维度,因为对角线值是相同的。 让我们创建矩阵 A:
A = np.array([[2, 0], [0, 2]])new_i = A.dot(i)
new_j = A.dot(j)
plotVectors([new_i, new_j], [['#1190FF'], ['#FF9A13']])
plt.xlim(-0.5, 3)
plt.ylim(-0.5, 3)
plt.show()
正如预期的那样,我们可以看到 i 和 j 对应的正方形没有旋转,但 i 和 j 的长度增加了一倍。
我们现在将计算 A 的行列式(这里不讲述有关行列式计算的详细信息):
np.linalg.det(A)
#结果为4
可以看到,变换将单位正方形的面积乘以 4。新的i和新的j的长度为 2(因此 2⋅2=4)。
三、例2
现在让我们看一个负行列式的例子。
我们将用矩阵变换单位平方:,它的行列式是 -4:
B = np.array([[-2, 0], [0, 2]])
np.linalg.det(B)
#结果为-4
绘制
new_i_1 = B.dot(i)
new_j_1 = B.dot(j)
plotVectors([new_i_1, new_j_1], [['#1190FF'], ['#FF9A13']])
plt.xlim(-3, 0.5)
plt.ylim(-0.5, 3)
plt.show()
我们可以看到,行列式为 2 和 -2 的矩阵以相同的方式修改了单位正方形的面积。
行列式的绝对值表明,和第一个例子一样,新正方形的面积是单位正方形面积的 4 倍。 但这一次,不仅是大小变化,而且是镜像转换。
仅使用单位向量并不明显,所以让我们使用一些随机点。
我们将使用矩阵
points = np.array([[1, 3], [2, 2], [3, 1], [4, 7], [5, 4]])C = np.array([[-1, 0], [0, 1]])
np.linalg.det(C)
由于行列式是-1,所以空间的面积不会改变。 但是,由于它是负数,我们得到无法通过旋转获得的变换:
newPoints = points.dot(C)plt.figure()
plt.plot(points[:, 0], points[:, 1])
plt.plot(newPoints[:, 0], newPoints[:, 1])
plt.show()
我们已经看到,矩阵的行列式是一个特殊的值,它表示了关于这个矩阵对应的变换的性质。
机器学习笔记 - 行列式相关推荐
- 斯坦福机器学习笔记(三)—— 高斯判别分析
概述 本篇博客主要是网易公开课上吴恩达教授讲解的机器学习视频中关于高斯判别分析的相关内容(网址为:http://open.163.com/movie/2008/1/A/R/M6SGF6VB4_M6SG ...
- 吴恩达机器学习笔记整理(Week6-Week11)
1. Week 6 1.1 应用机器学习的建议(Advice for Applying Machine Learning) 1.1.1 决定下一步做什么 到目前为止,我们已经介绍了许多不同的学习算法, ...
- 迷人的神经网络——机器学习笔记1
目录 迷人的神经网络--机器学习笔记1 第1章 神经元模型及网络结构 1.1 神经元模型 1.1.1 单输入神经元 1.1.2 激活函数 1.1.3 多输入神经元 1.2 网络结构 1.2.1 单层神 ...
- 一份520页的机器学习笔记!附下载链接
点击上方"视学算法",选择"星标"公众号 第一时间获取价值内容 近日,来自SAP(全球第一大商业软件公司)的梁劲(Jim Liang)公开了自己所写的一份 52 ...
- 700 页的机器学习笔记火了!完整版开放下载
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 作者 梁劲(Jim Liang),来自SAP(全球第一大商业软件公司). 书籍特点 条理清晰 ...
- 机器学习笔记十四:随机森林
在上一篇机器学习笔记十三:Ensemble思想(上)中,简要的提了一下集成学习的原理和两种主要的集成学习形式. 而在这部分要讲的随机森林,就算是其中属于bagging思路的一种学习方法.为了篇幅,b ...
- 机器学习笔记七:损失函数与风险函数
一.损失函数 回顾之前讲过的线性回归模型,我们为了要学习参数使得得到的直线更好的拟合数据,我们使用了一个函数 这个函数就是比较模型得到的结果和"真实值"之间的"差距&qu ...
- 吴恩达机器学习笔记55-异常检测算法的特征选择(Choosing What Features to Use of Anomaly Detection)
吴恩达机器学习笔记55-异常检测算法的特征选择(Choosing What Features to Use of Anomaly Detection) 对于异常检测算法,使用特征是至关重要的,下面谈谈 ...
- Python机器学习笔记:sklearn库的学习
自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了,scikit-learn简称sklearn,支持包括分类,回归,降维和聚类四大机器学习算法.还包括了特征提取,数据 ...
最新文章
- 中国AI开发者真实现状:写代码这条路,会走多久?
- 解读 2018 之运维篇:我们离高效智能的运维还有多远
- 一起学asp.net基础文章二 服务器控件、客户端控件和html表单控件
- 运行 composer update,提示 Allowed memory size of bytes exhausted
- MyBatisPlus3.x代码生成器自定义模板配置
- python 特性和方法同名_Python类:方法与属性同名
- 2021高考襄阳四中成绩查询,襄阳四中2020年高考成绩怎么样(高考喜报)
- 米莱迪机器人加物理攻击_王者荣耀:“不死流”白起崛起,秒回8500血完克米莱迪...
- java writeboolean_void writeBoolean(boolean v)
- docker 简单使用
- Linux--RAID 磁盘列阵与阵列卡
- 宠物小精灵之收服(二维01背包)
- IOS 应用运行环境理解
- 如何把数据导入数据库
- Proxifier+secureCRT建立隧道
- arm 中的nor flash 和 nand flash
- 基于强化学习的图像配准 - Image Registration: Reinforcement Learning Approaches
- 自学Java有什么好方法?
- 2021-06-13早龙广告视频脚本 ——《世间不过是一顿早餐》
- Linux软件包安装