predict method

int predict(
  1. List<double> x
)

Implementation

int predict(List<double> x) {
  if (weights == null) throw StateError('Model not fitted');
  final k0 = weights!.length;
  var best = 0;
  var bestP = -double.infinity;
  for (var j = 0; j < k0; j++) {
    var exponent = 0.0;
    for (var d = 0; d < x.length; d++) {
      final diff = x[d] - means![j][d];
      exponent += (diff * diff) / (2.0 * covs![j][d]);
    }
    final coef =
        pow(2 * pi, x.length / 2) * sqrt(covs![j].reduce((a, b) => a * b));
    final p = (1.0 / coef) * exp(-exponent) * weights![j];
    final lp = log(p + 1e-300);
    if (lp > bestP) {
      bestP = lp;
      best = j;
    }
  }
  return best;
}