问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

线性回归:机器学习中的基础算法

创作时间:
作者:
@小白创作中心

线性回归:机器学习中的基础算法

引用
CSDN
1.
https://blog.csdn.net/www_pp_/article/details/146024676

线性回归是机器学习和数据分析领域中最基础且应用广泛的算法之一。它不仅简单易懂,而且在许多实际问题中都能发挥重要作用。本文将详细介绍线性回归的基本原理、实现步骤以及几个简单的应用案例。

什么是线性回归?

线性回归是一种用于预测连续目标变量的监督学习算法。它的目标是通过拟合一个线性方程来描述特征变量(自变量)与目标变量(因变量)之间的关系。具体来说,线性回归试图找到一个最佳的线性关系,使得预测值与实际值之间的误差最小化。

数学表达

假设我们有一组数据,其中 X 是特征变量,y 是目标变量,线性回归模型可以表示为:

y=β0 +β1 X1 +β2 X2 +⋯+βn Xn +ϵ

其中:

  • y 是目标变量(因变量)。
  • X1 ,X2 ,…,Xn 是特征变量(自变量)。
  • β0 是截距项(Intercept)。
  • β1 ,β2 ,…,βn 是特征系数(Coefficients)。
  • ϵ 是误差项,表示模型无法解释的部分。

如果只有一个特征变量,这种模型称为简单线性回归;如果有多个特征变量,则称为多元线性回归

线性回归的应用场景

线性回归在许多领域都有广泛的应用,例如:

  • 经济学:预测经济指标(如GDP、通货膨胀率)。
  • 金融:预测股票价格或利率。
  • 市场营销:分析广告投入与销售额之间的关系。

示例:广告投入与销售额的线性回归分析

为了更好地理解线性回归,我们通过一个简单的案例来展示其应用:分析广告投入与销售额之间的关系。

数据可视化

通过散点图观察广告投入与销售额之间的关系:

代码:

import pandas as pd #pandas基于numpy封装的
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression
"""..."""
data = pd.read_csv("data.csv")
a = data.广告投入
#绘制散点图
plt.scatter(data.广告投入, data.销售额)
plt.show()
corr = data.corr()#求x和y的相关系数
#估计模型参数,建立回归模型
lr = LinearRegression()
x = data[['广告投入']]
y = data[['销售额']]
lr.fit(x, y)#训练模型
#对回归模型进行检验
"""此处的score指R方"""
result = lr.predict(x)
score = lr.score(x, y)
a = round(lr.intercept_[0],2)#查看截距
b = round(lr.coef_[0][0], 2)#查看斜率
#对回归模型进行预测
predict = lr.predict([[40],[45],[50]])
print(predict)

运行结果:

通过散点图观察广告投入与销售额之间的关系:我们可以初步判断广告投入与销售额之间是否存在线性关系。如果数据点大致分布在一条直线上,说明两者之间可能存在较强的线性关系。

示例:体重,年龄与血压收缩的多元线性回归分析

代码

import pandas as pd
from sklearn.linear_model import LinearRegression
#导入数据
data = pd.read_csv("多元线性回归.csv",encoding='gbk',engine='python')
#打印相关系数矩阵
corr = data[["体重","年龄","血压收缩"]].corr()
#估计模型参数,建立回归模型
lr_model = LinearRegression()
x = data[['体重','年龄']]
y = data[['血压收缩']]
lr_model.fit(x,y)#训练模型
#对回归模型进行检验
"""
score:调整R方,判断自变量对因变量的解释程度
R方越接近于1,自变量对因变量的解释就越好
F检验:方程整体显著性检验
T检验:方程系数显著性检验score给的是R方.
"""
score = lr_model.score(x,y)
#利用回归模型进行预测
print(lr_model.predict([[80,60]]))
print(lr_model.predict([[70,30],[70,20]]))
"""
a:自变量系数
b:截距
"""
a = lr_model.coef_
b = lr_model.intercept_
print("线性回归模型为:y = {:.2f}x1 + {:.2f}x2 + {:.2f}.".format(a[0][0], a[0][1], b[0]))

运行结果

最终,我们得到一个线性回归方程,通过模型参数,我们可以进一步解释体重,年龄对血压收缩的影响。

示例:(如年龄、性别、BMI、血压等)与目标变量(target)的多元线性回归分析

数据导入:

data = pd.read_csv("糖尿病数据.csv", encoding='gbk', engine='python')

代码

import pandas as pd
from sklearn.linear_model import LinearRegression
#导入数据
data = pd.read_csv("糖尿病数据.csv",encoding='gbk',engine='python')
#打印相关系数矩阵
corr = data[["age","sex","bmi","bp","s1","s2","s3","s4","s5","s6","target"]].corr()
#第二步,估计模型参数,建立回归模型
lr_model = LinearRegression()
x = data[['age','sex','bmi','bp','s1','s2','s3','s4','s5','s6']]
y = data[['target']]
lr_model.fit(x,y)#训练模型
score = lr_model.score(x,y)
#第五步,利用回归模型进行预测
print(lr_model.predict(data.iloc[: , : -1]))
#print(lr_model.predict([[0.0380759064334241,0.0506801187398187,0.0616962065186885,0.0218723549949558,-0.0442234984244464,-0.0348207628376986,-0.0434008456520269,-0.00259226199818282,0.0199084208763183,-0.0176461251598052]]))
a = lr_model.coef_
b = lr_model.intercept_
print("线性回归模型为:y = {:.2f}x1 + {:.2f}x2 + {:.2f}x3 + {:.2f}x4  + {:.2f}x5 + {:.2f}x6 + {:.2f}x7 + {:.2f}x8 + {:.2f}x9 + {:.2f}x10 + {:.2f}.".format(a[0][0], a[0][1],a[0][2],a[0][3],a[0][4],a[0][5],a[0][6],a[0][7],a[0][8],a[0][9], b[0]))

运行结果

我们得到了一个十元线性回归模型,用于分析多个特征(如年龄、性别、BMI、血压等)对目标变量(target)的影响。

线性回归的局限性

尽管线性回归简单易用,但它也有一些局限性:

  1. 线性假设:线性回归假设特征与目标变量之间存在线性关系,如果实际关系是非线性的,模型效果会大打折扣。
  2. 多重共线性:如果特征之间存在高度相关性,可能导致模型不稳定。
  3. 异常值敏感:线性回归对异常值较为敏感,可能影响模型的拟合效果。

总结

线性回归是一种强大的工具,适用于许多预测和分析任务。通过本文的介绍,希望读者能够对线性回归有更深入的理解,并能够在实际问题中应用它。

本文原文来自CSDN

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号