基于决策树的电网负荷预测

1、情景问题提出及分析
电力系统的作用是对系统内各用户尽可能经济的提供可靠而合乎标准要求的电能。现代电网以系统运行的经济性为首要目标,再加之电能不能大量存储的特点,因此对电力系统的负载预测变得十分重要。
随着技术不断发展,当今越来越大的数据量配合着层出不穷的机器学习算法,已经大量运用在了电能预估当中,并且已经取得了一定的效果。
决定电力负荷的因素很多,比如有前期电力负荷、经济、社会、气象等因素,本项目中将利用气象因素作为特征属性,通过建立决策树模型,完成对电网负载的预估。
2、决策树算法简介
决策树(decision tree)是一种常见的机器学习方法。该方法属于监督学习的一种,它易于理解和实现,既可以用于分类,也可以用于回归。下面以决策树分类为例,对决策树算法做简要介绍。
例如,我们要判断一个人是否具有还贷能力,有以下几个特征:是否有稳定工作、是否有房、是否有车、是否有违约记录。决策过程包含着若干个子决策,下图展示了一个以作者主观思考所建立的决策树。
假设有以下测试集:
在这里插入图片描述
在这里插入图片描述

以编号1,2为例,具体说明决策树的决策过程。编号1,首先进入根节点A,判断是否有稳定工作?是,接着进入内部节点C,判断是否有房?是,则进入叶子节点E,决策结束,决策结果为有还款能力。编号2,首先进入根节点A,判断是否有稳定工作?是,进入内部节点C,接着判断是否有房?否,进入内部节点D,再判断是否有车?否,则进入叶子节点F,决策结束,决策结果为无还款能力。
通俗来说决策树可简单理解为一个树和多个决策。它既可以用于分类也可以用于回归,通常决策树学习包括一下三个步骤:特征选择、决策树建树和决策树的修剪。

3、建立决策树模型,并对测试集数据进行验证
在这里插入图片描述
4、模型评价
from sklearn import metrics

def get_mape(true, pred):
‘’‘获取平均绝对百分比误差’‘’
diff = np.abs(np.array(true) - np.array(pred))
return np.mean(diff / true)

def get_smape(true, pred):
‘’‘获取平均绝对百分比误差’‘’
diff = np.abs(pred - true)
return 2.0 * np.mean(diff / (np.abs(pred) + np.abs(true)))

print(‘MSE: %6.2f’ % metrics.mean_squared_error(Ytest, pred))

print(‘RMSE: %6.2f’ % np.sqrt(metrics.mean_squared_error(Ytest, pred)))

print(‘MAE: %6.2f’ % metrics.mean_absolute_error(Ytest, pred))

print(‘MAPE: %.2f%%’ % (get_mape(Ytest, pred) * 100))

print(‘SMPE: %.2f%%’ % (get_smape(Ytest, pred) * 100))

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_31391601/article/details/127397534