线性回归API入门
1 课程概览
本课通过身高预测体重的案例演示线性回归API的入门使用。详细讲解LinearRegression的导入、数据准备、模型训练、查看权重(coef_)和偏置(intercept_)、模型预测等完整流程。验证了线性回归API会自动计算最优的权重和偏置,预测结果与手动套公式计算一致。
2 核心概念与定义
- LinearRegression:sklearn.linear_model模块中的线性回归类。
- coef_:模型的权重(W),即斜率。
- intercept_:模型的偏置(B),即截距。
- fit:模型训练方法。
- predict:模型预测方法。
3 算法与模型详解
3.1 线性回归API
导包:
from sklearn.linear_model import LinearRegression
说明:
- linear:线性
- model:模型
- regression:回归
3.2 机器学习六步法
| 步骤 | 操作 | 本课是否需要 |
|---|---|---|
| 1 | 数据加载/准备 | ✅ |
| 2 | 数据预处理 | ❌(数据简单) |
| 3 | 特征工程 | ❌(无需提取/预处理) |
| 4 | 模型训练 | ✅ |
| 5 | 模型预测 | ✅ |
| 6 | 模型评估 | ❌(指标未学) |
3.3 模型属性
| 属性 | 说明 | 数学含义 |
|---|---|---|
| coef_ | 权重(W) | 斜率 |
| intercept_ | 偏置(B) | 截距 |
3.4 身高预测体重案例
训练数据:
| 身高(X) | 体重(Y) |
|---|---|
| 160 | 56.3 |
| 166 | 60.6 |
| 172 | 65.1 |
| 174 | 68.5 |
| 180 | 75.0 |
测试数据:
| 身高(X) | 体重(Y) |
|---|---|
| 176 | ?(待预测) |
3.5 预测原理
- 模型自动计算最优的W和B
- 套用公式:Y = WX + B
- 代入测试数据X=176,得到预测值Y
4 数学原理与推导
4.1 线性回归公式
$$Y = WX + B$$
4.2 预测计算
$$Y_{predict} = W \times 176 + B$$
5 代码示例
from sklearn.linear_model import LinearRegression
def dm01_linear_regression_api():
# 1. 准备数据
# 训练集特征(身高)
x_train = [[160], [166], [172], [174], [180]]
# 训练集标签(体重)
y_train = [56.3, 60.6, 65.1, 68.5, 75.0]
# 测试集特征(身高)
x_test = [[176]]
# 2. 数据预处理(不需要)
# 3. 特征工程(不需要)
# 4. 模型训练
# 4.1 创建模型对象
estimator = LinearRegression()
# 4.2 训练模型
estimator.fit(x_train, y_train)
# 4.3 查看权重和偏置
print("权重(斜率W):", estimator.coef_)
print("偏置(截距B):", estimator.intercept_)
# 5. 模型预测
y_predict = estimator.predict(x_test)
print("预测值:", y_predict)
# 6. 模型评估(指标未学,暂不做)
if __name__ == '__main__':
dm01_linear_regression_api()
输出示例:
权重(斜率W): [0.85821429]
偏置(截距B): -81.04857142857143
预测值: [70.3047619]
5.1 手动验证
# 手动套公式计算
W = 0.85821429
B = -81.04857142857143
X = 176
Y = W * X + B
print("手动计算:", Y) # 70.3047619
预测结果与手动计算一致,验证了API的正确性。
6 重难点与易错提醒
- ❗重点:LinearRegression位于sklearn.linear_model模块下。
- ❗重点:coef_是权重(W),intercept_是偏置(B)。
- ❗重点:线性回归API会自动计算最优的W和B。
- ❗重点:特征数据必须是二维数组([[160], [166], ...])。
- ⚠️易错:特征数据写成一维数组([160, 166, ...])会报错。
- ⚠️易错:混淆coef_和intercept_的含义。
- 💡深入理解:预测结果与手动套公式计算一致,验证API正确性。
7 课堂问答精选
Q: coef_和intercept_分别是什么?
A:
- coef_:权重(W),即斜率,表示特征对结果的影响程度。
- intercept_:偏置(B),即截距,表示基础值。 线性回归公式为 Y = WX + B,模型训练后会自动计算最优的W和B。
Q: 为什么特征数据要写成二维数组?
A: 因为sklearn的API要求特征数据必须是二维数组格式([[160], [166], ...]),即使只有一个特征也要写成二维。如果写成一维数组([160, 166, ...])会报错。
8 本课小结
- 线性回归API:from sklearn.linear_model import LinearRegression
- 流程:准备数据→创建模型→fit训练→查看coef_和intercept_→predict预测。
- coef_:权重(W),即斜率。
- intercept_:偏置(B),即截距。
- 特征数据必须是二维数组格式。
- 预测结果与手动套公式计算一致。
9 延伸思考与实践
- 实践:修改训练数据,观察W和B的变化。
- 思考:线性回归API是如何自动计算最优W和B的?
- 预习:损失函数的概念和计算方法。