目录
线性回归:理解与应用
线性回归是一种广泛使用的统计方法,用于建模和预测因变量与一个或多个自变量之间的线性关系。它是机器学习中最基础也是最重要的算法之一,适用于多种实际场景,如预测销售额、评估房地产价值、预测股票价格等。本文将介绍线性回归的基本概念,并通过具体的例子来展示其应用。
什么是线性回归?
线性回归是一种监督学习技术,用于预测连续数值型的目标变量。它假设自变量与因变量之间存在线性关系,并试图找到最佳拟合直线来描述这种关系。线性回归的核心在于最小化预测值与实际值之间的差距,即误差平方和(SSE)。
线性回归可以分为两种主要类型:一元线性回归和多元线性回归。
一元线性回归
当只有一个自变量时,我们称之为一元线性回归。一元线性回归的数学模型可以表示为: y=β0+β1x+εy=β0+β1x+ε 其中,
- yy 是因变量(也称为响应变量)。
- xx 是自变量(也称为解释变量)。
- β0β0 是截距项,当 x=0x=0 时的 yy 的值。
- β1β1 是斜率,表示自变量 xx 每增加一个单位时因变量 yy 的变化量。
- εε 是随机误差项,表示模型未能捕捉到的影响 yy 的因素。
实例:
以下为实验数据:
下列为实例代码:
import pandas as pd # 导入Pandas库,用于数据处理
from matplotlib import pyplot as plt # 导入Matplotlib库的pyplot模块,用于绘图
from sklearn.linear_model import LinearRegression # 导入Scikit-learn库的LinearRegression类,用于线性回归分析
data = pd.read_csv('data.csv') # 读取CSV文件中的数据到Pandas DataFrame
plt.scatter(data.广告投入, data.销售额) # 绘制散点图,其中x轴为'广告投入',y轴为'销售额'
plt.show() # 显示图表
corr = data.corr() # 计算数据的相关系数矩阵
lr = LinearRegression() # 创建一个线性回归模型对象
x = data[['广告投入']] # 选择DataFrame中的'广告投入'这一列作为特征变量
y = data[['销售额']] # 选择DataFrame中的'销售额'这一列作为目标变量
lr.fit(x, y) # 使用fit方法训练模型
result = lr.predict(x) # 使用训练好的模型对输入特征进行预测
score = lr.score(x, y) # 计算模型对训练数据的解释方差比(R²)
a = round(lr.intercept_[0], 2) # 截距项(保留两位小数)
b = round(lr.coef_[0][0], 2) # 斜率项(保留两位小数)
print(f"线性回归模型为:y = {b}x + {a}") # 输出线性回归模型方程
运行出来的散点图为:
结果为:
正态分布的重要性
在一元线性回归中,随机误差项 εε 通常假定为独立同分布的正态分布。这是因为正态分布是许多实际问题的基础假设之一,它保证了回归参数估计的有效性和可靠性。正态分布的期望为 0,方差相同,为σ2^2。
多元线性回归
当有多个自变量时,我们称之为多元线性回归。多元线性回归的数学模型可以表示为: y=β0+β1x1+β2x2+…+βpxp+εy=β0+β1x1+β2x2+…+βpxp+ε 其中,
- yy 是因变量。
- x1,x2,…,xpx1,x2,…,xp 是自变量。
- β0β0 是截距项。
- β1,β2,…,βpβ1,β2,…,βp 是斜率,表示每个自变量对因变量的影响。
- εε 是随机误差项。
实例讲解
为了更好地理解线性回归的应用,我们以一个具体的实例来说明。假设我们有一组数据,包含不良贷款、各项贷款余额、本年累计应收贷款、贷款项目个数以及本年固定资产投资额等信息。我们的目标是使用这些数据来预测不良贷款的金额。
数据准备
我们从 Excel 文件 "案例.xlsx" 中读取数据。
数据分析
我们首先分析这些变量之间的相关性,以确定哪些变量可能与不良贷款有关联。
构建模型
我们选择使用 "各项贷款余额" 和 "本年固定资产投资额" 作为自变量,"不良贷款" 作为因变量,构建多元线性回归模型。
训练模型
使用数据集的一部分来训练模型,其余部分用于验证模型的准确性。
验证模型
评估模型的性能,例如使用 R² 分数来衡量模型的拟合程度。
应用模型
使用训练好的模型进行预测。
代码实现
下面是一个 Python 代码示例,演示如何使用 pandas
和 scikit-learn
库来完成上述任务:
import pandas as pd
from sklearn.linear_model import LinearRegression
# 加载数据
data = pd.read_excel('案例.xlsx')
# 创建线性回归模型
lr_model = LinearRegression()
# 准备数据
X = data[['各项贷款余额', '本年累计应收贷款', '贷款项目个数', '不良贷款']]
y = data[['本年固定资产投资额']]
# 训练模型
lr_model.fit(X, y)
# 计算模型的决定系数 (R²)
score = lr_model.score(X, y)
print(score)
# 进行预测
predictions = lr_model.predict([[100, 50, 100, 10]])
print("预测结果 (100亿元, 50亿元, 100个, 10亿元):", predictions)
# 进行多个预测
predictions_multiple = lr_model.predict([[120, 60, 110, 12], [110, 40, 90, 8]])
print("多个预测结果:", predictions_multiple)
# 输出模型的截距和系数 y=kx+b
b = lr_model.intercept_
k = lr_model.coef_
print("系数形状:", k.shape)
print("线性回归模型为:y = {:.2f} + {:.2f} * 各项贷款余额 + {:.2f} * 本年累计应收贷款 + {:.2f} * 贷款项目个数 + {:.2f} * 不良贷款."
.format(b[0], k[0][0], k[0][1], k[0][2], k[0][3]))
运行结果:
结论
通过上述实例,我们可以看到线性回归模型在实际问题中的应用。希望这篇文章能帮助你更好地理解线性回归的概念,并学会如何使用它解决实际问题。