用机器学习实现《GB/T 13234 用能单位节能量计算方法》

用机器学习实现《GB/T 13234 用能单位节能量计算方法》


前言

2018 颁布了《GB/T 12345 用能单位节能量计算方法》,方中提到需要使用线性回归方法,来计算节能量。

规定:节能量energy savings
满足同等需要或达到相同目的的条件下,能源消耗/能源消费减少的数量。

因此,这个相同条件下,需要回归的方法来进行。
本文,原理方面不作介绍。着重讲解实现过程。

国际中提到归一法有三种方式,后推校准法,前推校准法和参考条件校准法,本文是以附录部分完整的实现整个过程,并记录成.ipynb文件。

同时用Excel方法按上述过程,一模一样的实现一次。两者结果完全一致。

机器学习部分

加载包

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
%matplotlib inline

导入数据

# 一定要写encoding="gbk",否则乱码
data_2015=pd.read_csv("2015.csv",encoding="gbk",index_col="月份")
data_2016=pd.read_csv("2016.csv",encoding="gbk",index_col="月份")

查看数据

data_2015
data_2015.sum(0)

折百碱产量 117738.2
总能耗 42468.0
dtype: float64

这一步是为了保证数据正确

data_2016
data_2016.sum(0)

折百碱产量 205898.2
总能耗 65960.6
dtype: float64

可视化数据

进一步查看数据是否存在异常

data_2015.plot.scatter("折百碱产量","总能耗");

output1

data_2016.plot.scatter("折百碱产量","总能耗");

output2

分离数据

X_2015=data_2015['折百碱产量'].values.reshape(-1,1)
Y_2015=data_2015['总能耗']

X_2016=data_2016['折百碱产量'].values.reshape(-1,1)
Y_2016=data_2016['总能耗']

建模

model=LinearRegression()
model=model.fit(X_2015,Y_2015)

查看线性相关属性

截距
model.intercept_

67.955899928463168

系数
model.coef_

array([ 0.35377243])

相关系数 R 2 R^2 R2
score=model.score(X_2015,Y_2015) 
score

0.99466645751800198

画回归曲线

Yh_2015=model.predict(X_2015)
plt.figure(figsize=(8, 6))
plt.scatter(X_2015, Y_2015, c ='black')
plt.plot(X_2015, Yh_2015,c ='blue', linewidth=2)
plt.xlabel("折百碱产量/t")
plt.ylabel("月度总能耗/tce")
plt.show()

回归曲线

最后的方程

此处按国际要求保留2位小数

#方程为
print("Y=%.2fX+%.2f"%(model.coef_[0],model.intercept_))

Y=0.35X+67.96

根据上述方程计算预测结果

# 如果直接用模型计算结果差异很大,是因为两位小数带来的精度问题
# Yh_2016=model.predict(X_2016)
# Yh_2016
# 如果与国标数据一致必须,用二位小数的值来计算
Yhx=0.35*X_2016+67.96
Yhx

array([[ 6212.21 ],
[ 6248.435],
[ 6727.655],
[ 6136.75 ],
[ 6599.065],
[ 6241.855],
[ 6505.44 ],
[ 5971.76 ],
[ 5084.79 ],
[ 5426.495],
[ 6656.99 ],
[ 5068.445]])

计算节能量

E=Yhx.ravel()-Y_2016
E.sum()

6919.289999999995
这个就是我们想要的结果。

Excel 部分

制作数据表

输入2015和2016相关数据
e1

制作散点图

1.选择2015年的两个数据,注意不能包括总计
2.插入散点图
e2

添加回归曲线和方程

1.选择图上散点,右键“添加趋势线”
2.选择“线性”,“显示公式”,“显示R平方值”
ppp

计算节能量

1.以2016年的折百碱产量,算出预测值,(输入相应的公式)
2.通过与2016年总能耗相差,即节能量
3.将一年的节能量进行求和,即得一年节能量。
e5

总结

上文通过两种不同的方法,完成了用能单位节能量的计算,两者结果均为6919.29,与国际的方法结果完全一致,说明上述两种方法均是正确。

附件

包括 jupyter notebook 的.ipynb 完整的源文件和 制作过程的EXCEL文件。
以及《GBT13234-2018 用能单位节能量计算方法》的pdf文件

下载

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值