Gaussian Naive Bayes models each feature, within each class, as an independent normal distribution:
Implement a class GaussianNB(var_smoothing=1e-9):
fit(X, y): store classes_ (sorted), priors_ (class frequencies), means_ and vars_ of shape (classes, features), using the population variance (ddof=0) plus var_smoothing * max(variance of each feature over all of X), as scikit-learn does. Return self.predict_log_proba(X): normalised log-posteriors, using a stable log-sum-exppredict(X): the most probable class labels