|
@@ -5,11 +5,15 @@
|
|
|
# @Author :David
|
|
|
# @Company: shenyang JY
|
|
|
import argparse, numbers, joblib
|
|
|
+from unittest.mock import inplace
|
|
|
+
|
|
|
import numpy as np
|
|
|
import pandas as pd
|
|
|
from io import BytesIO
|
|
|
from bson.decimal128 import Decimal128
|
|
|
from sklearn.preprocessing import MinMaxScaler
|
|
|
+from sqlalchemy.dialects.mssql.information_schema import columns
|
|
|
+
|
|
|
from common.processing_data_common import missing_features, str_to_list
|
|
|
from common.data_cleaning import *
|
|
|
|
|
@@ -58,7 +62,7 @@ class CustomDataHandler(object):
|
|
|
均分数据,获取预测数据集
|
|
|
"""
|
|
|
time_step = self.opt.Model["time_step"]
|
|
|
- feature_data = norm_data.reset_index(drop=True)
|
|
|
+ feature_data = norm_data.loc[:, self.opt.features].reset_index(drop=True)
|
|
|
time_step *= int(time_series)
|
|
|
time_step_loc = time_step - 1
|
|
|
iters = int(len(feature_data)) // time_step
|
|
@@ -216,10 +220,10 @@ class CustomDataHandler(object):
|
|
|
train_scaler = MinMaxScaler(feature_range=(0, 1))
|
|
|
target_scaler = MinMaxScaler(feature_range=(0, 1))
|
|
|
# 标准化特征和目标
|
|
|
- scaled_train_data = train_scaler.fit_transform(train_data_cleaned[self.opt.features])
|
|
|
+ scaled_train_data = train_scaler.fit_transform(train_data_cleaned[self.opt.features+self.opt.zone])
|
|
|
scaled_target = target_scaler.fit_transform(train_data_cleaned[[target]])
|
|
|
scaled_cap = target_scaler.transform(np.array([[float(self.opt.cap)]]))[0,0]
|
|
|
- train_data_cleaned[self.opt.features] = scaled_train_data
|
|
|
+ train_data_cleaned[self.opt.features+self.opt.zone] = scaled_train_data
|
|
|
train_data_cleaned[[target]] = scaled_target
|
|
|
# 3.缺值补值
|
|
|
train_datas = self.fill_train_data(train_data_cleaned, col_time)
|
|
@@ -254,9 +258,11 @@ class CustomDataHandler(object):
|
|
|
if not set(features).issubset(set(data.columns.tolist())):
|
|
|
raise ValueError("预测数据特征不满足模型特征!")
|
|
|
pre_data = data[features].copy()
|
|
|
+ pre_data[self.opt.zone] = 1
|
|
|
if self.opt.Model['predict_data_fill']:
|
|
|
pre_data = self.fill_pre_data(pre_data)
|
|
|
- pre_data.loc[:, features] = feature_scaler.transform(pre_data)
|
|
|
-
|
|
|
+ scaled_pre_data = feature_scaler.transform(pre_data)[:, :len(features)]
|
|
|
+ pre_data.drop(columns=self.opt.zone, inplace=True)
|
|
|
+ pre_data.loc[:, features] = scaled_pre_data
|
|
|
pre_x = self.get_predict_data([pre_data], time_series)
|
|
|
return pre_x, data
|