From 3eb3f0f35e9f35e14ae4697970dfaee0b927cd6e Mon Sep 17 00:00:00 2001 From: Pavan Mandava Date: Mon, 18 May 2020 09:57:08 +0200 Subject: [PATCH] theta bias changed --- classifier/linear_model.py | 4 ++-- testing/model_testing.py | 21 +++++++++++++++------ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/classifier/linear_model.py b/classifier/linear_model.py index 6e25f69..5c86f92 100644 --- a/classifier/linear_model.py +++ b/classifier/linear_model.py @@ -128,8 +128,8 @@ class MultiClassPerceptron: # Dictionary for storing label->Perceptron() objects, Create a new Perceptron object for each label for label in labels: - sample_weights = get_sample_weights_with_features(theta_bias=0.9, random_state=self.random_state) - self.perceptron_dict[label] = Perceptron(label, sample_weights, theta_bias=0.9) + sample_weights = get_sample_weights_with_features(theta_bias=-0.25, random_state=self.random_state) + self.perceptron_dict[label] = Perceptron(label, sample_weights, theta_bias=-0.25) next_print = int(self.epochs/10) diff --git a/testing/model_testing.py b/testing/model_testing.py index 59f87b6..aa10bee 100644 --- a/testing/model_testing.py +++ b/testing/model_testing.py @@ -8,26 +8,35 @@ 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' - +# Read the training dataset X_train_inst = read_csv_file(train_file_path, '\t') +# set of labels from Training data labels = set([inst.true_label for inst in X_train_inst]) +# Read test data set X_test_inst = read_csv_file(test_file_path, '\t') -epochs = int(len(X_train_inst)*0.95) +# number of training iterations +epochs = int(len(X_train_inst)*0.9) -clf = MultiClassPerceptron(epochs=epochs, learning_rate=1, random_state=42) +# create MultiClassPerceptron classifier object +clf = MultiClassPerceptron(epochs=epochs, learning_rate=0.9, random_state=42) +# train the model clf.fit(X_train=X_train_inst, labels=list(labels)) + +# predict y_test = clf.predict(X_test_inst) y_true = [inst.true_label for inst in X_test_inst] +# Model Evaluation f1_score_micro = f1_score(y_true, y_test, labels, const.AVG_MICRO) -f1_score_macro = f1_score(y_true, y_test, labels, const.AVG_MACRO) -f1_score_none = f1_score(y_true, y_test, labels, None) +# f1_score_macro = f1_score(y_true, y_test, labels, const.AVG_MACRO) +# f1_score_none = f1_score(y_true, y_test, labels, None) -for result in f1_score_micro+f1_score_macro+f1_score_none: +# Print F1 Score +for result in f1_score_micro: result.print_result()