在发电场中电力输出(PE)与温度(AT)、压力(V)、湿度(AP)、压强(RH)有关。 (1)利用线性回归分析命令,求出其之间的线性回归关系数向量(包括常数项)和拟合优度 (2)AT=28.4,V=50.6,AP=1011.9,RH=80.54 预测PE值
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])
#导入线性回归模块(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
#可以利用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