From ce8b6684f71b1c78eb5792eae88124e60aca23c0 Mon Sep 17 00:00:00 2001 From: Pavan Mandava Date: Sat, 16 May 2020 17:27:50 +0200 Subject: [PATCH] Model Testing Code added --- classifier/linear_model.py | 2 +- testing/feature_testing.py | 2 ++ testing/model_testing.py | 32 ++++++++++++++++++++++++++++++-- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/classifier/linear_model.py b/classifier/linear_model.py index bca1494..ae3ed22 100644 --- a/classifier/linear_model.py +++ b/classifier/linear_model.py @@ -130,7 +130,7 @@ class MultiClassPerceptron: for epoch in range(self.epochs): # get a random number within the size of training set - rand_num = random.randint(0, train_len) + rand_num = random.randint(0, train_len-1) # pick a random data instance with the generated random number inst = X_train[rand_num] diff --git a/testing/feature_testing.py b/testing/feature_testing.py index b2a2364..88a832c 100644 --- a/testing/feature_testing.py +++ b/testing/feature_testing.py @@ -4,6 +4,8 @@ from utils.csv import read_csv_file project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) train_file_path = project_root+'/data/tsv/train.tsv' +test_file_path = project_root+'/data/tsv/test.tsv' + print(train_file_path) data = read_csv_file(csv_file_path=train_file_path, delimiter='\t') diff --git a/testing/model_testing.py b/testing/model_testing.py index f42fbe0..ba3ac5f 100644 --- a/testing/model_testing.py +++ b/testing/model_testing.py @@ -1,3 +1,31 @@ -from classifier.linear_model import get_sample_weights_with_features +from classifier.linear_model import MultiClassPerceptron +from utils.csv import read_csv_file +from eval.metrics import f1_score +import utils.constants as const +import os -print(get_sample_weights_with_features()) +project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +train_file_path = project_root+'/data/tsv/train.tsv' +test_file_path = project_root+'/data/tsv/test.tsv' + + +X_train_inst = read_csv_file(train_file_path, '\t') + +labels = set([inst.true_label for inst in X_train_inst]) + +X_test_inst = read_csv_file(test_file_path, '\t') + +epochs = int(len(X_train_inst)*0.75) + +clf = MultiClassPerceptron(epochs, 1) + +clf.fit(X_train=X_train_inst, labels=list(labels)) + +y_test = clf.predict(X_test_inst) + +y_true = [inst.true_label for inst in X_test_inst] + +f1_score_list = f1_score(y_true, y_test, labels, const.AVG_MICRO) + +for result in f1_score_list: + result.print_result()