-
Notifications
You must be signed in to change notification settings - Fork 70
Expand file tree
/
Copy patheval_impute.py
More file actions
47 lines (30 loc) · 1.18 KB
/
eval_impute.py
File metadata and controls
47 lines (30 loc) · 1.18 KB
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
import numpy as np
import pandas as pd
from sklearn.preprocessing import OneHotEncoder
from sklearn.metrics import f1_score, roc_auc_score
import argparse
parser = argparse.ArgumentParser(description='Missing Value Imputation')
parser.add_argument('--dataname', type=str, default='adult', help='Name of dataset.')
parser.add_argument('--col', type=int, default=0, help='Numerical Column to Impute')
args = parser.parse_args()
dataname = args.dataname
col = args.col
dataname = args.dataname
data_dir = f'data/{dataname}'
real_path = f'{data_dir}/test.csv'
encoder = OneHotEncoder()
real_data = pd.read_csv(real_path)
target_col = real_data.columns[-1]
real_target = real_data[target_col].to_numpy().reshape(-1,1)
real_y = encoder.fit_transform(real_target).toarray()
syn_y = []
for i in range(50):
syn_path = f'impute/{i}.csv'
syn_data = pd.read_csv(syn_path)
target = syn_data[target_col].to_numpy().reshape(-1, 1)
syn_y.append(encoder.transform(target).toarray())
syn_y = np.stack(syn_y).mean(0)
micro_f1 = f1_score(real_y.argmax(axis=1), syn_y.argmax(axis=1), average='micro')
auc = roc_auc_score(real_y, syn_y, average='micro')
print("Micro-F1:", micro_f1)
print("AUC:", auc)