generated from lasseufpa/python_template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
image.py
115 lines (90 loc) · 4.33 KB
/
image.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import pandas as pd
# import numpy as np
# import matplotlib.pyplot as plt
# # Carregar os dados do arquivo CSV
# df = pd.read_csv('src/Results/RandomForest/metrics_smote.csv')
# # Separar os dados dos folds (excluindo as últimas duas linhas)
# folds = df['Fold'][:-2].astype(float)
# precision = df['Precision'][:-2].astype(float)
# recall = df['Recall'][:-2].astype(float)
# f1_score = df['F1-score'][:-2].astype(float)
# roc_auc = df['Roc_auc_score'][:-2].astype(float)
# # Obter médias e desvios padrão das últimas duas linhas
# mean_precision = df['Precision'][5]
# std_precision = df['Precision'][6]
# mean_recall = df['Recall'][5]
# std_recall = df['Recall'][6]
# mean_f1_score = df['F1-score'][5]
# std_f1_score = df['F1-score'][6]
# mean_roc_auc = df['Roc_auc_score'][5]
# std_roc_auc = df['Roc_auc_score'][6]
# # Função para plotar gráfico com média e desvio padrão
# def plot_metric(folds, metric_values, mean_value, std_value, metric_name):
# plt.figure(figsize=(16, 10))
# plt.plot(folds, metric_values, marker='o', label=metric_name)
# plt.axhline(y=mean_value, color='r', linestyle='-', label='Mean')
# plt.axhline(y=mean_value + std_value, color='r', linestyle='--', label='Mean + 1 Std')
# plt.axhline(y=mean_value - std_value, color='r', linestyle='--', label='Mean - 1 Std')
# plt.fill_between(folds, mean_value - std_value, mean_value + std_value, color='r', alpha=0.1)
# plt.xlabel('Fold')
# plt.ylabel(metric_name)
# plt.title(f'{metric_name} across folds')
# plt.legend()
# plt.grid(True)
# plt.show()
# # Plotar gráficos
# # plot_metric(folds, precision, mean_precision, std_precision, 'Precision')
# # plot_metric(folds, recall, mean_recall, std_recall, 'Recall')
# plot_metric(folds, f1_score, mean_f1_score, std_f1_score, 'F1-score')
# plot_metric(folds, roc_auc, mean_roc_auc, std_roc_auc, 'Roc_auc_score')
from tabulate import tabulate
import glob
files = glob.glob("src/Results/SupportVectorMachine/metrics*.csv")
files.sort()
for file in files:
df = pd.read_csv(file)
mean_precision = df['Precision'][5]
std_precision = df['Precision'][6]
mean_recall = df['Recall'][5]
std_recall = df['Recall'][6]
mean_f1_score = df['F1-score'][5]
std_f1_score = df['F1-score'][6]
mean_roc_auc = df['Roc_auc_score'][5]
std_roc_auc = df['Roc_auc_score'][6]
print(f'\n============================= {file.split("/")[-1].split(".")[0]} ==================================')
print(tabulate([['Precision', f"{mean_precision:.3f} ± {std_precision:.3f}"],
['Recall', f"{mean_recall:.3f} ± {std_recall:.3f}"],
['F1-score', f"{mean_f1_score:.3f} ± {std_f1_score:.3f}"],
['Roc_auc_score', f"{mean_roc_auc:.3f} ± {std_roc_auc:.3f}"]]))
# Separar os dados dos folds (excluindo as últimas duas linhas)
# folds = df['Fold'][:-2].astype(float)
# precision = df['Precision'][:-2].astype(float)
# recall = df['Recall'][:-2].astype(float)
# f1_score = df['F1-score'][:-2].astype(float)
# roc_auc = df['Roc_auc_score'][:-2].astype(float)
# Obter médias e desvios padrão das últimas duas linhas
# import pandas as pd
# import glob
# # Obter todos os arquivos com informações de classificação
# files = glob.glob('src/Results/RandomForest/features_importances/features_importance_?_normalized.csv')
# Inicializar um dicionário para armazenar os ranks dos itens
# item_ranks = {}
# Função para ler um arquivo e atualizar o dicionário de ranks
# def ler_arquivo_e_atualizar_ranks(nome_arquivo):
# df = pd.read_csv(nome_arquivo, header=None) # Lê o arquivo sem header
# df = df.iloc[1:-1]
# for rank, item in enumerate(df[0]):
# if item not in item_ranks:
# item_ranks[item] = []
# item_ranks[item].append(rank + 1) # Rank começa em 1, não 0
# # Lendo cada arquivo e atualizando o dicionário de ranks
# for arquivo in files:
# ler_arquivo_e_atualizar_ranks(arquivo)
# # Calculando o ranking médio para cada item
# ranking_medio = {item: sum(ranks) / len(ranks) for item, ranks in item_ranks.items()}
# # Ordenando os itens pelo ranking médio
# ranking_ordenado = sorted(ranking_medio.items(), key=lambda x: x[1])
# # Exibindo o ranking médio dos itens
# print("Ranking médio das features:")
# for item, rank in ranking_ordenado:
# print(f'Item: {item}, Ranking Médio: {rank:.2f}')