001package javax.visrec.ml.classification;
002
003import java.util.Map;
004
005/**
006 * Generic classifier interface, that all classifiers should implement. Provides
007 * a method to classify instances of some class. Implementations should specify
008 * type of objects (class) that are classified.
009 *
010 * @author Zoran Sevarac
011 * @param <T> type of input objects to classify (eg. User, Product, Transaction, Image, etc.)
012 * @param <R> type of classification result map eg. String is commonly used , but Enum or Boolean as well.
013 * In general Enums should be used when there is a small number of categories and String for more categories.
014 * @since 1.0
015 */
016@FunctionalInterface
017public interface Classifier<T, R> {
018
019    /**
020     * Classifies specified instance and returns classification results as
021     * map with class names and corresponding classification scores.
022     *
023     * @param input some instance to classify
024     * @return classification results for the specified instance
025     */
026    public Map<R, Float> classify(T input);
027       
028}