Files
stree_datasets/oc1results.py
2021-04-11 03:23:36 +02:00

86 lines
2.3 KiB
Python
Executable File

import os
from datetime import datetime
from experimentation.Sets import Datasets
from experimentation.Database import MySQL
from statistics import mean, stdev
def store_result(database, dataset, accuracy, time_spent):
attributes = [
"date",
"time",
"type",
"accuracy",
"accuracy_std",
"dataset",
"classifier",
"norm",
"stand",
"time_spent",
"time_spent_std",
"parameters",
]
command_insert = (
"insert into results ("
+ ",".join(attributes)
+ ") values("
+ ("\"%s\"," * len(attributes))[:-1]
+ ");"
)
now = datetime.now()
date = now.strftime("%Y-%m-%d")
time = now.strftime("%H:%M:%S")
values = (
date,
time,
"crossval",
mean(accuracy),
stdev(accuracy),
dataset,
"oc1",
1,
0,
mean(time_spent),
stdev(time_spent),
"{}",
)
print(command_insert % values, file=database)
#cursor = database.cursor()
#cursor.execute(command_insert, values)
#database.commit()
def get_result(name):
accuracy = []
time_spent = []
for seed in [57, 31, 1714, 17, 23, 79, 83, 97, 7, 1]:
filename = os.path.join("data", "oc1output", f"{name}_{seed}.txt")
result_file = open(filename, "r")
lines = result_file.readlines()
result_file.close()
data = lines[-6:-1]
for line in data:
acc, time_s = line.split("***")[2:4]
accuracy.append(float(acc))
time_spent.append(float(time_s))
return accuracy, time_spent
#dbh = MySQL()
#database = dbh.get_connection()
database = open("oc1.sql", "w")
dt = Datasets(False, False, "tanveer")
for dataset in dt:
print(f"Processing {dataset[0]:30s}", end=" ")
accuracy, time_spent = get_result(dataset[0])
accuracy_mean, accuracy_std = mean(accuracy), stdev(accuracy)
time_mean, time_std = mean(time_spent), stdev(time_spent)
print(
f"accuracy=[{accuracy_mean:05.3f}\u00B1{accuracy_std:05.3f}] "
f"time=[{time_mean:05.3f}\u00B1{time_std:05.3f}] "
f"elements=[{len(accuracy)} {len(time_spent)}]"
)
store_result(database, dataset[0], accuracy, time_spent)
#dbh.close()
database.close