David 3 miesięcy temu
rodzic
commit
27bc2e5ea0

+ 8 - 7
data_processing/data_operation/data_handler.py

@@ -33,8 +33,8 @@ class DataHandler(object):
             train_y.extend(ty)
             valid_y.extend(vy)
 
-        train_y = np.concatenate([[y.iloc[:, 1].values for y in train_y]], axis=0)
-        valid_y = np.concatenate([[y.iloc[:, 1].values for y in valid_y]], axis=0)
+        train_y = np.array([[y.iloc[:, 1].values for y in train_y]])
+        valid_y = np.array([[y.iloc[:, 1].values for y in valid_y]])
 
         train_x = np.array([x.values for x in train_x])
         valid_x = np.array([x.values for x in valid_x])
@@ -48,8 +48,8 @@ class DataHandler(object):
                 self.logger.info("特征处理-预测数据-不满足time_step")
                 continue
             datax = self.get_predict_features(df, features)
-            test_x.extend(datax)
-        test_x = np.array(test_x)
+            test_x.append(datax)
+        test_x = np.concatenate(test_x, axis=0)
         return test_x
 
     def get_predict_features(self, norm_data, features):
@@ -226,11 +226,12 @@ class DataHandler(object):
         # features, time_steps, col_time, model_name, col_reserve = str_to_list(args['features']), int(
         #     args['time_steps']), args['col_time'], args['model_name'], str_to_list(args['col_reserve'])
         col_time, features = self.opt.col_time, self.opt.features
-        pre_data = data.sort_values(by=col_time)[features]
-        scaled_features = feature_scaler.transform(pre_data[features])
+        data = data.sort_values(by=col_time).reset_index(drop=True, inplace=False)
+        pre_data = data[features]
+        scaled_features = feature_scaler.transform(data[features])
         pre_data[features] = scaled_features
         if bp_data:
             pre_x = np.array(pre_data)
         else:
             pre_x = self.get_predict_data([pre_data], features)
-        return pre_x
+        return pre_x, data

+ 1 - 1
data_processing/data_operation/pre_prod_ftp.py

@@ -7,7 +7,7 @@
 
 """
 要实现的功能:
-1.
+1. 获取场站-配置接口,根据 / 算法工程师 / 模型 版本 日期 / 站名
 """
 
 if __name__ == "__main__":

+ 20 - 3
models_processing/model_koi/test.py

@@ -4,7 +4,24 @@
 # @Time      :2025/3/5 18:11
 # @Author    :David
 # @Company: shenyang JY
+import numpy as np
+# import tensorflow as tf
+# print("TensorFlow 版本:", tf.__version__)
+# print("GPU 是否可用:", tf.config.list_physical_devices('GPU'))
 
-import tensorflow as tf
-print("TensorFlow 版本:", tf.__version__)
-print("GPU 是否可用:", tf.config.list_physical_devices('GPU'))
+# 生成三个形状为 (2, 3, 4) 的三维数组
+
+
+# arrays = [np.random.rand(2, 3, 4) for _ in range(3)]
+#
+# # 沿新维度 axis=0 堆叠
+# stacked = np.stack(arrays, axis=2)
+#
+# print("堆叠后的形状:", stacked.shape)
+
+arrays = [np.random.rand(3, 3) for _ in range(2)]
+
+# 沿新维度 axis=0 堆叠
+stacked = np.stack(arrays, axis=0)
+
+print("堆叠后的形状:", stacked.shape)

+ 3 - 3
models_processing/model_koi/tf_bp_pre.py

@@ -53,13 +53,13 @@ def model_prediction_bp():
         # ------------ 获取数据,预处理预测数据------------
         pre_data = get_data_from_mongo(args)
         feature_scaler, target_scaler = get_scaler_model_from_mongo(args)
-        scaled_pre_x = dh.pre_data_handler(pre_data, feature_scaler, bp_data=True)
+        scaled_pre_x, pre_data = dh.pre_data_handler(pre_data, feature_scaler, bp_data=True)
         bp.opt.cap = round(target_scaler.transform(np.array([[args['cap']]]))[0, 0], 2)
         # ------------ 获取模型,预测结果------------
         bp.get_model(args)
-        res = list(chain.from_iterable(target_scaler.inverse_transform([bp.predict(scaled_pre_x).flatten()])))
+        res = list(chain.from_iterable(target_scaler.inverse_transform(bp.predict(scaled_pre_x))))
         pre_data['power_forecast'] = res[:len(pre_data)]
-        pre_data['farm_id'] = 'J00083'
+        pre_data['farm_id'] = args.get('farm_id', 'null')
 
         if args.get('algorithm_test', 0):
             pre_data['model'] = 'lstm'

+ 3 - 3
models_processing/model_koi/tf_cnn_pre.py

@@ -53,14 +53,14 @@ def model_prediction_bp():
     try:
         pre_data = get_data_from_mongo(args)
         feature_scaler, target_scaler = get_scaler_model_from_mongo(args)
-        scaled_pre_x = dh.pre_data_handler(pre_data, feature_scaler)
+        scaled_pre_x, pre_data = dh.pre_data_handler(pre_data, feature_scaler)
         cnn.opt.cap = round(target_scaler.transform(np.array([[args['cap']]]))[0,0], 2)
         logger.info("---------cap归一化:{}".format(cnn.opt.cap))
         cnn.get_model(args)
         # result = bp.predict(scaled_pre_x, args)
-        res = list(chain.from_iterable(target_scaler.inverse_transform([cnn.predict(scaled_pre_x).flatten()])))
+        res = list(chain.from_iterable(target_scaler.inverse_transform(cnn.predict(scaled_pre_x))))
         pre_data['power_forecast'] = res[:len(pre_data)]
-        pre_data['farm_id'] = 'J00083'
+        pre_data['farm_id'] = args.get('farm_id', 'null')
         if args.get('algorithm_test', 0):
             pre_data['model'] = 'cnn'
             pre_data.rename(columns={args['col_time']: 'dateTime'}, inplace=True)

+ 3 - 3
models_processing/model_koi/tf_lstm_pre.py

@@ -53,13 +53,13 @@ def model_prediction_bp():
     try:
         pre_data = get_data_from_mongo(args)
         feature_scaler, target_scaler = get_scaler_model_from_mongo(args)
-        scaled_pre_x = dh.pre_data_handler(pre_data, feature_scaler)
+        scaled_pre_x, pre_data = dh.pre_data_handler(pre_data, feature_scaler)
         ts.opt.cap = round(target_scaler.transform(np.array([[args['cap']]]))[0, 0], 2)
         ts.get_model(args)
         # result = bp.predict(scaled_pre_x, args)
-        res = list(chain.from_iterable(target_scaler.inverse_transform([ts.predict(scaled_pre_x).flatten()])))
+        res = list(chain.from_iterable(target_scaler.inverse_transform(ts.predict(scaled_pre_x))))
         pre_data['power_forecast'] = res[:len(pre_data)]
-        pre_data['farm_id'] = 'J00083'
+        pre_data['farm_id'] = args.get('farm_id', 'null')
         if args.get('algorithm_test', 0):
             pre_data['model'] = 'lstm'
             pre_data.rename(columns={args['col_time']: 'dateTime'}, inplace=True)

+ 4 - 0
models_processing/model_koi/问题.txt

@@ -0,0 +1,4 @@
+1. 系统时间仍是UTC
+2. 目前测试集/预测集没有进行“刨点”的预处理操作
+① 测试阶段,预处理会增加清洗限电等处理
+② 生产环境:缺点的日期进行讨论