import pandas as pd import numpy as np from sklearn.preprocessing import MinMaxScaler from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv1D, MaxPooling1D, Flatten, Dense, Dropout from tensorflow.keras.optimizers import Adam def carregar_e_preparar_dados(caminho_csv): df = pd.read_csv(caminho_csv, parse_dates=["Date"], index_col="Date") df = df[["Open", "High", "Low", "Close", "Volume"]] scaler = MinMaxScaler() dados_escalados = scaler.fit_transform(df) X, y = [], [] for i in range(len(dados_escalados) - 60): X.append(dados_escalados[i:i+60]) y.append(dados_escalados[i+60][3]) return np.array(X), np.array(y), scaler def criar_modelo_cnn(input_shape): model = Sequential([ Conv1D(64, 3, activation='relu', input_shape=input_shape), MaxPooling1D(2), Conv1D(128, 3, activation='relu'), MaxPooling1D(2), Flatten(), Dense(64, activation='relu'), Dropout(0.2), Dense(1) ]) model.compile(optimizer=Adam(0.001), loss='mean_squared_error') return model