基于jupyter notebook的python编程-----通过原理,求解分析线性回归方程的的待定系数a和判定系数R2

Ginger ·
更新时间:2024-09-21
· 806 次阅读

分析线性回归方程的的待定系数a和判定系数R2的分解步骤目录一、运行jupyter notebook,搭建python环境1、打开Windows终端命令行,输入==jupyter notebook==,打开我们的jupyter工具,如下所示:2、在jupyter的web网页中创建python文件,如下所示:3、现在就可以在jupyter的代码行里面输入我们的代码啦!二、本次内容所需要的表格数据1、本次所需要的数据主要如下三、实验原理四、编辑python代码,分步骤解析线性回归方程1、导入我们所需要的python库2、为自变量和因变量赋值3、求自变量温度的==和==及==平均值==4、求因变量销售量的==和==及==平均值==5、求==温度-温度平均值==的==和==6、求==销售量-销售量平均值==的==和==7、求==x的离差平方和==8、求y的离差平方和9、求x和y的==离差积和==11、求y=ax+b的系数a和截距b,以及回归方程12、求自变量温度对应的所有预测值==sales1==13、求预测值sales1的平均值==y2==14、求预测销售值-预测销售平均值的和15、求预测销售值sales1的离差平方和16、求销售值y和预测销售值y11的==离差积和==17、求实际值-预测值的平方和==Se==18、计算判定系数==R2==19、求判定系数R2的==另一种方法==20、进行线性回归曲线图的模拟,并利用seaborn库标记出==置信带==五、python的完整实验代码
对于python求解线性回归的待定系数和判定系数,如果只能通过第三方库进行求解,那我们始终不能理解回归方程的意义
本次博客,林君学长带大家了解,如何分解步骤,一步一步求出过程中的所需要的值,最终得到我们所需要的结果!
一、运行jupyter notebook,搭建python环境 1、打开Windows终端命令行,输入jupyter notebook,打开我们的jupyter工具,如下所示:

在这里插入图片描述

2、在jupyter的web网页中创建python文件,如下所示:

在这里插入图片描述

3、现在就可以在jupyter的代码行里面输入我们的代码啦! 二、本次内容所需要的表格数据 1、本次所需要的数据主要如下

1)、主要实现代码的表格内容:
在这里插入图片描述
在这里插入图片描述
上面的表格去掉状态栏。左边为X温度,右边为Y,红茶的销售量
2)、画出置信带所用的数据表格如下:
在这里插入图片描述
在这里插入图片描述
相比于上面,只加了变量蓝,X代表温度,Y代表销售量!

三、实验原理

1)、实验原理如下的解析步骤
在这里插入图片描述
2)、步骤2
在这里插入图片描述
3)、步骤3
在这里插入图片描述
4)、步骤4
在这里插入图片描述
5)、步骤5
在这里插入图片描述
在这里插入图片描述
6)、步骤6
在这里插入图片描述
7)、步骤7
在这里插入图片描述
在这里插入图片描述

四、编辑python代码,分步骤解析线性回归方程 1、导入我们所需要的python库 import numpy as np import matplotlib.pyplot as plt %matplotlib inline 2、为自变量和因变量赋值 data = np.genfromtxt("D:/红茶数据.csv",delimiter=",") temperature=data[0:14,0]#自变量温度 sales=data[0:14,1]#因变量销售量 3、求自变量温度的平均值

1)、python代码如下:

sumx=0#自变量的和 x1=0#自变量的平均值 for i in range(0,len(temperature)): sumx=sumx+temperature[i] print("温度的和为:",sumx) x1=sumx/len(temperature) print("温度的平均值为:",x1)

2)、运行结果如下:
在这里插入图片描述

4、求因变量销售量的平均值

1)、python代码如下

sumy=0#因变量的和 y1=0#因变量的平均值 for i in range(0,len(sales)): sumy=sumy+sales[i] print("销售量的和为:",sumy) y1=sumy/len(sales) print("销售量的平均值为:",y1)

2)、运行结果如下:
在这里插入图片描述

5、求温度-温度平均值

1)、python代码如下:

x_x1=0#x-x1的值的和 for i in range(0,len(temperature)): x_x1=x_x1+(temperature[i]-x1) print("温度-温度平均值的和为:",x2)

2)、运行结果如下:
在这里插入图片描述

6、求销售量-销售量平均值

