Browse Source

[MNT] remove examples/share_example.py and examples/nonshare_example.py

pull/3/head
Gao Enhao 3 years ago
parent
commit
9b56f71aaa
2 changed files with 0 additions and 193 deletions
  1. +0
    -97
      examples/nonshare_example.py
  2. +0
    -96
      examples/share_example.py

+ 0
- 97
examples/nonshare_example.py View File

@@ -1,97 +0,0 @@
# coding: utf-8
#================================================================#
# Copyright (C) 2021 Freecss All rights reserved.
#
# File Name :nonshare_example.py
# Author :freecss
# Email :karlfreecss@gmail.com
# Created Date :2021/06/07
# Description :
#
#================================================================#

from utils.plog import logger
from models.wabl_models import DecisionTree, KNN
import pickle as pk
import numpy as np
import time
import framework

from multiprocessing import Pool
import os
from datasets.data_generator import generate_data_via_codes, code_generator
from collections import defaultdict
from abducer.abducer_base import AbducerBase
from abducer.kb import ClsKB, RegKB

def run_test(params):
code_len, times, code_num, share, model_type, need_prob, letter_num = params

if share:
result_dir = "share_result"
else:
result_dir = "non_share_result"

recoder_file_path = f"{result_dir}/random_{times}_{code_len}_{code_num}_{model_type}_{need_prob}.pk"

words = code_generator(code_len, code_num, letter_num)
kb = ClsKB(words)
abducer = AbducerBase(kb, dist_func = "confidence", pred_res_parse = lambda x : x["prob"])

label_lists = [[] for _ in range(code_len)]
for widx, word in enumerate(words):
for cidx, c in enumerate(word):
label_lists[cidx].append(c)

if share:
label_lists = [sum(label_lists, [])]

recoder = logger()
recoder.set_savefile("test.log")
for idx, err in enumerate(range(15, 41)):
start = time.process_time()
err = err / 40.
if 1 - err < (1. / letter_num):
break

print("Start expriment", idx)
if model_type == "KNN":
model = KNN(code_len, label_lists = label_lists, share=share)
elif model_type == "DT":
model = DecisionTree(code_len, label_lists = label_lists, share=share)

pre_X, pre_Y = generate_data_via_codes(words, err, letter_num)
X, Y = generate_data_via_codes(words, 0, letter_num)

str_words = ["".join(str(c) for c in word) for word in words]

recoder.print(str_words)

model.train(pre_X, pre_Y)
abl_epoch = 30
res = framework.train(model, abducer, X, Y, sample_num = 10000, verbose = 1)
print("Initial data accuracy:", 1 - err)
print("Abd word accuracy: ", res["accuracy_word"] * 1.0 / res["total_word"])
print("Abd char accuracy: ", res["accuracy_abd_char"] * 1.0 / res["total_abd_char"])
print("Ori char accuracy: ", res["accuracy_ori_char"] * 1.0 / res["total_ori_char"])
print("End expriment", idx)
print()

recoder.dump(open(recoder_file_path, "wb"))
return True

if __name__ == "__main__":
os.system("mkdir share_result")
os.system("mkdir non_share_result")
for times in range(5):
for code_num in [32, 64, 128]:
params = [11, times, code_num, False, "KNN", True, 2]
run_test(params)

params = [11, times, code_num, False, "KNN", False, 2]
run_test(params)

#params = [11, 0, 32, False, "DT", False, 2]
#run_test(params)


+ 0
- 96
examples/share_example.py View File

@@ -1,96 +0,0 @@
# coding: utf-8
#================================================================#
# Copyright (C) 2021 Freecss All rights reserved.
#
# File Name :share_example.py
# Author :freecss
# Email :karlfreecss@gmail.com
# Created Date :2021/06/07
# Description :
#
#================================================================#

from utils.plog import logger
from models.wabl_models import DecisionTree, KNN
import pickle as pk
import numpy as np
import time
import framework

from multiprocessing import Pool
import os
from datasets.data_generator import generate_data_via_codes, code_generator
from collections import defaultdict
from abducer.abducer_base import AbducerBase
from abducer.kb import ClsKB, RegKB

def run_test(params):
code_len, times, code_num, share, model_type, need_prob, letter_num = params

if share:
result_dir = "share_result"
else:
result_dir = "non_share_result"

recoder_file_path = f"{result_dir}/random_{times}_{code_len}_{code_num}_{model_type}_{need_prob}.pk"#

words = code_generator(code_len, code_num, letter_num)
kb = ClsKB(words)
abducer = AbducerBase(kb)

label_lists = [[] for _ in range(code_len)]
for widx, word in enumerate(words):
for cidx, c in enumerate(word):
label_lists[cidx].append(c)

if share:
label_lists = [sum(label_lists, [])]

recoder = logger()
recoder.set_savefile("test.log")
for idx, err in enumerate(range(0, 41)):
print("Start expriment", idx)
start = time.process_time()
err = err / 40.
if 1 - err < (1. / letter_num):
break
if model_type == "KNN":
model = KNN(code_len, label_lists = label_lists, share=share)
elif model_type == "DT":
model = DecisionTree(code_len, label_lists = label_lists, share=share)

pre_X, pre_Y = generate_data_via_codes(words, err, letter_num)
X, Y = generate_data_via_codes(words, 0, letter_num)

str_words = ["".join(str(c) for c in word) for word in words]

recoder.print(str_words)

model.train(pre_X, pre_Y)
abl_epoch = 30
res = framework.train(model, abducer, X, Y, sample_num = 10000, verbose = 1)
print("Initial data accuracy:", 1 - err)
print("Abd word accuracy: ", res["accuracy_word"] * 1.0 / res["total_word"])
print("Abd char accuracy: ", res["accuracy_abd_char"] * 1.0 / res["total_abd_char"])
print("Ori char accuracy: ", res["accuracy_ori_char"] * 1.0 / res["total_ori_char"])
print("End expriment", idx)
print()

recoder.dump(open(recoder_file_path, "wb"))
return True

if __name__ == "__main__":
os.system("mkdir share_result")
os.system("mkdir non_share_result")
for times in range(5):
for code_num in [32, 64, 128]:
params = [11, times, code_num, True, "KNN", True, 2]
run_test(params)

params = [11, times, code_num, True, "KNN", False, 2]
run_test(params)

#params = [11, 0, 32, True, "DT", True, 2]
#run_test(params)


Loading…
Cancel
Save