diff --git a/src/bin/cross_validation.py b/src/bin/cross_validation.py index 0eca204..c081d75 100755 --- a/src/bin/cross_validation.py +++ b/src/bin/cross_validation.py @@ -27,7 +27,7 @@ import logging import datetime from config import Config -from evaluation import CrossValidation, Precision, Recall, F1, Accuracy, SimpleAccuracy +from evaluation import CrossValidation, Precision, Recall, F_score, FPR, Accuracy from recommender import Recommender from user import RandomPopcon,LocalSystem,PopconSystem @@ -45,10 +45,10 @@ if __name__ == '__main__': metrics = [] metrics.append(Precision()) metrics.append(Recall()) - metrics.append(F1()) + metrics.append(F_score(0.5)) metrics.append(Accuracy()) - metrics.append(SimpleAccuracy()) - validation = CrossValidation(0.9,10,rec,metrics,0.005) + metrics.append(FPR()) + validation = CrossValidation(0.9,10,rec,metrics,1) validation.run(user) print validation diff --git a/src/evaluation.py b/src/evaluation.py index aacd8c1..af76d14 100644 --- a/src/evaluation.py +++ b/src/evaluation.py @@ -137,7 +137,8 @@ class FPR(Metric): """ Compute metric. """ - return float(len(evaluation.false_positive))/evaluation.true_negatives_len + return (float(len(evaluation.false_positive))/ + evaluation.real_negative_len) class F_score(Metric): """ @@ -148,7 +149,7 @@ class F_score(Metric): """ Set metric description. """ - self.desc = " F_score " + self.desc = " F(%.1f) " % k self.k = k def run(self,evaluation): @@ -254,12 +255,15 @@ class Evaluation: self.false_negative = [v[0] for v in self.real_relevant if not v[0] in [w[0] for w in self.predicted_relevant]] - self.true_negatives_len = self.repository_size - len(self.real_relevant) - #logging.debug("TP: %d" % len(self.true_positive)) - #logging.debug("FP: %d" % len(self.false_positive)) - #logging.debug("FN: %d" % len(self.false_negative)) - #logging.debug("Repo_size: %d" % self.repository_size) - #logging.debug("Relevant: %d" % len(self.real_relevant)) + self.real_negative_len = self.repository_size-len(self.real_relevant) + self.true_negative_len = (self.real_negative_len-len(self.false_positive)) + logging.debug("TP: %d" % len(self.true_positive)) + logging.debug("FP: %d" % len(self.false_positive)) + logging.debug("FN: %d" % len(self.false_negative)) + logging.debug("TN: %d" % self.true_negative_len) + logging.debug("Repo_size: %d" % self.repository_size) + logging.debug("Relevant: %d" % len(self.real_relevant)) + logging.debug("Irrelevant: %d" % self.real_negative_len) def run(self,metric): """ -- libgit2 0.21.2