package hex.genmodel.algos.glm;
import hex.genmodel.MojoModel;
abstract class GlmMojoModelBase extends MojoModel {
boolean _useAllFactorLevels;
int _cats;
int[] _catModes;
int[] _catOffsets;
int _nums;
double[] _numMeans;
boolean _meanImputation;
double[] _beta;
String _family;
GlmMojoModelBase(String[] columns, String[][] domains) {
super(columns, domains);
}
void init() { /* do nothing by default */ }
@Override
public final double[] score0(double[] data, double[] preds) {
if (_meanImputation)
imputeMissingWithMeans(data);
return glmScore0(data, preds);
}
abstract double[] glmScore0(double[] data, double[] preds);
private void imputeMissingWithMeans(double[] data) {
for (int i = 0; i < _cats; ++i)
if (Double.isNaN(data[i])) data[i] = _catModes[i];
for (int i = 0; i < _nums; ++i)
if (Double.isNaN(data[i + _cats])) data[i + _cats] = _numMeans[i];
}
}