sklearn实现一元线性回归

一、sklearn的介绍

  • sklearn(Scikit-learn)是Python中用于机器学习的一个非常流行的库,它提供了大量的算法和工具来构建和评估模型。线性回归是统计学中用于预测一个或多个自变量(特征)和一个因变量(目标)之间线性关系的方法。回归是一种应用广泛的预测建模技术,这种技术的核心在于预测的结果是连续型变量。sklearn中的线性模型模块是linear_model,linear_model包含了多种多样的类和函数,我们使用LinearRegression类来进行线性回归。

二、线性回归

1.一元线性回归

  • 如果只有一个自变量X,而且因变量Y和自变量X之间的数量变化关系呈近似线性关系,就可以建立一元线性回归方程,由自变量X的值来预测因变量Y的值,这就是一元线性回归预测。

2.一元线性回归的数学公式

  • 如果因变量y和自变量x之间呈线性相关,那就是说,对于自变量x的某一值,因变量y对应的取值不是唯一确定的,而是有很多的可能取值,它们分布在一条直线的上下,这是因为y还受除自变量以外的其他因素的影响。这些因素的影响大小和方向都是不确定的,通常用一个随机变量ϵ 来表示,也称为随机扰动项。于是,Y和X之间的依存关系可表示为:

y = β 0 ​ + β 1 ​ x + ϵ y=β0​+β1​x+ϵ y=β0​+β1​x+ϵ
如上就是总体的一元线性回归模型。其中β0和β1是常数。随机扰动项是 ϵ 无法直接观测的随机变量。

3.多元线性回归

多元线性回归的内容我们在下一篇讲到。

三、线性回归模型的优缺点

1.优点

  • 线性回归模型可以很好地处理连续型因变量,并且可以预测因变量的取值范围。
  • 可以帮助我们理解自变量对因变量的影响程度,以及自变量之间的交互作用。
  • 线性回归模型在处理大量数据时非常有效,可以快速地进行参数估计和模型拟合。
  • 是一种相对简单和直观的模型,可以通过统计软件轻松实现。

2.缺点

  • 线性回归模型假设自变量与因变量之间存在线性关系,但在实际问题中,这种假设可能不成立。
  • 当自变量之间存在多重共线性时,会导致参数估计不准确,甚至可能导致模型无法拟合数据。
  • 线性回归模型对异常值非常敏感,一个异常值可能会极大地影响模型的拟合结果。
  • 不能处理高维数据,当自变量数量较多时,模型的计算量和内存需求会迅速增加。

四、一元线性回归案例

1.介绍数据

我们使用的是广告投入与销售额之前关系的数据。如下:
在这里插入图片描述

2.导入库

import pandas as pd  #pandas基于numpy封装的
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression
  • pandas:用于数据处理和分析。
  • matplotlib.pyplot:用于绘制图形,这里主要用于绘制散点图来直观展示“广告投入”与“销售额”之间的关系。
  • sklearn.linear_model.LinearRegression:从sklearn库中导入线性回归模型,用于拟合和预测数据。
  • 使用pandas的read_csv函数读取名为"data.csv"的CSV文件,该文件应包含两列数据:‘广告投入’和’销售额’。

3.读取数据并绘制散点图

data = pd.read_csv("data.csv")
a = data.广告投入

#绘制散点图
plt.scatter(data.广告投入,data.销售额)
plt.show()

这里使用 pd.read_csv函数来读取csv文件,并且使用matplotlib.pyplot库中的scatter函数来绘制散点图,如下所示。
在这里插入图片描述

4.建立回归模型

corr = data.corr()#求x和y的相关系数
#估计模型参数,建立回归模型
lr = LinearRegression()
x = data[['广告投入']]
y = data[['销售额']]

lr.fit(x,y)#训练模型

corr函数是用来求自变量x和因变量y之间的相关系数,也就是数据中广告投入与销售额的相关性。如下图,并且使用 fix 函数对模型进行训练。
在这里插入图片描述

5.模型检验

#第四步,对回归模型进行检验
"""此时的score指R方"""
# result = lr.predict(x)
score = lr.score(x,y)

a = round(lr.intercept_[0],2)
b = round(lr.coef_[0][0],2)
print("线性回归模型为:y = {}x + {}.".format(b,a))

计算模型的score值(也就是R²分数,即决定系数) 来评估模型的好坏。R²分数的值越接近1,说明模型的拟合效果越好。
再查看模型的截距(intercept)和斜率(coef),并且 lr.intercept是一维数据,lr.coef是二维数据,round函数是将数据进行四舍五入,然后保留小数点后两位。
最终输出回归模型:
在这里插入图片描述

6.模型预测

#第五步,利用回归模型进行预测
predict = lr.predict([[40],[45],[50]])
print(predict)

接着将自变量(广告投入)分别设为40,45,50对模型进行预测因变量(销售额),得到结果如下:
在这里插入图片描述

五、小结

  • 本篇文章我们重点了使用sklearn来实现一元线性回归的案例,一元线性回归能够表明自变量和因变量之间的显著关系,并且模型的准确率很不错。
  • 但也有很多局限性,比如一元线性回归模型假设自变量和因变量之间的关系是线性的,但在现实中,很多情况下二者的关系并不是严格的线性关系。
  • 一元线性回归模型只能处理一个自变量,不能处理多个自变量之间的相互影响关系,这在实际问题中可能会出现。
  • 下篇文章我们会重点介绍使用sklearn实现多元线性回归。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值