基于Jupyter完成(自行推导公式)多元线性回归的编程

自行推导公式多元线性回归的编程一、导入文本店铺面积和营业额的关系图车站距离和营业额的关系图二、计算下图三、计算R²
一、导入文本
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import math
df = pd.read_excel("D:\\面积-距离-车站.xlsx")

在这里插入图片描述

x1 = df["店铺面积"] x2 = df["车站距离"] y = df["月营业额"]
店铺面积和营业额的关系图
plt.scatter(x1,y)#散点图绘制原始数据x,y
#plt.plot(x1,y,color='r')#绘制直线
plt.show()

在这里插入图片描述

车站距离和营业额的关系图
plt.scatter(x2,y)#散点图绘制原始数据x,y
#plt.plot(x1,y,color='r')#绘制直线
plt.show()

在这里插入图片描述

二、计算下图

在这里插入图片描述

#计算上图
data = np.genfromtxt("D:\\面积-距离-车站.csv",delimiter=",")
x1=data[1:11,0]#店铺面积
x2=data[1:11,1]#车站距离
y=data[1:11,2]#月营业额

#月营业额的转置矩阵
y1=np.array([y]).T

#店铺面积,转置矩阵
x11=np.array([x1]).T

车站距离,转置矩阵
x22=np.array([x2]).T

#创建矩阵A
A=np.array([[1],[1],[1],[1],[1],[1],[1],[1],[1],[1]])
A1=A.T

#将列上合并
B=np.vstack((x1,x2,A1))

#行上合并
C=np.hstack((x11,x22,A))

#矩阵B与矩阵C相乘
D=np.dot(B,C)

#店铺面积
#D的逆矩阵
D_=np.linalg.inv(D)

#最近的车站的距离
E=np.dot(D_,B)

#偏回归系数
F=np.dot(E,y1)

a1=F[0,0] a2=F[1,0] b=F[2,0] print("系数a1=",a1)
print("系数a2=",a2)
print("截距b=",b)
print("多元线性回归方程为:y=",a1,"x1+(",a2,")x2+",b)

在这里插入图片描述

三、计算R²
#求月营业额的总和和平均值
sum_y=0
average_y=0
for i in range (0,len(y)):
sum_y=sum_y+y[i] average_y=sum_y/len(y)
print("月营业额的总和:",sum_y)
print("月营业的平均值",average_y)

#求预测值sales1
sales1=[] for i in range(0,len(y)):
sales1.append(a1*x1[i]+a2*x2[i]+b)

sum_y1=0
average_y1=0
for i in range (0,len(sales1)):
sum_y1=sum_y1+sales1[i] average_y1=sum_y1/len(sales1)
print("预测月营业额的总和:",sum_y)
print("预测月营业的平均值",average_y1)

#(y-y平均)
a=0
for i in range (0,len(y)):
a=y[i]-average_y+a

#(y1-y1平均)
c=0
for i in range(0,len(sales1)):
c=sales1[i]-average_y1+c

#(y-y平均)²,计算Syy
Syy=0
for i in range(0,len(y)):
Syy=Syy+(y[i]-average_y)*(y[i]-average_y)

#(y1-y1平均)²,计算Sy1y1
Sy1y1=0
for i in range (0,len(sales1)):
Sy1y1=Sy1y1+(sales1[i]-average_y)*(sales1[i]-average_y1)

#(y-y的平均)*(y1-y1的平均),计算Syy1
Syy1=0
for i in range (0,len(y)):
Syy1=Syy1+(y[i]-average_y)*(sales1[i]-average_y1)

#求R平方
R=R=Syy1/((Syy*Sy1y1)**0.5)
R2=R*R
print("判定系数R²=",R2)

在这里插入图片描述

作者:w²大大

相关推荐

2.Vue创建工程-组件通信-Vue-router

2.Vue创建工程-组件通信-Vue-router

Android开发-Intent使用

Python yield关键字是什么意思?从可迭代对象(Iterable),迭代器(Iterator),生成器 (Generator) 说起

Python yield关键字是什么意思?从可迭代对象(Iterable),迭代器(Iterator),生成器 (Generator) 说起

python使用tkinter实现浮动窗口动态实时显示时钟

python使用tkinter实现浮动窗口动态实时显示时钟