1)、python代码如下:

y_y1=0#y-y1的值的和 for i in range(0,len(sales)): y_y1=y_y1+(sales[i]-y1) print("销售量-销售量平均值的和为:",y_y1)

2)、运行结果如下:
在这里插入图片描述

7、求x的离差平方和

1)、python代码如下:

Sxx=0#x-x1的值的平方和 for i in range(0,len(temperature)): Sxx=Sxx+((temperature[i]-x1)*(temperature[i]-x1)) print("x的离差平方和为:",Sxx)

2)、运行结果如下:
在这里插入图片描述

8、求y的离差平方和

1)、python代码如下:

Syy=0#y-y1的值的平方和 for i in range(0,len(sales)): Syy=Syy+((sales[i]-y1)*(sales[i]-y1)) print("y的离差平方和为:",Syy)

2)、运行结果如下:
在这里插入图片描述

9、求x和y的离差积和

1)、python代码如下:

Sxy=0#(x-x1)(y-y1)的和 for i in range(0,len(temperature)): Sxy=Sxy+((temperature[i]-x1)*(sales[i]-y1)) print("x和y的离差积和为:",Sxy)

2)、运行结果如下:
在这里插入图片描述

11、求y=ax+b的系数a和截距b,以及回归方程

1)、python代码如下:

#求y=ax+b的系数a和截距b a=Sxy/Sxx b=y1-a*x1 print("销售的回归方程的系数为:",a) print("销售的回归方程的截距为:",b) print("回归方程为y=",a,"x+",b)

2)、运行结果如下:
在这里插入图片描述
上面结果计算的由来就是如下原理的应用
在这里插入图片描述

12、求自变量温度对应的所有预测值sales1

1)、python代码如下:

#求预测值sales1 sales1=[] for i in range(0,len(temperature)): sales1.append(a*temperature[i]+b) print(sales1)

2)、运行结果如下:
在这里插入图片描述

13、求预测值sales1的平均值y2

1)、python代码如下:

#求预测值的平均值y2 y2=0 sumy2=0 for i in range(len(sales1)): sumy2=sumy2+sales1[i] print(sumy2) y2=sumy2/len(sales1) print("预测销售值的平均值为:",y2)

2)、运行结果如下:
在这里插入图片描述

14、求预测销售值-预测销售平均值的和

1)、python代码如下:

#求预测值-平均值的和y11_y2 y11_y2=0 for i in range(0,len(sales1)): y11_y2=y11_y2+(sales1[i]-y2) print("预测销售值-预测销售平均值的和为:",y11_y2)

2)、运行结果如下:
在这里插入图片描述

15、求预测销售值sales1的离差平方和

1)、python代码如下:

#求实际值-预测值的和y_y2的平方和 Syy1=0 for i in range(0,len(sales1)): Syy1=Syy1+((sales1[i]-y2)*(sales1[i]-y1)) print("预测销售值y11的离差平方和为:",Syy1)

2)、运行结果如下:
在这里插入图片描述

16、求销售值y和预测销售值y11的离差积和

1)、python代码如下:

#求(y-y1)(y11-y2)乘积的和 Syy2=0 for i in range(0,len(sales)): Syy2=Syy2+((sales[i]-y1)*(sales1[i]-y2)) print("销售值y和预测销售值y11的离差积和为:",Syy2)

2)、运行结果如下:
在这里插入图片描述

17、求实际值-预测值的平方和Se

1)、python代码如下:

#求(y-y11)的平方和Se Se=0 for i in range(0,len(sales)): Se=Se+((sales[i]-sales1[i])*(sales[i]-sales1[i])) print(Se)

2)、运行结果如下:

18、计算判定系数R2

1)、python代码如下:

#计算判定系数R2 R=Syy2/((Syy1*Syy)**0.5) R2=R*R print("判定系数R2为:",R2)

2)、运行结果如下:
在这里插入图片描述

19、求判定系数R2的另一种方法

1)、python代码如下:

#求判定系数R2的另一种方法 R2=1-(Se/Syy) print("判定系数R2为:",R2)

2)、运行结果如下:
在这里插入图片描述

20、进行线性回归曲线图的模拟,并利用seaborn库标记出置信带

1)、python代码如下:

#利用seaborn分析置信带 data1=pd.read_excel('D:\红茶数据.xlsx') sns.pairplot(data1,x_vars=['X'],y_vars=['Y'], height=3, aspect=0.8, kind='reg') plt.show()

