时间序列预测:用电量预测 02 KNN(K邻近算法)

news/2024/11/19 7:45:11/

🌮开发平台:jupyter lab

🍖运行环境:python3、TensorFlow2.x

----------------------------------------------- 2022.9.16 测验成功 ----------------------------------------------------------------
1. 时间序列预测:用电量预测 01 数据分析与建模
2. 时间序列预测:用电量预测 02 KNN(K邻近算法)
3. 时间序列预测:用电量预测 03 Linear(多元线性回归算法 & 数据未标准化)
4.时间序列预测:用电量预测 04 Std_Linear(多元线性回归算法 & 数据标准化)
5. 时间序列预测:用电量预测 05 BP神经网络
6.时间序列预测:用电量预测 06 长短期记忆网络LSTM
7. 时间序列预测:用电量预测 07 灰色预测算法

  • 数据来源:Individual household electric power consumption Data Set(点击跳转数据集下载页面)

说明:根据上述列表中 1.时间序列预测:用电量预测 01 数据分析与建模 进行数据整理,得到household_power_consumption_days.csv文件,部分数据展示如下:

在这里插入图片描述

用电量预测 02 KNN(K邻近算法)

  • 1.导包
  • 2. 拆分数据集和训练集
  • 3.构建模型,进行测试集数据预测
  • 4.数据展示
    • 4.1 以表格形式对比测试集原始目标数据和预测目标数据
    • 4.2 以可视化图的形式对比测试集原始目标数据和预测目标数据
  • 5.拓展:评估参数

1.导包

### KNN
## 测试数据:表格的后150个数据为测试数据
import pandas as pd
import warnings
warnings.filterwarnings('ignore')

2. 拆分数据集和训练集

### 2.1 将日期变作index
dataset = pd.read_csv('../household_power_consumption_days.csv',engine='python',encoding='utf8')
dataset.head(15)### 2.2 防止后续需要用到原始数据逆标准化,得关键字
data = dataset.copy()
data.keys()  
## Index(['datetime', 'Global_active_power','Global_reactive_power', 'Voltage','Global_intensity', 'Sub_metering_1', 'Sub_metering_2','Sub_metering_3', 'sub_metering_4'],dtype='object')### 2.3 定义自变量和因变量
## 定义自变量
x_keys = ['Global_active_power', 'Global_reactive_power', 'Voltage','Global_intensity', 'Sub_metering_1', 'Sub_metering_2','Sub_metering_3']
x = data[x_keys]
## 定义因变量
y_keys = ['sub_metering_4']
y = data[y_keys]### 2.4 导包,划分训练集和测试集
from sklearn.model_selection import train_test_split
##把数据集分为测试集和训练集
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.1)

在这里插入图片描述

3.构建模型,进行测试集数据预测

from sklearn.neighbors import KNeighborsClassifier
## n_neighbors=3最优参数可以自己去调
knnModel = KNeighborsClassifier(n_neighbors=3)
knnModel.fit(x_train,y_train.astype('int'))
knnModel.score(x_test,y_test.astype('int'))
# out:0.006896551724137931## 预测测试集数据
y_test_predict = knnModel.predict(x_test)
y_test_predict
# out: array([17368, 11434,  6551,  9518,  7905,  4299, 12099,  8284, ...,8972])

在这里插入图片描述

4.数据展示

4.1 以表格形式对比测试集原始目标数据和预测目标数据

len(y_test),len(y_test_predict) #(145, 145)#将df中的数据转换为array格式
col=y_test.iloc[:,-1]
y_test=col.values
y_test  ## array([17656.5999984 , ... ,  8708.0333376])## 将array列合并成df表格
compare = pd.DataFrame({"原数据":y_test,"预测数据":y_test_predict})
compare

在这里插入图片描述

4.2 以可视化图的形式对比测试集原始目标数据和预测目标数据

