背景与数据
这个实验用房屋面积预测房价,数据只有两个样本:
| 面积(1000 平方英尺) | 价格(千美元) |
|---|---|
| 1.0 | 300 |
| 2.0 | 500 |
- 面积是特征 x ,价格是目标 y
- 我们要拟合一条直线 fw,b(x)=wx+b 来预测房价
1. 数据准备
import numpy as np
import matplotlib.pyplot as plt
# 加载数据
x_train = np.array([1.0, 2.0]) # 面积,单位:1000平方英尺
y_train = np.array([300.0, 500.0]) # 价格,单位:千美元
# 样本数量
m = x_train.shape[0] # 输出:2
2. 定义模型函数
def compute_model_output(x, w, b):
m = x.shape[0]
f_wb = np.zeros(m)
for i in range(m):
f_wb[i] = w * x[i] + b
return f_wb
3. 初始模型(w=100, b=100)
用初始参数计算预测值:
- 对 x(0)=1.0:fwb(1.0)=100∗1.0+100=200(真实值 300)
- 对 x(1)=2.0:fwb(2.0)=100∗2.0+100=300(真实值 500)可以看到这条线完全偏离了数据点。
找到正确的 w 和 b
我们可以直接用两个点解出完美拟合的参数:把两个点代入 y=wx+b:
- 300=w∗1.0+b
- 500=w∗2.0+b
用第二个方程减第一个方程:500−300=(2w+b)−(w+b)200=w
把 w=200 代入第一个方程:300=200∗1.0+b→b=100
正确参数是 w=200,b=100,这和提示里给的建议一致。
验证一下:
- x=1.0: 200∗1+100=300
- x=2.0: 200∗2+100=500
效果:

- 单变量线性回归模型:fw,b(x)=wx+b,本质是用直线拟合数据。
- 训练数据 :这里的
x_train、y_train是模型学习的基础,我们通过调整参数让直线尽可能贴近这些点。 - 参数含义 :
- w:斜率,代表每增加 1 单位面积(1000 平方英尺),房价增加多少千美元(这里是 200 千美元,即 20 万美元)。
- b:截距,代表面积为 0 时的理论房价(这里是 100 千美元,即 10 万美元)。