yobx.sklearn.naive_bayes.nb#
- yobx.sklearn.naive_bayes.nb.sklearn_bernoulli_nb(g: GraphBuilderExtendedProtocol, sts: Dict, outputs: List[str], estimator: BernoulliNB, X: str, name: str = 'bernoulli_nb') Tuple[str, str][source]#
Converts a
sklearn.naive_bayes.BernoulliNBinto ONNX.The joint log-likelihood follows the sklearn formula:
neg_prob = log1p(-exp(feature_log_prob_)) (C x F) — precomputed diff = feature_log_prob_ - neg_prob (C x F) — precomputed neg_sum = Σ_f neg_prob (C,) — precomputed X_bin = (X > binarize).astype(dtype) if binarize is not None jll = X_bin @ diffᵀ + class_log_prior_ + neg_sum (N x C)
probabilities ← Softmax(jll, axis=1) label ← classes_[ArgMax(jll, axis=1)]
- Parameters:
g – the graph builder to add nodes to
sts – shapes defined by scikit-learn
outputs – desired names (label, probabilities)
estimator – a fitted
BernoulliNBX – input tensor name
name – prefix for added node names
- Returns:
tuple
(label_result_name, proba_result_name)
- yobx.sklearn.naive_bayes.nb.sklearn_gaussian_nb(g: GraphBuilderExtendedProtocol, sts: Dict, outputs: List[str], estimator: GaussianNB, X: str, name: str = 'gaussian_nb') Tuple[str, str][source]#
Converts a
sklearn.naive_bayes.GaussianNBinto ONNX.The joint log-likelihood for class c is:
jll[n, c] = log(prior[c]) - 0.5 * Σ_f log(2π·var[c,f]) - 0.5 * Σ_f (x[n,f] - θ[c,f])² / var[c,f]Rewritten as a quadratic form to avoid per-class broadcast:
A = -0.5 / var_ (C x F) B = θ_ / var_ (C x F) K = log(prior) - 0.5 · Σ_f log(2π·var) - 0.5 · Σ_f θ²/var (C,) jll = (X² @ Aᵀ) + (X @ Bᵀ) + K (N x C)probabilities ← Softmax(jll, axis=1) label ← classes_[ArgMax(jll, axis=1)]
- Parameters:
g – the graph builder to add nodes to
sts – shapes defined by scikit-learn
outputs – desired names (label, probabilities)
estimator – a fitted
GaussianNBX – input tensor name
name – prefix for added node names
- Returns:
tuple
(label_result_name, proba_result_name)
- yobx.sklearn.naive_bayes.nb.sklearn_multinomial_nb(g: GraphBuilderExtendedProtocol, sts: Dict, outputs: List[str], estimator: MultinomialNB | ComplementNB, X: str, name: str = 'multinomial_nb') Tuple[str, str][source]#
Converts a
sklearn.naive_bayes.MultinomialNBorsklearn.naive_bayes.ComplementNBinto ONNX.MultinomialNB:
jll = X @ feature_log_prob_ᵀ + class_log_prior_ (N x C)
ComplementNB (multi-class, no
class_log_prior_added):jll = X @ feature_log_prob_ᵀ (N x C)
probabilities ← Softmax(jll, axis=1) label ← classes_[ArgMax(jll, axis=1)]
- Parameters:
g – the graph builder to add nodes to
sts – shapes defined by scikit-learn
outputs – desired names (label, probabilities)
estimator – a fitted
MultinomialNBorComplementNBX – input tensor name
name – prefix for added node names
- Returns:
tuple
(label_result_name, proba_result_name)