一、导入文本
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)
plt.show()
车站距离和营业额的关系图
plt.scatter(x2,y)
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=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))
D=np.dot(B,C)
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=[]
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)
a=0
for i in range (0,len(y)):
a=y[i]-average_y+a
c=0
for i in range(0,len(sales1)):
c=sales1[i]-average_y1+c
Syy=0
for i in range(0,len(y)):
Syy=Syy+(y[i]-average_y)*(y[i]-average_y)
Sy1y1=0
for i in range (0,len(sales1)):
Sy1y1=Sy1y1+(sales1[i]-average_y)*(sales1[i]-average_y1)
Syy1=0
for i in range (0,len(y)):
Syy1=Syy1+(y[i]-average_y)*(sales1[i]-average_y1)
R=R=Syy1/((Syy*Sy1y1)**0.5)
R2=R*R
print("判定系数R²=",R2)