时间序列预测:用电量预测 04 Std_Linear(多元线性回归算法 & 数据标准化)

🌮开发平台: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 灰色预测算法

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

在这里插入图片描述

1.导包

### 线性回归,标准化
## 测试数据:该表格的末300条
import pandas as pd
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',index_col=['datetime'])
dataset.tail(15)

### 2.2 关键字
dataset.keys()
## Index(['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 定义自变量和因变量
## 定义自变量
data_train = dataset.iloc[:,:-1]
# 不允许采用dataset.iloc[:,-1],下面会报错
data_label = dataset[['sub_metering_4']]
data_train.shape,data_label.shape
data_train.shape,data_label.shape  ## ((1442, 7), (1442,1))

### 2.4 划分训练集和测试集
x_train,x_test = data_train[:-300],data_train[-300:]
y_train,y_test = data_label[:-300],data_label[-300:]

## 2.5 获取预测数据对应的日期标签,便于后续表格展示的index
label = x_test.index

## 2.6将训练集、测试集数据进行标准化,减少量化的影响
from sklearn.preprocessing import MinMaxScaler
# 训练集归一化
min_max_scaler = MinMaxScaler()
min_max_scaler.fit(x_train)
x_train_td = min_max_scaler.transform(x_train)

min_max_scaler.fit(y_train)
y_train_td = min_max_scaler.transform(y_train)

# 验证集归一化
min_max_scaler.fit(x_test)
x_test_td = min_max_scaler.transform(x_test)

min_max_scaler.fit(y_test)
y_test_td = min_max_scaler.transform(y_test)

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

from sklearn.linear_model import LinearRegression
## 3.1构建模型
lrModel = LinearRegression()
lrModel.fit(x_train_td,y_train_td)
# out: LinearRegression()

## 3.2预测标准化后的数据
y_test_predict = lrModel.predict(x_test_td)

## 3.3反标准化
## 按照未标准化之前的数据进行训练
min_max_scaler.fit(y_test)
## y_test_predict_ntd:预测逆标准化后的数据
y_test_predict_ntd = min_max_scaler.inverse_transform(y_test_predict)

4.数据展示

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

## 提取原y列的值为array
y_test_n=y_test['sub_metering_4']
y_test_n.values

## 提取预测列的值
col_pre=y_test_predict_ntd[:,-1]
y_test_predict_ntd=col_pre

compare = pd.DataFrame({
        "原数据":y_test_n.values,
    "预测数据":y_test_predict_ntd
    },index=label)
compare

## 注意:直接df形式合成,会自带原index,若是array,则index为常规序号值

在这里插入图片描述

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

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

在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值