线性回归的目标是:

找出输入变量(X)和输出变量(y)之间的线性关系
也就是学出一条“最合适”的直线,用来做预测。


🧠 一句话理解:

用一条直线来“拟合”数据,从而预测未来的值。

比如你想预测一个学生的分数,已知他每天学习的小时数:

学习时间 (小时)成绩 (分)
150
260
365
470

线性回归会学出一条线形公式,比如:

🎯 成绩 = 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)
  • 多项式回归(拟合曲线)
  • 非线性回归(配合特征变换)

想不想试试一个小项目?比如用线性回归预测房价或工资?我可以一步步带你来做 ✨