package hex; import water.fvec.Frame; public class ModelMetricsBinomialGLM extends ModelMetricsBinomial implements GLMMetrics { public final long _nullDegressOfFreedom; public final long _residualDegressOfFreedom; public final double _resDev; public final double _nullDev; public final double _AIC; public ModelMetricsBinomialGLM(Model model, Frame frame, long nobs, double mse, String[] domain, double sigma, AUC2 auc, double logloss, double resDev, double nullDev, double aic, long nDof, long rDof, GainsLift gainsLift) { super(model, frame, nobs, mse, domain, sigma, auc, logloss, gainsLift); _resDev = resDev; _nullDev = nullDev; _AIC = aic; _nullDegressOfFreedom = nDof; _residualDegressOfFreedom = rDof; } @Override public double residual_deviance() {return _resDev;} @Override public double null_deviance() {return _nullDev;} @Override public long residual_degrees_of_freedom(){ return _residualDegressOfFreedom; } @Override public long null_degrees_of_freedom() {return _nullDegressOfFreedom;} @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(super.toString()); sb.append(" null DOF: " + (float)_nullDegressOfFreedom + "\n"); sb.append(" residual DOF: " + (float)_residualDegressOfFreedom + "\n"); sb.append(" null deviance: " + (float)_nullDev + "\n"); sb.append(" residual deviance: " + (float)_resDev + "\n"); return sb.toString(); } @Override public boolean equals(Object o) { if(!(o instanceof ModelMetricsBinomialGLM)) return false; ModelMetricsBinomialGLM mm = (ModelMetricsBinomialGLM)o; return _residualDegressOfFreedom == mm._residualDegressOfFreedom && _nullDegressOfFreedom == mm._nullDegressOfFreedom && Math.abs(_resDev - mm._resDev) < 1e-8; } public static class ModelMetricsMultinomialGLM extends ModelMetricsMultinomial implements GLMMetrics { public final long _nullDegressOfFreedom; public final long _residualDegressOfFreedom; public final double _resDev; public final double _nullDev; public final double _AIC; public ModelMetricsMultinomialGLM(Model model, Frame frame, long nobs, double mse, String[] domain, double sigma, ConfusionMatrix cm, float [] hr, double logloss, double resDev, double nullDev, double aic, long nDof, long rDof) { super(model, frame, nobs, mse, domain, sigma, cm, hr, logloss); _resDev = resDev; _nullDev = nullDev; _AIC = aic; _nullDegressOfFreedom = nDof; _residualDegressOfFreedom = rDof; } @Override public double residual_deviance() {return _resDev;} @Override public double null_deviance() {return _nullDev;} @Override public long residual_degrees_of_freedom(){ return _residualDegressOfFreedom; } @Override public long null_degrees_of_freedom() {return _nullDegressOfFreedom;} @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(super.toString()); sb.append(" null DOF: " + (float)_nullDegressOfFreedom + "\n"); sb.append(" residual DOF: " + (float)_residualDegressOfFreedom + "\n"); sb.append(" null deviance: " + (float)_nullDev + "\n"); sb.append(" residual deviance: " + (float)_resDev + "\n"); return sb.toString(); } @Override public boolean equals(Object o) { if(!(o instanceof ModelMetricsMultinomialGLM)) return false; ModelMetricsMultinomialGLM mm = (ModelMetricsMultinomialGLM)o; return _residualDegressOfFreedom == mm._residualDegressOfFreedom && _nullDegressOfFreedom == mm._nullDegressOfFreedom && Math.abs(_resDev - mm._resDev) < 1e-8; } } }