2)、运行结果如下:
在这里插入图片描述

五、python的完整实验代码 import numpy as np import matplotlib.pyplot as plt %matplotlib inline data = np.genfromtxt("D:/红茶数据.csv",delimiter=",") temperature=data[0:14,0]#自变量温度 sales=data[0:14,1]#因变量销售量 sumx=0#自变量的和 x1=0#自变量的平均值 for i in range(0,len(temperature)): sumx=sumx+temperature[i] print("温度的和为:",sumx) x1=sumx/len(temperature) print("温度的平均值为:",x1) sumy=0#因变量的和 y1=0#因变量的平均值 for i in range(0,len(sales)): sumy=sumy+sales[i] print("销售量的和为:",sumy) y1=sumy/len(sales) print("销售量的平均值为:",y1) x_x1=0#x-x1的值的和 for i in range(0,len(temperature)): x_x1=x_x1+(temperature[i]-x1) print("温度-温度平均值的和为:",x2) y_y1=0#y-y1的值的和 for i in range(0,len(sales)): y_y1=y_y1+(sales[i]-y1) print("销售量-销售量平均值的和为:",y_y1) Sxx=0#x-x1的值的平方和 for i in range(0,len(temperature)): Sxx=Sxx+((temperature[i]-x1)*(temperature[i]-x1)) print("x的离差平方和为:",Sxx) Syy=0#y-y1的值的平方和 for i in range(0,len(sales)): Syy=Syy+((sales[i]-y1)*(sales[i]-y1)) print("y的离差平方和为:",Syy) Sxy=0#(x-x1)(y-y1)的和 for i in range(0,len(temperature)): Sxy=Sxy+((temperature[i]-x1)*(sales[i]-y1)) print("x和y的离差积和为:",Sxy) #求y=ax+b的系数a和截距b a=Sxy/Sxx b=y1-a*x1 print("销售的回归方程的系数为:",a) print("销售的回归方程的截距为:",b) print("回归方程为y=",a,"x+",b) #求预测值sales1 sales1=[] for i in range(0,len(temperature)): sales1.append(a*temperature[i]+b) print(sales1) #求预测值的平均值y2 y2=0 sumy2=0 for i in range(len(sales1)): sumy2=sumy2+sales1[i] print(sumy2) y2=sumy2/len(sales1) print("预测销售值的平均值为:",y2) #求预测值-平均值的和y11_y2 y11_y2=0 for i in range(0,len(sales1)): y11_y2=y11_y2+(sales1[i]-y2) print("预测销售值-预测销售平均值的和为:",y11_y2) #求实际值-预测值的和y_y2的平方和 Syy1=0 for i in range(0,len(sales1)): Syy1=Syy1+((sales1[i]-y2)*(sales1[i]-y1)) print("预测销售值y11的离差平方和为:",Syy1) #求(y-y1)(y11-y2)乘积的和 Syy2=0 for i in range(0,len(sales)): Syy2=Syy2+((sales[i]-y1)*(sales1[i]-y2)) print("销售值y和预测销售值y11的离差积和为:",Syy2) #计算判定系数R2 R=Syy2/((Syy1*Syy)**0.5) R2=R*R print("判定系数R2为:",R2) #求判定系数R2的另一种方法 #R2=1-(Se/Syy) #print("判定系数R2为:",R2) #利用seaborn分析置信带 data1=pd.read_excel('D:\红茶数据.xlsx') sns.pairplot(data1,x_vars=['X'],y_vars=['Y'], height=3, aspect=0.8, kind='reg') plt.show()

以上就是本实验的全部代码,不过,学长建议大家分步运行,直接运行代码,不会懂得计算的由来,分步运行可以更好的了解代码的书写,并且可以更容易理解线性回归的原理!
以上就是我们本次博客的全部内容,希望通过本次博客,大家可以更好的理解线性回归方程的求解原理,如果一步一步求解过来,这也可以让我们知道,那些求解线性方程的包是如何编写的,原理就是和这个一样的哦!
遇到问题的小伙伴记得在评论区留言,学长给你们耐心解答!
陈一月的又一天编程岁月^ _ ^


作者:陈一月的编程岁月



回归 notebook 线性回归方程 线性 线性回归 jupyter r2 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号