什么是线性回归
线性回归是一种用于预测目标值与一个或多个特征值之间关系的统计方法。它假设目标值是输入特征值的线性组合,并且可以通过一个最佳拟合的直线来描述这种关系。线性回归的目标是找到这条最佳拟合直线,使得预测值与真实值之间的误差平方和最小。
线性回归的基本公式
对于单变量线性回归,假设我们有一个自变量
x
x
x 和因变量
y
y
y,线性回归模型可以表示为:
y
=
β
0
+
β
1
x
+
ϵ
y = \beta_0 + \beta_1 x + \epsilon \
y=β0+β1x+ϵ
其中:
- y y y是因变量(目标值)。
- x x x是自变量(特征值)。
- β 0 \beta_0 β0 是截距(intercept)。
- β 1 \beta_1 β1 是斜率(slope)。
- ϵ \epsilon ϵ是误差项。
线性回归的例子
下面是一个使用 Python 和 scikit-learn
库实现线性回归的例子,包括输出回归参数(截距和斜率)并绘制回归直线图。
所需库
确保你安装了所需的库:
pip install numpy pandas matplotlib scikit-learn
代码示例
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
# 生成示例数据
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
# 拆分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建并训练线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)
# 输出回归参数
intercept = model.intercept_[0]
slope = model.coef_[0][0]
print(f"Intercept (β0): {intercept}")
print(f"Slope (β1): {slope}")
# 预测
y_pred = model.predict(X_test)
# 绘制回归直线图
plt.scatter(X, y, color='blue', label='Data points')
plt.plot(X_test, y_pred, color='red', linewidth=2, label='Regression line')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Linear Regression')
plt.legend()
plt.show()
解释
- 生成数据:使用 NumPy 生成一些随机数据,其中自变量 ( X ) 是随机生成的,因变量 ( y ) 根据线性关系生成,并加入了一些随机噪声。
- 拆分数据集:使用
train_test_split
函数将数据集拆分为训练集和测试集。 - 创建并训练模型:使用
LinearRegression
创建一个线性回归模型,并使用训练数据进行训练。 - 输出回归参数:提取并输出回归模型的截距和斜率。
- 预测:使用训练好的模型对测试集数据进行预测。
- 绘图:绘制数据点和回归直线,展示回归效果。
这个例子展示了如何使用线性回归进行数据拟合,并输出回归参数及可视化结果。