Python线性回归应用举例

在发电场中电力输出(PE)与温度(AT)、压力(V)、湿度(AP)、压强(RH)有关。
(1)利用线性回归分析命令,求出其之间的线性回归关系数向量(包括常数项)和拟合优度
(2)AT=28.4,V=50.6,AP=1011.9,RH=80.54 预测PE值

1、读取数据,确定自变量x、因变量y

import pandas as pd
data = pd.read_excel('发电场数据.xlsx')
data
AT V AP RH PE
0 14.96 41.76 1024.07 73.17 463.26
1 25.18 62.96 1020.04 59.08 444.37
2 5.11 39.40 1012.16 92.14 488.56
3 20.86 57.32 1010.24 76.64 446.48
4 10.82 37.50 1009.23 96.62 473.90
... ... ... ... ... ...
9563 16.65 49.69 1014.01 91.00 460.03
9564 13.19 39.18 1023.67 66.78 469.62
9565 31.32 74.33 1012.92 36.48 429.57
9566 24.48 69.45 1013.86 62.39 435.74
9567 21.60 62.52 1017.23 67.87 453.28

9568 rows × 5 columns

#dataframe.values将Dataframe的表格型数据转换成数组
x = data.iloc[:,0:4].values
x
array([[  14.96,   41.76, 1024.07,   73.17],
       [  25.18,   62.96, 1020.04,   59.08],
       [   5.11,   39.4 , 1012.16,   92.14],
       ...,
       [  31.32,   74.33, 1012.92,   36.48],
       [  24.48,   69.45, 1013.86,   62.39],
       [  21.6 ,   62.52, 1017.23,   67.87]])
y = data.iloc[:,4].values
y
array([463.26, 444.37, 488.56, ..., 429.57, 435.74, 453.28])

2、线性回归分析

#导入线性回归模块(LR)
from sklearn.linear_model import  LinearRegression as LR
#利用LR创建线性回归对象lr
lr = LR()
#调用lr对象中的fit()方法,对数据进行拟合训练
lr.fit(x,y)
LinearRegression()
#调用lr对象中的score()方法,返回其拟合优度(判定系数),观察线性关系是否显著
Slr = lr.score(x,y) #判定系数R²
Slr
0.9286960898122536
#取lr对象中的coef_、intercept_属性,返回x对象的回归系数和回归系数常数项
c_x = lr.coef_
print('回归系数:{}'.format(c_x))
c_b = lr.intercept_
print('回归系数常数项:{}'.format(c_b))

回归系数:[-1.97751311 -0.23391642  0.06208294 -0.1580541 ]
回归系数常数项:454.60927431531076

3、利用线性回归模型进行预测

#可以利用lr对象中的predict()方法进行预测
import numpy as np
x1 = np.array([28.4,50.6,1011.9,80.54])
x1
array([  28.4 ,   50.6 , 1011.9 ,   80.54])
#升维
x1 = x1.reshape(1,4)
x1
array([[  28.4 ,   50.6 , 1011.9 ,   80.54]])
R1 = lr.predict(x1)
R1
array([436.70378447])

#当然,也可以利用线性回归方程进行预测
r1 = x1*c_x
r1
array([[-56.16137223, -11.83617098,  62.82173081, -12.72967745]])
r1.sum()
-17.905489848159824
R2 = r1.sum()+c_b
R2
436.7037844671509

posted @ 2022-04-17 15:24  AubeLiang  阅读(928)  评论(0编辑  收藏  举报