David 5 дней назад
Родитель
Сommit
57648822d9

+ 24 - 5
data_processing/data_operation/data_handler.py

@@ -76,28 +76,47 @@ class DataHandler(object):
         features_x = np.array([feature_data.loc[i*time_step:i*time_step + time_step_loc, self.opt.features].reset_index(drop=True) for i in range(iters)])
         if end > 0:
             df = feature_data.tail(end)
-            df_repeated = pd.concat([df] + [pd.DataFrame([df.iloc[0]]* (time_step-end))]).reset_index(drop=True)
+            df_repeated = pd.concat([df] + [pd.DataFrame([df.iloc[-1]]* (time_step-end))]).reset_index(drop=True)
             features_x = np.concatenate((features_x, np.expand_dims(df_repeated, 0)), axis=0)
         return features_x
 
     def get_predict_features2(self, norm_data, time_series=2):
         """
-        lstm2:以时间步长切分数据,获取预测数据集
+        时序2:以时间步长切分数据,得到切分原子段,根据所需的时序原子段得到预测数据集
         """
         time_step = self.opt.Model["time_step"]
         feature_data = norm_data.reset_index(drop=True)
         time_step_loc = time_step*time_series - 1
-        features_x = np.array([feature_data.loc[i:i + time_step_loc, self.opt.features].reset_index(drop=True) for i in range(0, len(norm_data) - time_step_loc, time_step)])
+        iters = int(len(feature_data)) // time_step
+        iters = iters - (time_series - 1)
+        end = int(len(feature_data)) % time_step
+        features_x = np.array([feature_data.loc[i*time_step:i*time_step + time_step_loc, self.opt.features].reset_index(drop=True) for i in range(0, iters)])
+        if end > 0:
+            df = norm_data.tail(end)
+            df_repeated = pd.concat([norm_data.tail((time_series-1)*time_step)] + [df] + [df.tail(1)] * (time_step - end)).reset_index(drop=True)
+            features_x = np.concatenate((features_x, np.expand_dims(df_repeated, 0)), axis=0)
         return features_x
 
     def get_predict_features3(self, norm_data, time_series=3):
         """
-        均分数据,获取预测数据集
+        时序3:以时间步长切分数据,得到切分原子段,根据所需的时序原子段得到预测数据集
         """
         time_step = self.opt.Model["time_step"]
         feature_data = norm_data.reset_index(drop=True)
         time_step_loc = time_step*time_series - 1
-        features_x = np.array([feature_data.loc[i:i+time_step_loc , self.opt.features].reset_index(drop=True) for i in range(0, len(norm_data) - time_step_loc, time_step*(time_series-2))])
+        features_x = np.array([x for x in [feature_data.loc[i*time_step:i*time_step + time_step_loc, self.opt.features].reset_index(drop=True) for i in range(0, len(norm_data), (time_series-2)*time_step)] if not len(x) < time_step*time_series])
+        end = norm_data.tail(len(feature_data) - (features_x.shape[0] * time_step) - time_step).reset_index(drop=True)
+        num = len(end) // ((time_series - 2) * time_step)
+        bu = len(end) % ((time_series - 2) * time_step)
+        front = norm_data.tail(time_step)
+        back = norm_data.tail(time_step)
+        df_repeated = [pd.concat([front]+[end.iloc[i*time_step:i*time_step + time_step].reset_index(drop=True)]+[back]) for i in range(0, num)]
+        if bu > 0:
+            last = pd.concat([front]  + [end.tail(bu)] + [end.tail(1)] * (time_step - bu) + [back])
+            df_repeated = np.array(df_repeated + [last])
+        else:
+            df_repeated = np.array(df_repeated)
+        features_x = np.concatenate((features_x, df_repeated), axis=0)
         return features_x
 
     def get_timestep_features(self, norm_data, col_time, target, is_train, time_series=1):

+ 1 - 1
models_processing/model_tf/tf_cnn_pre.py

@@ -44,7 +44,7 @@ def update_config():
     g.cnn = CNNHandler(logger, current_config)
 
 @app.route('/tf_cnn_predict', methods=['POST'])
-def model_prediction_bp():
+def model_prediction_cnn():
     # 获取程序开始时间
     start_time = time.time()
     result = {}

+ 1 - 1
models_processing/model_tf/tf_cnn_train.py

@@ -41,7 +41,7 @@ def update_config():
     g.cnn = CNNHandler(logger, current_config)
 
 @app.route('/tf_cnn_training', methods=['POST'])
-def model_training_bp():
+def model_training_cnn():
     # 获取程序开始时间
     start_time = time.time()
     result = {}

