示例#1
0
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)
示例#3
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
示例#6
0
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__())
示例#7
0
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)