出口气体温度以及尾煤给定预测

1.1实验要求
实现对于煤炭的尾煤定量和出口气体温度的预测。
1.2 方法描述
采用多元线性回归的方法来进行预测,首先找出相关量然后再编程进行训练和测试。
1.2.1热力图
import numpy as np
import seaborn as sns
values = np.random.rand(46,46)
ax = sns.heatmap(values, cmap=“YlGnBu”, annot=True, linewidths=.5)
通过绘制热力图heatmap找出因变量的相关量作为函数自变量。针对于每一个因变量都选择了主要相关量次要相关量等四个自变量。

图1 尾煤给定热力图
对于尾煤给定,选择了窑尾送煤风机压力,窑头罩负压,入窑提升机电流和窑喂料四个相关量作为自变量。

图2分解炉出口气体温度热力图
对于分解炉出口气体温度选择了C4下料温度,C3出口温度,C4进口气体温度和C5下料管温度作为相关量。
1.2.2 多元线性回归
使用sklearn中的PolynomialFeatures函数来进行多项式回归,如下所示:
po PolynomialFeatures(degree=2,interaction_only=False,include_bias=False)
x_poly =po.fit_transform(x)

#划分训练集测试集
x_train, x_test, y_train, y_test = train_test_split(x_poly, y, test_size=0.2, random_state=1)

reg = LR().fit(x_train, y_train)
yhat = reg.predict(x_test)

以尾煤定量为例,使用print(reg.coef_)输出系数,分别为窑尾送煤风机压力,窑头罩负压,入窑提升机电流,窑喂料,窑尾送煤风机压力平方项,窑尾送煤风机压力-窑头罩负压关联项 ,窑尾送煤风机压力-入窑提升机电流关联项,窑尾送煤风机压力-窑喂料关联项,窑头罩负压平方项,窑头罩负压-入窑提升机电流关联项,窑头罩负压-窑喂料关联项,入窑提升机电流平方项,入窑提升机电流-窑喂料关联项以及窑喂料平方项的系数。
使用print(reg.intercept_)输出截距;使用np.sqrt(MSE(y_test,yhat))/y_test.mean()来计算误差,即均平方根误差相对于测试值真实值的比例大小,使用cross_val_score(reg,x_poly,y,cv=5,scoring=“r2”).mean()来计算R2,R2的别名有: R方,RSquare,决定系数。可以通俗地理解为使用均值作为误差基准,看预测误差是否大于或者小于均值基准误差。
1.2.3实验环境与说明
实验环境为11th Gen Intel® Core™ i5-11260H @ 2.60GHz 2.61 GHz,64位win10,Python3.6。
.csv文件中包括通过热力图获得的有关变量,对于每个因变量分别选取了影响系数比较大的四个自变量,可以通过更改要读取的文件名训练并测试,输出系数与截距,在注释中有详细介绍,代码最后有可以输入具体数值进行具体查看的部分。
1.3 实验结果
以7.6数据为例,尾煤给定的预测结果如下所示:

图3尾煤给定预测比较图

图4尾煤给定方程参数及误差
以7.4数据为例,分解炉出口气体温度预测结果如下所示:

图5出口气体温度预测比较图

图6 出口气体温度预测方程参数及误差
2 第二种方法
同样使用热力图获取相关量,然后使用Origin选择多元线性回归直接得到回归方程。
以尾煤给定为例,使用四个自变量系数如下:

图7直接得到回归方程

出口气体温度:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from numpy.linalg import inv
from sklearn.model_selection import train_test_split,cross_val_score
from sklearn.linear_model import Lasso, Ridge, LinearRegression as LR
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import r2_score, explained_variance_score as EVS, mean_squared_error as MSE
from sklearn.preprocessing import PolynomialFeatures

data = pd.read_csv(‘7.4.csv’)
x = data[[‘C4下料温度’,‘C3出口温度’,‘C4进口气体温度’,‘C5下料管温度’]]

y = data[‘分解炉出口气体温度’]

po = PolynomialFeatures(degree=2,interaction_only=False,include_bias=False)
x_poly =po.fit_transform(x)

#划分训练集测试集
x_train, x_test, y_train, y_test = train_test_split(x_poly, y, test_size=0.2, random_state=1)

reg = LR().fit(x_train, y_train)
yhat = reg.predict(x_test)

#输出系数
print(reg.coef_)
#输出截距
print(reg.intercept_)
#误差分析,相对于真实值的均方差开方
print(np.sqrt(MSE(y_test,yhat))/y_test.mean())
print(cross_val_score(reg,x_poly,y,cv=5,scoring=“r2”).mean())
#模型效果可视化
plt.plot(range(len(x_test)),y_test,c=‘red’,alpha = 1) #绘制真实的测试值
plt.plot(range(len(x_test)),yhat,c=‘green’,alpha = 1) #绘制预测值
plt.show()

**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值