Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

ptorrijos99/scikit-bayes

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

scikit-bayes

tests codecov doc Python License

scikit-bayes is a Python package that extends scikit-learn with a suite of Bayesian Network Classifiers.

The primary goal of this package is to provide robust, scikit-learn-compatible implementations of advanced Bayesian classifiers that are not available in the core library.

Key Features

  • MixedNB: Naive Bayes for mixed data types (Gaussian + Categorical + Bernoulli) in a single model
  • AnDE: Averaged n-Dependence Estimators (AODE, A2DE) that relax the independence assumption
  • ALR: Accelerated Logistic Regression - hybrid generative-discriminative models with 4 weight granularity levels
  • WeightedAnDE: Discriminatively-weighted ensemble models
  • Full scikit-learn API: Compatible with pipelines, cross-validation, and grid search

Quick Start

import numpy as np
from skbn import MixedNB, AnDE

# MixedNB: Handle mixed data types automatically
X = np.array([[1.5, 0, 2], [-0.5, 1, 0], [2.1, 1, 1], [-1.2, 0, 2]])
y = np.array([0, 1, 1, 0])

clf = MixedNB()
clf.fit(X, y)
print(clf.predict([[0.5, 1, 1]]))  # Automatically handles Gaussian, Bernoulli, Categorical

# AnDE: Solve problems Naive Bayes cannot (XOR)
X_xor = np.array([[-1, -1], [-1, 1], [1, -1], [1, 1]])
y_xor = np.array([0, 1, 1, 0])

clf = AnDE(n_dependence=1, n_bins=2)
clf.fit(X_xor, y_xor)
print(clf.predict(X_xor))  # [0, 1, 1, 0] ✓

Installation

pip install scikit-bayes

Or install from source:

pip install git+https://github.com/ptorrijos99/scikit-bayes.git

Documentation

Development

This project uses pixi for environment management.

# Run tests
pixi run test

# Run linter
pixi run lint

# Build documentation
pixi run build-doc

# Activate development environment
pixi shell -e dev

Citation

If you use scikit-bayes in a scientific publication, please cite:

@software{scikit_bayes,
  author = {Torrijos, Pablo},
  title = {scikit-bayes: Bayesian Network Classifiers for Python},
  year = {2025},
  url = {https://github.com/ptorrijos99/scikit-bayes}
}

References

  • Webb, G. I., Boughton, J., & Wang, Z. (2005). Not so naive Bayes: Aggregating one-dependence estimators. Machine Learning, 58(1), 5-24.
  • Flores, M. J., Gámez, J. A., Martínez, A. M., & Puerta, J. M. (2009). GAODE and HAODE: Two proposals based on AODE to deal with continuous variables. ICML '09, 313-320.
  • Zaidi, N. A., Webb, G. I., Carman, M. J., & Petitjean, F. (2017). Efficient parameter learning of Bayesian network classifiers. Machine Learning, 106(9-10), 1289-1329.

License

BSD-3-Clause. See LICENSE for details.

Morty Proxy This is a proxified and sanitized view of the page, visit original site.