    001package javax.visrec.regression;
    002
    003import javax.visrec.regression.Regressor;
    004
    005/**
    006 * Simple linear regression finds the best possible straight line that tries to explain given training set.
    007 *
    008 * @author zoran
    009 */
    010public abstract class SimpleLinearRegression<MODEL_CLASS> implements Regressor<Float, Float> {
    011
    012    private MODEL_CLASS model;
    013
    014    public MODEL_CLASS getModel() {
    015        return model;
    016    }
    017
    018    protected void setModel(MODEL_CLASS model) {
    019        this.model = model;
    020    }
    021
    022    @Override
    023    public abstract Float predict(Float inputs);
    024
    025    /**
    026     * How much on average output change when input changes by one.
    027     * If it is zero there is no linear dependency between input and output, and data is probably scattered.
    028     * If it is less then one output grows slower then input.
    029     * If it is greater than one, then output is growing faster than input.
    030     * If its negative, then output is lowering as input grows.
    031     *
    032     * @return
    033     */
    034    public abstract float getSlope();
    035
    036    /**
    037     * The value of output when input is zero
    038     * @return
    039     */
    040    public abstract float getIntercept();
    041    // ili da vracam parametre modela u mapi?
    042    // ili kao niz koeficijenata?
    043
    044    // performance measures
    045    // RSE
    046    // R2
    047
    048
    049//    Map.new().put()
    050
    051}