线性回归的目标是:
找出输入变量(X)和输出变量(y)之间的线性关系
也就是学出一条“最合适”的直线,用来做预测。
🧠 一句话理解:
用一条直线来“拟合”数据,从而预测未来的值。
比如你想预测一个学生的分数,已知他每天学习的小时数:
学习时间 (小时) | 成绩 (分) |
---|---|
1 | 50 |
2 | 60 |
3 | 65 |
4 | 70 |
线性回归会学出一条线形公式,比如:
🎯 成绩 = 45 + 6 × 学习小时数
📐 数学公式
线性回归模型的形式:
y = w * x + b
x
:输入特征(如学习时间)y
:输出值(如成绩)w
:权重(斜率)b
:偏置(截距)
目标是找到最好的 w
和 b
,使预测值与真实值之间的误差最小。
📉 损失函数(Loss Function)
我们用 均方误差(MSE) 来衡量预测误差:
MSE = 平均(预测值 - 实际值)^2
训练的目标就是让 MSE 越小越好!
🤖 用 Python 实现线性回归(scikit-learn)
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
# 训练数据
X = np.array([[1], [2], [3], [4]]) # 学习时间(小时)
y = np.array([50, 60, 65, 70]) # 对应成绩
# 创建并训练模型
model = LinearRegression()
model.fit(X, y)
# 打印模型参数
print("斜率 (w):", model.coef_[0])
print("截距 (b):", model.intercept_)
# 预测新数据
new_hours = np.array([[5]])
predicted_score = model.predict(new_hours)
print("预测成绩:", predicted_score[0])
# 可视化
plt.scatter(X, y, color='blue', label='训练数据')
plt.plot(X, model.predict(X), color='red', label='拟合线')
plt.xlabel("学习时间")
plt.ylabel("成绩")
plt.legend()
plt.show()
✅ 总结
优点 | 缺点 |
---|---|
简单易懂、运行快 | 只能建模线性关系 |
可解释性强 | 对异常值敏感,容易欠拟合 |
可作为复杂模型的基础模块 | 无法处理非线性关系(需扩展) |
🚀 进阶方向
- 多元线性回归(多维特征)
- 正则化回归(Ridge/Lasso)
- 多项式回归(拟合曲线)
- 非线性回归(配合特征变换)
想不想试试一个小项目?比如用线性回归预测房价或工资?我可以一步步带你来做 ✨
发表回复