def calculate_12_month(start_month): # for dense_model ssta and ha predict_data = np.empty([1, 20, 27, 2]) data_y = np.empty([1, 20, 27, 2]) data_realistic = np.empty([1, 20, 27, 2]) if is_seasonal_circle: data_sc = np.empty([1, 1], dtype='int32') if model_type == 'conv': data_x = np.empty([1, 20, 27, 2]) else: data_x = np.empty([1, 1080]) predict_data[0] = file_helper_unformatted.read_data_sstaha(start_month) if is_retrain: predict_data = file_helper_unformatted.exchange_rows(predict_data) # data preprocess z-zero if data_preprocess_method == 'preprocess_Z': predict_data = data_preprocess.preprocess_Z(predict_data, 0) # data preprocess dimensionless if data_preprocess_method == 'dimensionless': redict_data = data_preprocess.dimensionless(predict_data, 0) # data preprocess 0-1 if data_preprocess_method == 'preprocess_01': predict_data = data_preprocess.preprocess_01(predict_data, 0) # data preprocess no month mean if data_preprocess_method == 'nomonthmean': predict_data = data_preprocess.no_month_mean(predict_data, 0) if model_type == 'conv': data_x[0] = predict_data[0] else: data_x[0] = np.reshape(predict_data[0], (1, 1080)) ssta_error = np.empty([directly_month]) for i in range(directly_month): if is_seasonal_circle: data_sc[0] = [(start_month + i) % 12] data_x = model.predict([data_x, data_sc]) else: data_x = model.predict(data_x) if model_type == 'conv': data_y[0] = data_x[0] else: data_y[0] = np.reshape(data_x[0], (20, 27, 2)) # data preprocess z-zero if data_preprocess_method == 'preprocess_Z': data_y = data_preprocess.preprocess_Z(data_y, 1) # data preprocess dimensionless if data_preprocess_method == 'dimensionless': data_y = data_preprocess.dimensionless(data_y, 1) # data preprocess 0-1 if data_preprocess_method == 'preprocess_01': data_y = data_preprocess.preprocess_01(data_y, 1) # data preprocess no month mean if data_preprocess_method == 'nomonthmean': data_y = data_preprocess.no_month_mean(data_y, 1) data_realistic[0] = file_helper_unformatted.read_data_sstaha( start_month + i + 1) if is_retrain: data_realistic = file_helper_unformatted.exchange_rows( data_realistic) # ssta_error[i] = calculate_error(data_y[0], data_realistic[0]) ssta_error[i] = math_tool.calculate_rmse(data_y[0], data_realistic[0]) print(ssta_error) ssta_error2 = ssta_error.copy() for i in range(1, directly_month): ssta_error2[i] = (ssta_error[i] - ssta_error[i - 1]) / 10000 ssta_error2[0] = ssta_error2[0] / 10000 return ssta_error2
# predict_data = np.empty([1, 540]) # predict_data[0] = file_helper.read_data(file_num) # file_helper.write_data(file_num, model.predict(predict_data)[0]) # for dense_model ssta and ha predict_data = np.empty([1, 20, 27, 2]) data_y = np.empty([1, 20, 27, 2]) if is_seasonal_circle: data_sc = np.empty([1, 1], dtype='int32') if model_type == 'conv': data_x = np.empty([1, 20, 27, 2]) elif model_type == 'dense': data_x = np.empty([1, 1080]) for start_month in range(file_num, file_num + month - interval, interval): predict_data[0] = file_helper_unformatted.read_data_sstaha(start_month) nino34 = [index_calculation.get_nino34(predict_data[0])] # data preprocess z-zero if data_preprocess_method == 'preprocess_Z': predict_data = data_preprocess.preprocess_Z(predict_data, 0) # data preprocess dimensionless if data_preprocess_method == 'dimensionless': redict_data = data_preprocess.dimensionless(predict_data, 0) # data preprocess 0-1 if data_preprocess_method == 'preprocess_01': predict_data = data_preprocess.preprocess_01(predict_data, 0) # data preprocess no month mean if data_preprocess_method == 'nomonthmean': predict_data = data_preprocess.no_month_mean(predict_data, 0)
data_yy = np.empty([1, 20, 27, 2]) if is_seasonal_circle: data_sc = np.empty([1, 1], dtype='int32') data_y = np.empty([1, 20, 27, 2]) if is_nino_output: nino34_output = [] rmse_sst = [] nino_temp = 0 nino34 = [] # The time step for non-sequence prediction should be 1, but it was originally written as 0. # So it caused the inconsistency. for start_month in range( file_num - prediction_month * directly_month, file_num + month - prediction_month * directly_month + 1 - time_step, interval): if not is_sequence: predict_data[0] = file_helper_unformatted.read_data_sstaha( start_month) predict_data = data_preprocess.data_preprocess(predict_data, 0) else: for i in range(time_step): predict_data[0][i] = file_helper_unformatted.read_data_sstaha( start_month + i + 1) predict_data[0] = data_preprocess.data_preprocess( predict_data[0], 0) if is_retrain: predict_data = file_helper_unformatted.exchange_rows(predict_data) if model_type == 'conv': data_x[0] = predict_data[0] elif model_type == 'dense': data_x[0] = np.reshape(predict_data[0], (1, 1080))
def get_nino34_from_data(file_num, month): nino3 = [] for i in range(file_num, file_num + month + 1): data = file_helper_unformatted.read_data_sstaha(i) nino3.append(get_nino34(data)) return nino3
last_month = 15 data_preprocess_method = name_list.data_preprocess_method # for dense_model # predict_data = np.empty([1, 540]) # predict_data[0] = file_helper.read_data(file_num) # file_helper.write_data(file_num, model.predict(predict_data)[0]) # for dense_model ssta and ha for last in range(last_month): predict_data = np.empty([1, 20, 27, 2]) data_y = np.empty([1, 20, 27, 2]) if model_type == 'conv': data_x = np.empty([1, 20, 27, 2]) else: data_x = np.empty([1, 1080]) predict_data[0] = file_helper_unformatted.read_data_sstaha(file_num + last) if is_retrain: predict_data = file_helper_unformatted.exchange_rows(predict_data) nino34 = [index_calculation.get_nino34(predict_data[0])] # data preprocess z-zero if data_preprocess_method == 'preprocess_Z': predict_data = data_preprocess.preprocess_Z(predict_data, 0) # data preprocess dimensionless if data_preprocess_method == 'dimensionless': redict_data = data_preprocess.dimensionless(predict_data, 0) # data preprocess 0-1 if data_preprocess_method == 'preprocess_01': predict_data = data_preprocess.preprocess_01(predict_data, 0) # data preprocess no month mean
is_retrain = name_list.is_retrain is_seasonal_circle = name_list.is_seasonal_circle """ file_num: the first prediction of data num month: month num to predict interval: Prediction interval prediction_month: For the model to predict month num directly_month: rolling run model times """ file_num = predict_369_data.file_num month = predict_369_data.month interval = 1 prediction_month = predict_369_data.prediction_month directly_month = predict_369_data.directly_month data_preprocess_method = name_list.data_preprocess_method # make directory file_path = "D:\msy\projects\zc\zcdata\data_networks\\" + model_name + '\\' + str( directly_month) + '\\' rmse_all = [] for start_month in range(file_num + prediction_month * directly_month, file_num + month + 1, interval): data_x = file_helper_unformatted.read_data_best(file_path, start_month) data_from_data = file_helper_unformatted.read_data_sstaha(start_month) rmse_all.append( math_tool.calculate_rmse(data_x[:, :, 0], data_from_data[:, :, 0])) print(rmse_all) print(sum(rmse_all) / rmse_all.__len__())
directly_month = 12 data_preprocess_method = name_list.data_preprocess_method # for dense_model # predict_data = np.empty([1, 540]) # predict_data[0] = file_helper.read_data(file_num) # file_helper.write_data(file_num, model.predict(predict_data)[0]) # for dense_model ssta and ha predict_data = np.empty([1, 20, 27, 2]) data_y = np.empty([1, 20, 27, 2]) data_realistic = np.empty([1, 20, 27, 2]) if model_type == 'conv': data_x = np.empty([1, 20, 27, 2]) else: data_x = np.empty([1, 1080]) predict_data[0] = file_helper_unformatted.read_data_sstaha(file_num) if is_retrain: predict_data = file_helper_unformatted.exchange_rows(predict_data) # data preprocess z-zero if data_preprocess_method == 'preprocess_Z': predict_data = data_preprocess.preprocess_Z(predict_data, 0) # data preprocess dimensionless if data_preprocess_method == 'dimensionless': redict_data = data_preprocess.dimensionless(predict_data, 0) # data preprocess 0-1 if data_preprocess_method == 'preprocess_01': predict_data = data_preprocess.preprocess_01(predict_data, 0) # data preprocess no month mean if data_preprocess_method == 'nomonthmean': predict_data = data_preprocess.no_month_mean(predict_data, 0)