- 线性关系:自变量和因变量都是一次方关系
- 因变量是自变量的线性组合
- 线性组合:每个变量乘上一个系数,然后再加起来
- 代数:用公式和变量来表达数学概念
- 核心概念:
-
向量:
- 有大小,有方向的一个量
- 开始的表达:有向线段(初中物理,几何表达法)
- 现在的做法:建立直角坐标系,把每个向量转换为一个坐标(代数表达法)
- 向量的模:就是长度,大小,二范数
- 向量的模:
- 点乘积:
- 余弦相似度:
- NumPy:
- ndarray:
- 标量:scalar 0维数组
- 矢量:vector 1维数组
- 矩阵:matrix 2维数组
- 张量:tensor 3维及三维以上
- 数学科学的容器:
- 按维度定义数据,按维度来处理数据
- 按维度办事儿
- 原来所有的二维适应的规则,同时适应三维及其以上
- 求模的几种方式:
-
import numpy as np a = [1, 2] a1 = np.array(a) type(a1) print(np.linalg.norm(a1)) print(np.sqrt((a1 ** 2).sum()))
-
import torch a2 = torch.tensor(a, dtype=torch.float32) type(a2) print(torch.linalg.norm(a2))
- 点乘和余弦相似度的表示:
-
import numpy as np a = np.array([1, 2]) b = np.array([3, 4]) a_dot_b = (a * b).sum() a_dot_b a @ b a.dot(b) a_b_sim = a @ b / np.linalg.norm(a) / np.linalg.norm(b) a_b_sim
- ndarray:
-
矩阵:
- matrix
- 矩阵相乘
- 法则:
- A:[m, k]
- B:[k, n]
- C:[m, n]
- AB=C
- 代码实现:
-
import numpy as np def matrix_multiply(A, B): A = np.array(A) B = np.array(B) if A.ndim != 2 or B.ndim !=2 or A.shape[1] != B.shape[0]: raise ValueError("A和B不能相乘。。。") m = A.shape[0] n = B.shape[1] C = np.empty(shape=(m, n)) for row in range(m): for column in range(n): C[row, column] = A[row, :] @ B[:, column] return C A = np.random.randn(3, 4) B = np.random.randn(4, 5) matrix_multiply(A, B)
- 法则:
- 矩阵分解
- 目的:抽取信息
- 矩阵特征向量和特征值
- 特征分解:
- 必须是方阵
- 奇异值分解
- 本质上还是特征分解
- 但是,可以用于任何的矩阵
- 奇异值是正数
- SVD
- 代码举例:
-
import numpy as np from matplotlib import pyplot as plt img = plt.imread(fname="beauty.jpeg") img.shape plt.imshow(X=img) H, W, C = img.shape plt.imshow(X=img[:H//2, :, :]) r = img[:, :, 2] plt.imshow(X=r, cmap="gray") U, S, Vh = np.linalg.svd(a=r, full_matrices=False) np.allclose(r, U @ np.diag(v=S) @ Vh)
-
机器学习所需的线性代数基础知识
于 2024-07-14 11:31:33 首次发布