-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathresults.py
43 lines (37 loc) · 1.32 KB
/
results.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
import os
import pandas as pd
def get_metrics(path='data/results/metrics'):
results = []
for f in os.listdir(path):
if f.startswith('.'):
continue
if f.endswith('.csv'):
model, dataset = f[:-4].split('_')
df = pd.read_csv('{}/{}'.format(path, f))
df['model'] = model
df['dataset'] = dataset
results.append(df)
results = pd.concat(results)
results = results.groupby(['model', 'dataset']).agg(['mean', 'sem'])
results.columns.set_names(['metric', 'statistic'], inplace=True)
results = results.stack(['metric', 'statistic'])
results = results.unstack(['statistic', 'dataset', 'model']).stack('model')
return results
def get_long_metrics(path='data/results/metrics'):
results = []
for f in os.listdir(path):
if f.startswith('.'):
continue
if f.endswith('.csv'):
model, dataset = f[:-4].split('_')
df = pd.read_csv('{}/{}'.format(path, f))
df.columns.name = 'metric'
df = df.stack()
df.name = 'value'
df = df.reset_index()
df['model'] = model
df['dataset'] = dataset
results.append(df)
return pd.concat(results, ignore_index=True)
if __name__ == '__main__':
print(get_metrics())