机器学习 之 线性回归算法

目录

线性回归:理解与应用

什么是线性回归?

一元线性回归

正态分布的重要性

多元线性回归

实例讲解

数据准备

数据分析

构建模型

训练模型

验证模型

应用模型

代码实现


线性回归:理解与应用

线性回归是一种广泛使用的统计方法,用于建模和预测因变量与一个或多个自变量之间的线性关系。它是机器学习中最基础也是最重要的算法之一,适用于多种实际场景,如预测销售额、评估房地产价值、预测股票价格等。本文将介绍线性回归的基本概念,并通过具体的例子来展示其应用。

什么是线性回归?

线性回归是一种监督学习技术,用于预测连续数值型的目标变量。它假设自变量与因变量之间存在线性关系,并试图找到最佳拟合直线来描述这种关系。线性回归的核心在于最小化预测值与实际值之间的差距,即误差平方和(SSE)。

线性回归可以分为两种主要类型:一元线性回归和多元线性回归。

一元线性回归

当只有一个自变量时,我们称之为一元线性回归。一元线性回归的数学模型可以表示为: y=β0+β1x+εy=β0​+β1​x+ε 其中,

  • 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​+β1​x1​+β2​x2​+…+βp​xp​+ε 其中,

  • yy 是因变量。
  • x1,x2,…,xpx1​,x2​,…,xp​ 是自变量。
  • β0β0​ 是截距项。
  • β1,β2,…,βpβ1​,β2​,…,βp​ 是斜率,表示每个自变量对因变量的影响。
  • εε 是随机误差项。

实例讲解

为了更好地理解线性回归的应用,我们以一个具体的实例来说明。假设我们有一组数据,包含不良贷款、各项贷款余额、本年累计应收贷款、贷款项目个数以及本年固定资产投资额等信息。我们的目标是使用这些数据来预测不良贷款的金额。

数据准备 

我们从 Excel 文件 "案例.xlsx" 中读取数据。

数据分析

我们首先分析这些变量之间的相关性,以确定哪些变量可能与不良贷款有关联。

构建模型

我们选择使用 "各项贷款余额" 和 "本年固定资产投资额" 作为自变量,"不良贷款" 作为因变量,构建多元线性回归模型。

训练模型

使用数据集的一部分来训练模型,其余部分用于验证模型的准确性。

验证模型

评估模型的性能,例如使用 R² 分数来衡量模型的拟合程度。

应用模型

使用训练好的模型进行预测。

代码实现

下面是一个 Python 代码示例,演示如何使用 pandasscikit-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]))

 运行结果:

 

结论

通过上述实例,我们可以看到线性回归模型在实际问题中的应用。希望这篇文章能帮助你更好地理解线性回归的概念,并学会如何使用它解决实际问题。

  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值