Untitled
import tensorflow as tf from keras import layers, models from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler import numpy as np import pandas as pd from pathlib import Path import time # Carregar o dataset path = Path(__file__) CurrentFolder = path.parent MasterFile = CurrentFolder / 'objs' / '13Bus' / 'Datasets' / 'dataset_anual.csv' data = pd.read_csv(MasterFile) # Selecionar as features e os targets # Entradas: Potência injetada, tensão, fases conectadas features = data[['Fase_0', 'Fase_1', 'Fase_2', 'inj_pot_at_0', 'inj_pot_at_1', 'inj_pot_at_2', 'inj_pot_rat_0', 'inj_pot_rat_1', 'inj_pot_rat_2', 'tensao_0', 'tensao_1', 'tensao_2']] # Saídas: Ângulos de tensão estimados e tensões estimadas targets = data[['ang_tensao_estimado_0', 'ang_tensao_estimado_1', 'ang_tensao_estimado_2', 'tensao_estimada_0', 'tensao_estimada_1', 'tensao_estimada_2']] # Tratar valores faltantes (opção: remover ou preencher) features = features.fillna(0) targets = targets.fillna(0) # Dividir os dados em conjunto de treino e teste X_train, X_test, y_train, y_test = train_test_split(features, targets, test_size=0.2, random_state=42) # Normalizar os dados scaler_X = StandardScaler() scaler_y = StandardScaler() X_train = scaler_X.fit_transform(X_train) X_test = scaler_X.transform(X_test) y_train = scaler_y.fit_transform(y_train) y_test = scaler_y.transform(y_test) # Definir a arquitetura do modelo DNN model = models.Sequential() model.add(layers.Dense(128, activation='relu', input_shape=(X_train.shape[1],))) model.add(layers.Dense(64, activation='relu')) model.add(layers.Dense(32, activation='relu')) model.add(layers.Dense(y_train.shape[1])) # Saída correspondente ao número de targets # Compilar o modelo model.compile(optimizer='adam', loss='mse', metrics=['mae']) # Treinar o modelo history = model.fit(X_train, y_train, epochs=100, batch_size=32, validation_split=0.2) # Avaliar o modelo nos dados de teste loss, mae = model.evaluate(X_test, y_test) print(f'Test Loss: {loss}, Test MAE: {mae}') # Fazer previsões predictions = model.predict(X_test)
Leave a Comment