Как улучшить мой код машинного обучения? [закрыто]

Здравствуйте Заранее спасибо...! В моем проекте Django это файл ai.py. Здесь я использую модель наилучшего прогнозирования LSTM для получения предсказаний. Я хочу улучшить эту модель. КАК???? Здесь заданы веса 70% для первых 2 недель и 30% для оставшихся данных. Для достижения максимальной эффективности я использую **adam и Nadam ** оптимизаторы. **Кто-нибудь может улучшить эту модель? **

    # start up keras
    from keras.models import Sequential
    from keras.layers import LSTM, Dense, Dropout
    from keras.optimizers import Adam, Nadam
    from sklearn.preprocessing import MinMaxScaler

    # assert optimizer
    if optimizer not in ['adam', 'nadam']:
        print("Invalid optimizer specified, can either be adam or nadam")
        return

    # prepare data
    supervised_df = series_to_supervised(df, cols_in, cols_out, days_in, days_out)
    values_in = supervised_df.filter(regex='t-').columns
    values_out = supervised_df.drop(columns=values_in).values
    values_in = supervised_df[values_in].values

    # scale data
    scaler_in = MinMaxScaler(feature_range=(-1, 1))
    scaler_out = MinMaxScaler(feature_range=(-1, 1))
    values_in = scaler_in.fit_transform(values_in)
    values_out = scaler_out.fit_transform(values_out)

    # divide data into train, valid, test
    train_x, train_y = values_in[:int(len(values_in) * 0.80)], values_out[:int(len(values_out) * 0.80)]
    valid_x, valid_y = values_in[int(len(values_in) * 0.80):], values_out[int(len(values_out) * 0.80):]

    # reshape data
    n_cols = len(cols_in)
    train_x = train_x.reshape((train_x.shape[0], int(train_x.shape[1] / n_cols), n_cols))
    valid_x = valid_x.reshape((valid_x.shape[0], int(valid_x.shape[1] / n_cols), n_cols))

    # weights to add
    # weight_dict = {k: v for (k, v) in weight_generator(1, 4, train_y.shape[1])}
    sample_weights = [[1.5 if i > days_in - 7 else 1.25 if i > days_in - 30 else 1 for j in range(len(cols_in))]for i in range(days_in)]
    sample_weights = np.array(sample_weights)

    # design network
    model = Sequential()

    # add LSTM layers
    model.add(LSTM(lstm_shape[0], input_shape=(train_x.shape[1], train_x.shape[2]), return_sequences=True))
    for lstm_l in lstm_shape[1:-1]:
        model.add(LSTM(lstm_l, return_sequences=True))
    model.add(LSTM(lstm_l, return_sequences=False))

    # add Dense layers
    for dense_l in dense_shape:
        model.add(Dense(dense_l))

    # final layers
    model.add(Dropout(dropout))
    model.add(Dense(train_y.shape[1]))

    # optimizer
    if optimizer == 'adam':
        opt = Adam(decay=decay, lr=lr)
    else:
        opt = Nadam(schedule_decay=decay, lr=lr)

    # compile and train
    model.compile(loss='mean_squared_error', optimizer=opt)#, sample_weight_mode='temporal')
    history = model.fit(train_x, train_y, epochs=epochs, batch_size=batch_size, validation_data=(valid_x, valid_y),
                        verbose=1, shuffle=False)#, sample_weight=sample_weights)

    return model, scaler_in, scaler_out, history.history
Вернуться на верх