Python 散点图线性拟合_在Python中实现简单线性回归分析的例子

回归分析简介

 Happy Halloween

在统计学中,回归分析(regression analysis)指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。回归分析按照涉及的变量的多少,分为一元回归和多元回归分析;按照涉及的因变量的多少,可分为简单回归分析和多重回归分析;按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。

下面是回归分析中最基础的简单线性回归模型,它反映一个自变量与一个因变量之间的关系。

模型形式:Y=β01X1

其中:Y为因变量;X1为自变量;

β0为常数项,表示回归直线在y轴上的截距;

β1为X1的回归系数,表示在其他条件不变的情况下,X1变化一个单位所引起的因变量的变化量;

ε为随机误差,即随机因素对因变量产生的影响。

Sklearn简介

 Happy Halloween

Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression)、降维(Dimensionality Reduction)、分类(Classfication)、聚类(Clustering)等方法。在下面的例子中,我们会从sklearn中引入线性回归模型。

国内旅游人数与旅游收入回归分析的例子

 Happy Halloween

接下来的是运用Python进行简单线性回归分析的例子。为了简单明了,我们选取图一中 国内旅游收入(亿元)与国内旅游人数(百万人次)的数据,作为我们进行回归分析的数据。

57b34331136c1c0acdf1590dc6a19d73.png 4ecfe0f46031ca0da5e78d2aa99f5344.png

01

引入因变量与自变量

将国内旅游人数(百万人次)作为自变量,命名为’numpeople’,将国内旅游收入(亿元)作为因变量,命名为’income’,引入数据。(为了让大家可以直接粘贴语句,此处直接输入数据)

import numpy as npimport pandas as pddata=pd.DataFrame({'time'[1994,1995,1996,1997,1998,1999,2000,2001,2002,2003],'income'[1023.5,1375.7,1638.4,2122.7,2391.2,2831.9,3175.5,3522.4,3878.4,3442.3],'numpeople':[524,629,639,644,695,719,744,784,878,870]}) #输入数据income和numpeople
0aed2ad1c584c592cb5f9c906fc690b9.png

02

绘制散点图,确定回归模型类型

根据数据,画出自变量与因变量的散点图。由图三可以看出,这些点有落在一条直线上的趋势,即可以说明自变量与因变量有明显的线性相关性。再求出旅游人数与旅游收入之间的相关系数(图四),为0.95,则可以确定二者之间有非常强的相关性。可以看出,国内旅游人数越多,国内旅游收入也越多。因此,我们就可以建立二者之间的简单线性回归模型。

from matplotlib import pyplot as pltplt.scatter (data.numpeople,data.income) #画出散点图data.corr()  #求相关系数
1f93519f40e53b603a478217a0414770.png ed70ddb89dbc97206ecde0f58c83c243.png

03

 建立回归模型,估计模型参数

首先由sklearn导入简单线性回归的求解类LinearRegression,然后使用该类进行建模,得到model模型变量。再引入自变量x和因变量y。调用模型的fit函数,对模型进行拟合并求得参数(可理解为模型β0和β1的估计值)。

from sklearn.linear_model import LinearRegressionmodel=LinearRegression()#建立线性回归模型’model’x = data[['numpeople']]y = data[['income']] #引入自变量x:numpeople和因变量y:incomemodel.fit(x,y) #x,y拟合线性回归模型
b0837b12a21eb026471cb6b6214cce41.png

04

模型检验

用score函数算出模型的准确率得分(此处用相关系数平方R2来表示准确率得分)。从图六可以看出得分有0.90(范围[0,1]),是一个比较高的分数,说明模型比较精确,接下来可以显示出估计参数的值。可以使用模型的intercept函数查看参数alpha(β0截距),使用coef属性查看参数beta(β1回归系数),如图七所示。

model.score(x,y) #模型检验alpha= model.intercept_[0] #显示截距beta = model.coef_[0][0] #显示回归系数
0639b42e66c5157905a7360499cade00.png 234a5229d59919d61e1720cdf20bda55.png 4ecfe0f46031ca0da5e78d2aa99f5344.png

代码整理

 Happy Halloween

import numpy as npimport pandas as pdfrom matplotlib import pyplot as pltfrom sklearn.linear_model import LinearRegressiondata=pd.DataFrame({'time':[1994,1995,1996,1997,1998,1999,2000,2001,2002,2003],'income':[1023.5,1375.7,1638.4,2122.7,2391.2,2831.9,3175.5,3522.4,3878.4,3442.3],'numpeople':[524,629,639,644,695,719,744,784,878,870]}) #输入数据income和numpeopleplt.scatter (data.numpeople,data.income) #画出散点图data.corr()  #求相关系数model=LinearRegression()#建立线性回归模型’model’x = data[['numpeople']]y = data[['income']] #引入自变量x:numpeople和因变量y:incomemodel.fit(x,y) #x,y拟合线性回归模型model.score(x,y) #模型检验alpha= model.intercept_[0] #显示截距beta = model.coef_[0][0] #显示回归系数

参考网址:

https://www.cnblogs.com/shujufenxi/p/9054439.html

https://baike.baidu.com/item/回归分析/2625498?fr=aladdin

https://wenku.baidu.com/view/be2e80132a160b4e767f5acfa1c7aa00b52a9d9e.html

https://www.jianshu.com/p/6ada34655862

 Happy Halloween 

5d6f1e0905d896c888c8f88c10f426d6.png

数据皮皮虾带你学python

本期作者 : 陈颖姝

本期编辑校对:张惠宁

 Happy Halloween 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值