#!/usr/bin/python # -*- coding: utf-8 -*- # """ Abstract class for classifiers. Name: classifier.py Author: Alessandro dos Santos Ferreira ( santosferreira.alessandro@gmail.com ) """ from abc import ABCMeta, abstractmethod class Classifier(object): __metaclass__ = ABCMeta def get_name(self): return self.__class__.__name__ @staticmethod def confusion_matrix(labels, matrix, title = None): title = "Confusion Matrix" if title is None else "Confusion Matrix " + title info = "=== " + title + " ===\n" info += "\t".join(labels) + "\t<-- classified as\n" for i in range(0, len(labels)): for val in matrix[i]: info += str(int(val)) + "\t" info += "| %s\n" % (labels[i]) info += "\n\n" return info @abstractmethod def get_config(self): pass @abstractmethod def set_config(self, configs): pass @abstractmethod def get_summary_config(self): pass def must_train(self): return False def train(self, dataset, training_data, force = False): pass @abstractmethod def classify(self, dataset, test_data): pass def cross_validate(self, detail = True): pass @abstractmethod def reset(self): pass