推论性统计

回归分析

  • 线性回归:研究单一依变项与一个或以上自变项之间的关系

一、线性回归的两个用处:

  • 预测是指用已观察的变量来预测依变项
  • 因果分析则是将自变项当做是依变项发生的原因

二、分类

(一)一元m次多项式回归方程:

1.一元一次方程 (y=b0+b1x)

import pandas as pd
from pandas import DataFrame
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

df=pd.read_excel("一元.xlsx")

# x=df["工作年限"]            #生成Series
x1=df[["工作年限"]]           #生成DataFrame,x必须要这种格式,多元的时候直接加参数就可以了
# x2=df["工作年限"].values    #生成列表
y=df["月薪"].values

# 生成散点图
plt.scatter(x1,y)
plt.xlabel("工作年限")
plt.ylabel("薪金")


#画一次函数
regr=LinearRegression()
regr.fit(x1,y)
plt.plot(x1,regr.predict(x1))  

print("y=%sx+%s"%(regr.coef_,regr.intercept_)) #求出斜率和截距
print(regr.predict(20))                        #预测



#y=[86.45263324]x+7125.368046776232
#[8854.42071162]

2.一元二次方程 (y=b0+b1x+b2x2)  

import pandas as pd
from pandas import DataFrame
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

df=pd.read_excel("一元.xlsx")

# x=df["工作年限"]            #生成Series
x1=df[["工作年限"]]           #生成DataFrame,x必须要这种格式
# x2=df["工作年限"].values    #生成列表
y=df["月薪"].values

# 生成散点图
plt.scatter(x1,y)
plt.xlabel("工作年限")
plt.ylabel("薪金")

#画二次函数
poly_reg=PolynomialFeatures(degree=2)  #多项式设为2
x4=poly_reg.fit_transform(x1)          #转为多项式
regr=LinearRegression()
regr.fit(x4,y)
plt.plot(x1,regr.predict(x4),color="black")
print(regr.coef_)
print(regr.predict(poly_reg.fit_transform(10)))  #转为多项式才能预测

plt.show()

#[ 0. 201.29139993 -1.0073576 ]  #y=b0+b1x+b2x2,所以b1=201.29139993,b2=-1.0073576
#[6836.46992426]

(二)二元M次多项式回归方程

1.二元一次多项式回归方程

  • 与下面一样

2.二元二次多项式回归方程

import pandas as pd
from pandas import DataFrame
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

df=pd.read_excel("多元回归.xlsx")
print(df)
x1
=df[["工作年限","级别"]] #生成DataFrame,x必须要这种格式。与一次唯一的区别 y=df["月薪"].values

poly_reg=PolynomialFeatures(degree=2) #多项式设为2 x4=poly_reg.fit_transform(x1) #转为多项式regr=LinearRegression() regr.fit(x4,y) # plt.plot(x1,regr.predict(x4),color="black") print(regr.coef_) print(regr.intercept_) print(regr.predict(poly_reg.fit_transform([[10,3]]))) #二元的预测方式,要写成这样

#[ 0.00000000e+00 2.00000000e+02 1.00000000e+02 -1.00000000e+00 -4.44089210e-14 -9.03721542e-14]

y=bo+b1x1+b2x2+b3x12+b4x22+b5x1x2

bo                  b1                b2            b3                b4             b5
#4999.999999999951
#[7200.]

(三)多元多次的多项式回归方程

  • 较复杂,加之实际生产生活中一元m次多项式归回就已经能够解决了,所以略!

猜你喜欢

转载自www.cnblogs.com/L736/p/9165934.html
今日推荐