
com.fluxtion.runtime.ml.PredictiveLinearRegressionModel Maven / Gradle / Ivy
package com.fluxtion.runtime.ml;
import com.fluxtion.runtime.annotations.ExportService;
import com.fluxtion.runtime.annotations.Initialise;
import com.fluxtion.runtime.annotations.NoPropagateFunction;
import com.fluxtion.runtime.annotations.OnTrigger;
import com.fluxtion.runtime.annotations.feature.Experimental;
import com.fluxtion.runtime.util.CollectionHelper;
import java.util.Arrays;
import java.util.List;
@Experimental
public class PredictiveLinearRegressionModel implements PredictiveModel, @ExportService CalibrationProcessor {
private final Feature[] features;
private final transient List immutableFeatures;
private double prediction = Double.NaN;
public PredictiveLinearRegressionModel(Feature... features) {
this.features = Arrays.copyOf(features, features.length);
immutableFeatures = CollectionHelper.listOf(features);
}
public PredictiveLinearRegressionModel(List featureList) {
this(featureList.toArray(new Feature[0]));
}
@Initialise
public void init() {
prediction = Double.NaN;
}
@Override
@NoPropagateFunction
public boolean setCalibration(List calibrations) {
return calculateInference();
}
@OnTrigger
public boolean calculateInference() {
prediction = 0;
for (Feature feature : features) {
prediction += feature.value();
}
return true;
}
@Override
public double predictedValue() {
return prediction;
}
@Override
public List features() {
return immutableFeatures;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy