Bgolearn
Bgolearn is a Bayesian global optimization package for accelerating materials discovery. It provides practical optimization workflows for costly experiments, including regression-based candidate recommendation, classification boundary exploration, cross-validation diagnostics, and several acquisition functions.
Author and maintainer: Dr.Bin Cao (https://bin-cao.github.io/)
Documentation: https://bgolearn.netlify.app/
Repository: https://github.com/Bin-Cao/Bgolearn
Features
- Bayesian global optimization for materials design and discovery.
- Single-objective minimization and maximization workflows.
- Classification-mode active learning for decision-boundary exploration.
- Acquisition functions including EI, EI with plugin, augmented EI, EQI, UCB, PoI, PES, and Knowledge Gradient.
- Built-in surrogate choices for SVM, Random Forest, AdaBoost, and MLP models.
- Gaussian process modeling with homogeneous or heterogeneous noise support.
- Optional cross-validation reports and virtual-sample prediction exports.
Installation
pip install Bgolearn
For local development from this repository:
pip install -e .
Quick Start
import pandas as pd
from Bgolearn.BGOsampling import Bgolearn
data = pd.read_csv("data.csv")
virtual_samples = pd.read_csv("virtual_data.csv")
X = data.iloc[:, :-1]
y = data.iloc[:, -1]
optimizer = Bgolearn()
model = optimizer.fit(
data_matrix=X,
Measured_response=y,
virtual_samples=virtual_samples,
Mission="Regression",
min_search=True,
)
scores, candidates = model.EI()
print(candidates)
HTML Experiment Report
Fit the optimizer, then generate a self-contained report after selecting an acquisition function:
model = optimizer.fit(
data_matrix=X,
Measured_response=y,
virtual_samples=virtual_samples,
CV_test=5,
)
report_path = model.HTML_report("EI")
print(report_path)
HTML_report writes an offline HTML file in Bgolearn/Reports/. It includes
the model summary, cross-validation diagnostics, the embedded
prediction plot, recommended experiments, and the full utility ranking.
Reports are generated automatically whenever a regression utility such as
model.EI() or model.UCB() is called. Set Generate_HTML_report=False to
disable this behavior.
Main API
Bgolearn.fit
Fits a Bayesian optimization workflow and returns an acquisition-function model.
Common parameters:
data_matrix: measured feature matrix.Measured_response: measured target values.virtual_samples: candidate samples to rank.Mission:"Regression"or"Classification".Kriging_model:None, a built-in model name, or a custom model class with afit_premethod.opt_num: number of candidates to recommend.min_search:Truefor minimization andFalsefor maximization.CV_test:False,"LOOCV", or an integer for k-fold cross-validation.
Custom Surrogate Model
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF
class CustomKrigingModel:
def fit_pre(self, xtrain, ytrain, xtest):
model = GaussianProcessRegressor(kernel=RBF(), normalize_y=True)
model.fit(xtrain, ytrain)
mean, std = model.predict(xtest, return_std=True)
return mean, std
Use it with:
model = optimizer.fit(
data_matrix=X,
Measured_response=y,
virtual_samples=virtual_samples,
Kriging_model=CustomKrigingModel,
)
Classification Mode
model = optimizer.fit(
data_matrix=X,
Measured_response=labels,
virtual_samples=virtual_samples,
Mission="Classification",
Classifier="RandomForest",
)
scores, candidates = model.Entropy()
Available classifiers include GaussianProcess, LogisticRegression,
NaiveBayes, SVM, and RandomForest.
Citation
If Bgolearn supports your research, please cite:
Cao B. et al., "Bgolearn: A Unified Bayesian Optimization Framework for Accelerating Materials Discovery", npj Computational Materials. https://doi.org/10.1038/s41524-026-02226-3
Support
Questions, issues, pull requests, and research collaborations are welcome.
Contact: bcao686@connect.hkust-gz.edu.cn
Release files for Bgolearn 3.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bgolearn-3.1.2.tar.gz | 35.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bgolearn-3.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 74.6 kB
Release files / bgolearn-3.1.2.tar.gz
| Download URL | bgolearn-3.1.2.tar.gz |
|---|---|
| Size | 35.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
470493394c3b41f4a29ee0c21411fd8fd986ca04f1c7803f4d5a12ffa0dec005
|
|
BLAKE2b-256 checksum How to use checksums |
68aefc7f8c118a0b1ec5a9401a1886701f081d8a997bc63872645ffbb729b90b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.19
|
Release files / bgolearn-3.1.2-py3-none-any.whl
| Download URL | bgolearn-3.1.2-py3-none-any.whl |
|---|---|
| Size | 39.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7d164c87f8f75cf8709841722bbb8803c3a6ceba40532dac847c2c36dc2dc55c
|
|
BLAKE2b-256 checksum How to use checksums |
6e6ce4b3d82739809e109a09e1ab3c8fed0b7afe95b0a1441369cea302b2f4b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.19
|