Artigo Mestrado
This commit is contained in:
70
visualize_processed_data.py
Normal file
70
visualize_processed_data.py
Normal file
@@ -0,0 +1,70 @@
|
||||
import pandas as pd
|
||||
import matplotlib.pyplot as plt
|
||||
import seaborn as sns
|
||||
import os
|
||||
|
||||
def visualize_processed_data(input_path):
|
||||
"""
|
||||
Gera visualizações para o dataset pré-processado.
|
||||
|
||||
Args:
|
||||
input_path (str): Caminho para o arquivo CSV do dataset pré-processado.
|
||||
"""
|
||||
print(f"Carregando o dataset pré-processado de: {input_path}")
|
||||
df = pd.read_csv(input_path)
|
||||
|
||||
# Verifica se a coluna "Label" está presente
|
||||
if "Label" not in df.columns:
|
||||
raise ValueError("A coluna 'Label' não foi encontrada no dataset.")
|
||||
|
||||
# Exibe informações iniciais sobre o dataset
|
||||
print(f"✅ Dataset carregado com {df.shape[0]} linhas e {df.shape[1]} colunas.")
|
||||
print(f"✅ Colunas no dataset: {', '.join(df.columns)}")
|
||||
|
||||
# Conversão para rótulos legíveis
|
||||
label_counts = df["Label"].apply(lambda x: "Ataque" if x == 1 else "Benigno")
|
||||
|
||||
# Gráfico de barras da distribuição das classes
|
||||
plt.figure(figsize=(8, 5))
|
||||
sns.countplot(x=label_counts)
|
||||
plt.title("Distribuição das Classes (Dados Tratados)")
|
||||
plt.xlabel("Classe")
|
||||
plt.ylabel("Contagem")
|
||||
plt.grid(True)
|
||||
plt.tight_layout()
|
||||
plt.savefig("visualizations/processed_data_label_distribution.png", dpi=300)
|
||||
plt.close()
|
||||
print("✅ Gráfico de distribuição das classes salvo como visualizations/processed_data_label_distribution.png")
|
||||
|
||||
# Gráfico da mesma feature do 4.1 (exemplo: "Destination_Port")
|
||||
feature = "Destination_Port"
|
||||
if feature in df.columns:
|
||||
plt.figure(figsize=(10, 6))
|
||||
sns.histplot(df[feature], kde=True)
|
||||
plt.title(f"Distribuição da Feature '{feature}' (Dados Tratados)")
|
||||
plt.xlabel(feature)
|
||||
plt.ylabel("Frequência")
|
||||
plt.grid(True)
|
||||
plt.tight_layout()
|
||||
plt.savefig("visualizations/processed_data_feature_distribution.png", dpi=300)
|
||||
plt.close()
|
||||
print(f"✅ Gráfico de distribuição da feature '{feature}' salvo como visualizations/processed_data_feature_distribution.png")
|
||||
else:
|
||||
print(f"⚠️ A feature '{feature}' não foi encontrada no dataset.")
|
||||
|
||||
# Informações finais
|
||||
print("✅ Processamento completo!")
|
||||
print("✅ Gráficos salvos em: 'visualizations/'")
|
||||
print(f"✅ Total de linhas processadas: {df.shape[0]}")
|
||||
print(f"✅ Total de colunas processadas: {df.shape[1]}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
input_file = "cicids2017_preprocessed.csv" # Caminho para o dataset pré-processado
|
||||
if not os.path.exists(input_file):
|
||||
print(f"Erro: Arquivo {input_file} não encontrado.")
|
||||
else:
|
||||
# Cria o diretório para salvar as visualizações, se não existir
|
||||
os.makedirs("visualizations", exist_ok=True)
|
||||
# Chama a função para gerar as visualizações
|
||||
visualize_processed_data(input_file)
|
||||
|
||||
Reference in New Issue
Block a user