第2篇:线性代数不用怕——把数字排排队

🤔 什么是线性代数?

线性代数听起来很高深,其实就是研究数字怎么排队、怎么变换的学问

想象你在整理书架:

  • 书可以按行排列(横着排)
  • 也可以按列排列(竖着排)
  • 还可以整体移动、旋转书架

线性代数就是研究这些"排列"和"变换"的数学工具。

📊 向量:带方向的数字

🎯 生活中的向量

例子1:导航

  • "向前走100米,再向右转走50米"
  • 这可以用向量表示:(100, 50)
  • 第一个数字表示前后方向,第二个表示左右方向

例子2:速度

  • 汽车以60km/h向东行驶
  • 速度向量:(60, 0) —— 只有东西方向的分量

💻 Python中的向量

import numpy as np

# 创建一个向量(其实是1维数组)
velocity = np.array([60, 0])  # 向东60km/h
displacement = np.array([100, 50])  # 位移向量

print(f"速度向量: {velocity}")
print(f"位移向量: {displacement}")

# 向量的长度(模)
speed = np.linalg.norm(velocity)
distance = np.linalg.norm(displacement)

print(f"速度大小: {speed} km/h")
print(f"位移距离: {distance:.2f} m")

📋 矩阵:数字的表格

🏪 超市的例子

想象一个小超市的商品价格表:

商品苹果香蕉橙子
价格5元3元4元

用矩阵表示就是:

价格矩阵 = [5, 3, 4]

如果有多个商店的价格不同:

商店苹果香蕉橙子
店A5元3元4元
店B6元2元5元

矩阵表示:

[[5, 3, 4],
 [6, 2, 5]]

🔄 矩阵的魔法:变换

矩阵最厉害的地方是可以一次性对很多数据进行相同的操作

例子:图片变暗

import numpy as np

# 假设这是一张黑白图片的像素值(0-255)
image = np.array([[100, 150, 200],
                  [50,  75,  100],
                  [25,  125, 225]])

print("原图片:")
print(image)

# 让图片变暗:每个像素乘以0.5
darken_matrix = np.array([[0.5, 0, 0],
                          [0, 0.5, 0], 
                          [0, 0, 0.5]])

dark_image = image * 0.5  # 广播机制,每个元素都乘以0.5

print("\n变暗后:")
print(dark_image.astype(int))

➕ 矩阵运算:像搭积木

1️⃣ 矩阵加法:对应位置相加

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

2️⃣ 矩阵乘法:行乘列

这是最重要的运算!

规则​:结果矩阵的第i行第j列 = 第一个矩阵第i行 · 第二个矩阵第j列

import numpy as np

# 学生成绩例子
# 矩阵A:3个学生,2门课的平时成绩
scores_hw = np.array([[80, 90],    # 学生1:作业80分,小测90分
                     [70, 85],     # 学生2:作业70分,小测85分  
                     [90, 95]])    # 学生3:作业90分,小测95分

# 矩阵B:2门课,权重(作业占40%,小测占60%)
weights = np.array([[0.4],      # 作业权重
                   [0.6]])     # 小测权重

# 计算最终成绩:平时成绩 × 权重
final_scores = scores_hw @ weights  # @ 符号表示矩阵乘法

print("平时成绩:")
print(scores_hw)
print("\n权重:")
print(weights)
print("\n最终成绩:")
print(final_scores)

输出:

平时成绩:
[[80 90]
 [70 85] 
 [90 95]]

权重:
[[0.4]
 [0.6]]

最终成绩:
[[86.]
 [79.]
 [93.]]

看到了吗?矩阵乘法让我们一次性算出了所有学生的加权平均分!

🧠 为什么机器学习需要线性代数?

🎯 数据的天然结构

机器学习中的数据天然就是矩阵形式:

# 假设我们有房价数据
# 特征:面积(㎡)、房间数、地段评分
# 标签:房价(万元)

# 特征矩阵 X:每行是一个房子,每列是一个特征
X = np.array([[120, 3, 8],    # 房子1:120㎡,3室,地段8分
              [80,  2, 6],     # 房子2:80㎡,2室,地段6分
              [150, 4, 9],    # 房子3:150㎡,4室,地段9分
              [90,  2, 7]])    # 房子4:90㎡,2室,地段7分

# 标签向量 y:对应的房价
y = np.array([300, 180, 450, 220])  # 单位:万元

print("房屋特征数据:")
print(X)
print("\n房价标签:")
print(y)

🔮 预测过程就是矩阵运算

当我们训练好模型后,预测新房子价格的过程就是:

预测价格 = 房子特征 × 模型参数
# 假设我们学到的模型参数
weights = np.array([2.0, 30, 15])  # 面积系数、房间系数、地段系数

# 预测新房子的价格
new_house = np.array([100, 2, 7])  # 100㎡,2室,地段7分
predicted_price = np.dot(new_house, weights)  # 点积运算

print(f"新房子特征: {new_house}")
print(f"预测价格: {predicted_price}万元")

📝 本篇小结

  1. 向量​:带方向的数字,表示大小+方向
  2. 矩阵​:数字的表格,可以同时处理多组数据
  3. 矩阵乘法​:机器学习的计算核心,一次性处理所有数据
  4. 实际应用​:数据本身就是矩阵,模型运算就是矩阵运算

🎯 练习题

  1. 创建两个2×2的矩阵,手动计算它们的乘积,然后用Python验证
  2. 想想生活中还有哪些可以用向量表示的量?(提示:力、加速度、RGB颜色等)

下一篇预告:第3篇《概率论就是算可能性——猜硬币的故事》​

我们将学习什么是 概率论,如何通过类似 “抛硬币”的方法,去趣味性地进行 概率论  的问题猜解!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值