Как улучшить мой код машинного обучения? [закрыто]
Здравствуйте Заранее спасибо...! В моем проекте 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