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进行简单线性回归分析的例子。为了简单明了,我们选取图一中 国内旅游收入(亿元)与国内旅游人数(百万人次)的数据,作为我们进行回归分析的数据。

b67affc41c020dff7f358fb02e441267.png d29f2f592610f5210872281f0d4000ca.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
678500aa78f491d3b9e708423ccb0840.png

02

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

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

from matplotlib import pyplot as pltplt.scatter (data.numpeople,data.income) #画出散点图data.corr()  #求相关系数
1cee7c5a5539c5541d750b755f34e501.png 0b7a45cf16a1889228312e6ea7806c4b.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拟合线性回归模型
76e0d7311d776988cd6d07a482880f9f.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] #显示回归系数
0c1100da5f9c42301115502abc360e5b.png 999b2f65890ff0a0353f409af3461724.png d29f2f592610f5210872281f0d4000ca.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 

ee9068708e76f4fe6dc8bc2a7b6d1fc2.png

数据皮皮虾带你学python

本期作者 : 陈颖姝

本期编辑校对:张惠宁

 Happy Halloween 

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页