> 技术文档 > 通往 AI 之路:Python 机器学习入门-线性代数_python机器学习 线性代数教程

通往 AI 之路:Python 机器学习入门-线性代数_python机器学习 线性代数教程


2.1 线性代数(机器学习的核心)

线性代数是机器学习的基础之一,许多核心算法都依赖矩阵运算。本章将介绍线性代数中的基本概念,包括标量、向量、矩阵、矩阵运算、特征值与特征向量,以及奇异值分解(SVD)。


2.1.1 标量、向量、矩阵

1. 标量(Scalar)

标量是一个单独的数,例如:

a = 5

在 Python 中:

a = 5 # 标量

2. 向量(Vector)

向量是由多个数值组成的一维数组,例如:

v = [2, 3, 5]

Python 实现:

import numpy as npv = np.array([2, 3, 5]) # 一维数组表示向量print(v)

3. 矩阵(Matrix)

矩阵是一个二维数组,例如:

A = [[1, 2], [3, 4]]

Python 实现:

A = np.array([[1, 2], [3, 4]]) # 二维数组表示矩阵print(A)

2.1.2 矩阵运算

1. 矩阵加法

两个相同形状的矩阵可以相加:

A + B = [[1, 2], + [[5, 6], = [[6, 8], [3, 4]] [7, 8]] [10, 12]]

Python 计算:

A = np.array([[1, 2], [3, 4]])B = np.array([[5, 6], [7, 8]])C = A + Bprint(C)

2. 矩阵乘法

  • 逐元素相乘(Hadamard 乘积)
A ⊙ B = [[1×5, 2×6], [3×7, 4×8]] = [[5, 12], [21, 32]]

Python 实现:

C = A * B # 逐元素相乘print(C)
  • 矩阵乘法(点积)
A × B = [[1×5 + 2×7, 1×6 + 2×8], [3×5 + 4×7, 3×6 + 4×8]] = [[19, 22], [43, 50]]

Python 实现:

C = np.dot(A, B) # 矩阵乘法print(C)

3. 矩阵转置

矩阵转置是将行变成列:

A^T = [[1, 3], [2, 4]]

Python 计算:

A_T = A.T # 计算转置print(A_T)

4. 逆矩阵

如果矩阵 A 是可逆的(即 det(A) ≠ 0),那么存在一个矩阵 A^(-1) 使得:

A × A^(-1) = I (单位矩阵)

Python 计算:

A_inv = np.linalg.inv(A) # 计算逆矩阵print(A_inv)

2.1.3 特征值与特征向量

特征值(Eigenvalue)和特征向量(Eigenvector)在机器学习中用于主成分分析(PCA)等算法。

1. 定义

对于矩阵 A,如果存在一个向量 v 和一个数 λ 使得:

A × v = λ × v

那么 vA 的特征向量,λ 是对应的特征值。

2. Python 计算特征值和特征向量

eigenvalues, eigenvectors = np.linalg.eig(A)print(\"特征值:\", eigenvalues)print(\"特征向量:\", eigenvectors)

2.1.4 SVD(奇异值分解)

奇异值分解(Singular Value Decomposition, SVD)是矩阵分解的一种重要方法,它可以表示为:

A = U × Σ × V^T

其中:

  • U 是左奇异向量矩阵
  • Σ 是对角矩阵,对角线上的元素称为奇异值
  • V^T 是右奇异向量矩阵的转置

Python 计算 SVD

U, S, V_T = np.linalg.svd(A)print(\"U 矩阵:\", U)print(\"Σ 矩阵:\", S)print(\"V^T 矩阵:\", V_T)

SVD 在降维(如 PCA)中有重要应用,后续章节将深入介绍。


总结

本章介绍了机器学习中常用的线性代数知识,包括:

  • 标量、向量、矩阵 及其表示方式
  • 矩阵运算(加法、乘法、转置、逆矩阵)
  • 特征值与特征向量(PCA 等算法的基础)
  • SVD(奇异值分解)(在数据降维中的应用)

掌握这些内容,有助于理解机器学习的数学基础!建议多实践代码,加深理解!