Prediction CryptoCurrencies value with LSTM
Tramite un modello RNN-LSTM facciamo una previsione delle quotazioni di diverse criptovalute.

Grafico modello LSTM

Procediamo partendo dalle quotazioni storiche degli ultimi 5 anni poi si crea il modello e tramite questo modello si effettua la previsione.
La previsione รจ di 20 giorni e i dati ottenuti vengono poi normalizzati e confrontati tra di loro(ultima immagine) per vedere il diverso andamento tra le varie criptovalute.




def normalizzazione(df):
x = df.copy()
for i in x.columns:
x[i] = x[i]/x[i][0]
return x



def graficoInterattivo(df, title):
fig = px.line(title = title ,template="simple_white" ,color = df.columns)
for col in df.columns:
fig.add_scatter(x = df.index, y = df[col], name = col )
fig.show()



def previsione(model, xx):
x = np.reshape(xx, (xx.shape[0], xx.shape[1], 1))
predicted = model.predict(x)
return predicted



sc = MinMaxScaler(feature_range = (0, 1))
training = sc.fit_transform(training_set)

X_train = []
y_train = []

# created target with last value x

for i in range(1, len(training)):
X_train.append(training[i-1:i, 0])
y_train.append(training[i, 0])


X_train, y_train = np.array(X_train), np.array(y_train)

# Reshaping for input
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))

keras.backend.clear_session()

# Initialising model
model = Sequential()
# Adding first LSTM layer
model.add(LSTM(units = 150, return_sequences = True, input_shape = (X_train.shape[1], 1)))
model.add(Dropout(0.3))
# Adding other LSTM layer and Dropout
model.add(LSTM(units = 150, return_sequences = True))
model.add(Dropout(0.5))
model.add(LSTM(units = 150, return_sequences = True ))
model.add(Dropout(0.2))
model.add(LSTM(units = 150))
model.add(Dropout(0.2))

# define output
model.add(Dense(units = 1))
# define optimizer
model.compile(optimizer = 'adam', loss = 'mean_squared_error', metrics=['accuracy'])
# fit the model
model.fit(X_train, y_train, epochs = 15, batch_size = 32, validation_split=0.3)








Grafico previsione: