/** * Generates a prediction for the given label * * @param $label * @param array $features * @return float */ protected function predictLabel($label, array $features, $useLog) { if ($useLog) { $score = log($this->model->getLabelCount($label) / $this->model->getDocCount()); foreach ($features as $feature => $count) { if ($this->model->labelModelsFeature($label, $feature)) { $probability = $this->model->getLabelFeatureModel($label, $feature); $score += log($probability); } } return $score; } else { $score = $this->model->getLabelCount($label) / $this->model->getDocCount(); foreach ($features as $feature => $count) { if ($this->model->labelModelsFeature($label, $feature)) { $probability = $this->model->getLabelFeatureModel($label, $feature); $score *= $probability; } } return $score; } }