+ 3 - 1
models_processing/model_tf/tf_lstm2_pre.py

@@ -45,7 +45,7 @@ def update_config():
     g.ts = TSHandler(logger, current_config)
 
 @app.route('/tf_lstm2_predict', methods=['POST'])
-def model_prediction_bp():
+def model_prediction_lstm2():
     # 获取程序开始时间
     start_time = time.time()
     result = {}
@@ -67,6 +67,7 @@ def model_prediction_bp():
         res = list(chain.from_iterable(target_scaler.inverse_transform(ts.predict(scaled_pre_x))))
         pre_data['farm_id'] = args.get('farm_id', 'null')
         if int(args.get('algorithm_test', 0)):
+            pre_data = pre_data.iloc[(args['time_series']-1)*dh.opt.Model["time_step"]:]
             pre_data[args['model_name']] = res[:len(pre_data)]
             pre_data.rename(columns={args['col_time']: 'dateTime'}, inplace=True)
             pre_data = pre_data[['dateTime', 'farm_id', args['target'], args['model_name'], 'dq']]
@@ -76,6 +77,7 @@ def model_prediction_bp():
                 pre_data['howLongAgo'] = int(args['howLongAgo'])
                 res_cols += ['howLongAgo']
         else:
+            pre_data = pre_data.iloc[(args['time_series'] - 1) * dh.opt.Model["time_step"]:]
             pre_data['power_forecast'] = res[:len(pre_data)]
             pre_data.rename(columns={args['col_time']: 'date_time'}, inplace=True)
             res_cols = ['date_time', 'power_forecast', 'farm_id']

+ 1 - 1
models_processing/model_tf/tf_lstm2_train.py

@@ -41,7 +41,7 @@ def update_config():
 
 
 @app.route('/tf_lstm2_training', methods=['POST'])
-def model_training_bp():
+def model_training_lstm2():
     # 获取程序开始时间
     start_time = time.time()
     result = {}

+ 3 - 1
models_processing/model_tf/tf_lstm3_pre.py

@@ -44,7 +44,7 @@ def update_config():
     g.ts = TSHandler(logger, current_config)
 
 @app.route('/tf_lstm3_predict', methods=['POST'])
-def model_prediction_bp():
+def model_prediction_lstm3():
     # 获取程序开始时间
     start_time = time.time()
     result = {}
@@ -66,6 +66,7 @@ def model_prediction_bp():
         res = list(chain.from_iterable(target_scaler.inverse_transform(ts.predict(scaled_pre_x))))
         pre_data['farm_id'] = args.get('farm_id', 'null')
         if int(args.get('algorithm_test', 0)):
+            pre_data = pre_data.iloc[dh.opt.Model["time_step"]:]
             pre_data[args['model_name']] = res[:len(pre_data)]
             pre_data.rename(columns={args['col_time']: 'dateTime'}, inplace=True)
             pre_data = pre_data[['dateTime', 'farm_id', args['target'], args['model_name'], 'dq']]
@@ -75,6 +76,7 @@ def model_prediction_bp():
                 pre_data['howLongAgo'] = int(args['howLongAgo'])
                 res_cols += ['howLongAgo']
         else:
+            pre_data = pre_data.iloc[dh.opt.Model["time_step"]:]
             pre_data['power_forecast'] = res[:len(pre_data)]
             pre_data.rename(columns={args['col_time']: 'date_time'}, inplace=True)
             res_cols = ['date_time', 'power_forecast', 'farm_id']

+ 1 - 1
models_processing/model_tf/tf_lstm3_train.py

@@ -41,7 +41,7 @@ def update_config():
 
 
 @app.route('/tf_lstm3_training', methods=['POST'])
-def model_training_bp():
+def model_training_lstm3():
     # 获取程序开始时间
     start_time = time.time()
     result = {}

+ 1 - 1
models_processing/model_tf/tf_lstm_pre.py

@@ -45,7 +45,7 @@ def update_config():
     g.ts = TSHandler(logger, current_config)
 
 @app.route('/tf_lstm_predict', methods=['POST'])
-def model_prediction_bp():
+def model_prediction_lstm():
     # 获取程序开始时间
     start_time = time.time()
     result = {}

+ 1 - 1
models_processing/model_tf/tf_lstm_train.py

@@ -41,7 +41,7 @@ def update_config():
 
 
 @app.route('/tf_lstm_training', methods=['POST'])
-def model_training_bp():
+def model_training_lstm():
     # 获取程序开始时间
     start_time = time.time()
     result = {}