import matplotlib.pyplot as plt
# 绘制 预测与真值结果
plt.figure(figsize=(16,8))
plt.plot(y_test, label="True value")
plt.plot(y_test_predict, label="Predict value")
plt.legend(loc='best')
plt.show()

在这里插入图片描述

5.拓展:评估参数

import math
def get_mse(records_real, records_predict):"""均方误差 估计值与真值 偏差"""if len(records_real) == len(records_predict):return sum([(x - y) ** 2 for x, y in zip(records_real, records_predict)]) / len(records_real)else:return Nonedef get_rmse(records_real, records_predict):"""均方根误差:是均方误差的算术平方根"""mse = get_mse(records_real, records_predict)if mse:return math.sqrt(mse)else:return Nonedef get_mae(records_real, records_predict):"""平均绝对误差"""if len(records_real) == len(records_predict):return sum([abs(x - y) for x, y in zip(records_real, records_predict)]) / len(records_real)else:return None## 以表格形式展示
compare['均方误差'] = get_mse(y_test,y_test_predict)
compare['均方根误差'] = get_rmse(y_test,y_test_predict)
compare['平均绝对误差'] = get_mae(y_test,y_test_predict)
compare

在这里插入图片描述


http://www.ppmy.cn/news/651077.html

相关文章

线性回归入门案例 家庭用电量预测

本博客是线性回归的入门案例,仅用到一阶线性回归 代码中用到的数据集下载地址 [link] https://pan.baidu.com/s/12wSIOVMQ3zS3jK0FcwkTSw[ python3版本代码段 导包 #导包 import numpy as np import matplotlib.pyplot as plt import pandas as pd import time…

时间序列预测11:用电量预测 01 数据分析与建模

【时间序列预测/分类】 全系列60篇由浅入深的博文汇总:传送门 写在前面 通过之前有关LSTM的8遍基础教程和10篇处理时间序列预测任务的教程介绍,使用简单的序列数据示例,已经把LSTM的原理,数据处理流程,模型架构&#…

python用支持向量机回归(SVR)模型分析用电量预测电力消费

最近我们被客户要求撰写关于支持向量机回归的研究报告,包括一些图形和统计输出。 本文描述了训练支持向量回归模型的过程,该模型用于预测基于几个天气变量、一天中的某个小时、以及这一天是周末/假日/在家工作日还是普通工作日的用电量。 【视频】支持向…

算力网络:十大技术发展方向

摘自:https://mp.weixin.qq.com/s/yykVHtdUVGL7G9E1jtMIxg 在社会算力并网场景下,将联合超算、智算等社会算力开展算力并网验证;在云边端协同场景下,打造算网融合创新技术方案,探索算网大脑雏形,深入车联网…

全国281个地级市工业用电量数据(2003-2016)

数据集名称:全国281个地级市工业用电量数据 时间范围:2003-2016年 数据来源:EPS数据库 相关说明:工业用电大多使用三相电压,如三相380VAC,三相660VAC等。 工业用电与居民用电的区别:工业用电…

时间序列预测:用电量预测 05 BP神经网络

🌮开发平台:jupyter lab 🍖运行环境:python3、TensorFlow2.x ----------------------------------------------- 2022.9.16 测验成功 ---------------------------------------------------------------- 1. 时间序列预测&#x…

用电量专题-全国、煤炭行业、地级市工业用电量等多指标(部份内容已更新至2021)

一、全国历年逐月累计用电量 1、数据来源:国际电力网电力统计每月统计的数据 2、时间跨度:2004-2021年9月 3、区域范围:全国 4、指标说明: 全社会用电量 第一产业用电量 第二产业用电量 第三产业用电量 城乡居民生活用电量…

时序数据-LSTM模型-实现用电量预测

作者: 明天依旧可好 QQ交流群: 807041986 原文链接: https://mtyjkh.blog.csdn.net/article/details/115612319 深度学习系列:深度学习 我的环境: win10、jupyter notebook、tensorflow2 0.导入相关包设置相关参数 i…