mirror of
https://github.com/Doctorado-ML/bayesclass.git
synced 2025-08-16 08:05:57 +00:00
Update to use setuptools
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
from .bayesclass import TAN, KDB, AODE
|
# from .bayesclass import TAN, KDB, AODE
|
||||||
from ._version import __version__
|
from bayesclass._version import __version__
|
||||||
|
|
||||||
__author__ = "Ricardo Montañana Gómez"
|
__author__ = "Ricardo Montañana Gómez"
|
||||||
__copyright__ = "Copyright 2020-2023, Ricardo Montañana Gómez"
|
__copyright__ = "Copyright 2020-2023, Ricardo Montañana Gómez"
|
||||||
|
@@ -86,7 +86,7 @@ class BayesBase(BaseEstimator, ClassifierMixin):
|
|||||||
--------
|
--------
|
||||||
>>> import numpy as np
|
>>> import numpy as np
|
||||||
>>> import pandas as pd
|
>>> import pandas as pd
|
||||||
>>> from bayesclass import TAN
|
>>> from bayesclass.bayesclass import TAN
|
||||||
>>> features = ['A', 'B', 'C', 'D', 'E']
|
>>> features = ['A', 'B', 'C', 'D', 'E']
|
||||||
>>> np.random.seed(17)
|
>>> np.random.seed(17)
|
||||||
>>> values = pd.DataFrame(np.random.randint(low=0, high=2,
|
>>> values = pd.DataFrame(np.random.randint(low=0, high=2,
|
||||||
@@ -142,7 +142,7 @@ class BayesBase(BaseEstimator, ClassifierMixin):
|
|||||||
--------
|
--------
|
||||||
>>> import numpy as np
|
>>> import numpy as np
|
||||||
>>> import pandas as pd
|
>>> import pandas as pd
|
||||||
>>> from bayesclass import TAN
|
>>> from bayesclass.bayesclass import TAN
|
||||||
>>> features = ['A', 'B', 'C', 'D', 'E']
|
>>> features = ['A', 'B', 'C', 'D', 'E']
|
||||||
>>> np.random.seed(17)
|
>>> np.random.seed(17)
|
||||||
>>> values = pd.DataFrame(np.random.randint(low=0, high=2,
|
>>> values = pd.DataFrame(np.random.randint(low=0, high=2,
|
||||||
@@ -373,4 +373,4 @@ class AODE(BayesBase, BaseEnsemble):
|
|||||||
dataset = pd.DataFrame(X, columns=self.features_, dtype="int16")
|
dataset = pd.DataFrame(X, columns=self.features_, dtype="int16")
|
||||||
for index, model in enumerate(self.models_):
|
for index, model in enumerate(self.models_):
|
||||||
result[:, index] = model.predict(dataset).values.ravel()
|
result[:, index] = model.predict(dataset).values.ravel()
|
||||||
return mode(result, axis=1).mode.ravel()
|
return mode(result, axis=1, keepdims=False).mode.ravel()
|
||||||
|
@@ -4,7 +4,7 @@ from sklearn.datasets import load_iris
|
|||||||
from sklearn.preprocessing import KBinsDiscretizer
|
from sklearn.preprocessing import KBinsDiscretizer
|
||||||
|
|
||||||
|
|
||||||
from bayesclass import AODE
|
from bayesclass.bayesclass import AODE
|
||||||
from .._version import __version__
|
from .._version import __version__
|
||||||
|
|
||||||
|
|
||||||
|
@@ -6,7 +6,7 @@ from matplotlib.testing.decorators import image_comparison
|
|||||||
from matplotlib.testing.conftest import mpl_test_settings
|
from matplotlib.testing.conftest import mpl_test_settings
|
||||||
|
|
||||||
|
|
||||||
from bayesclass import KDB
|
from bayesclass.bayesclass import KDB
|
||||||
from .._version import __version__
|
from .._version import __version__
|
||||||
|
|
||||||
|
|
||||||
|
@@ -6,7 +6,7 @@ from matplotlib.testing.decorators import image_comparison
|
|||||||
from matplotlib.testing.conftest import mpl_test_settings
|
from matplotlib.testing.conftest import mpl_test_settings
|
||||||
|
|
||||||
|
|
||||||
from bayesclass import TAN
|
from bayesclass.bayesclass import TAN
|
||||||
from .._version import __version__
|
from .._version import __version__
|
||||||
|
|
||||||
|
|
||||||
|
@@ -2,7 +2,7 @@ import pytest
|
|||||||
|
|
||||||
from sklearn.utils.estimator_checks import check_estimator
|
from sklearn.utils.estimator_checks import check_estimator
|
||||||
|
|
||||||
from bayesclass import TAN, KDB, AODE
|
from bayesclass.bayesclass import TAN, KDB, AODE
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("estimator", [TAN(), KDB(k=2), AODE()])
|
@pytest.mark.parametrize("estimator", [TAN(), KDB(k=2), AODE()])
|
||||||
|
7
bayesclass/tests/test_doctest.py
Normal file
7
bayesclass/tests/test_doctest.py
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import doctest
|
||||||
|
import bayesclass
|
||||||
|
|
||||||
|
|
||||||
|
def load_tests(loader, tests, ignore):
|
||||||
|
tests.addTests(doctest.DocTestSuite(bayesclass))
|
||||||
|
return tests
|
47
example.py
47
example.py
@@ -1,36 +1,33 @@
|
|||||||
import sys
|
|
||||||
import time
|
import time
|
||||||
from sklearn.model_selection import cross_val_score, StratifiedKFold
|
from sklearn.model_selection import cross_val_score, StratifiedKFold
|
||||||
from benchmark import Datasets
|
from sklearn.preprocessing import KBinsDiscretizer
|
||||||
from bayesclass import TAN
|
from sklearn.datasets import load_wine
|
||||||
|
from bayesclass.bayesclass import TAN
|
||||||
import warnings
|
import warnings
|
||||||
|
|
||||||
|
|
||||||
if len(sys.argv) < 2:
|
|
||||||
print("Usage: python3 example.py <dataset> [n_folds]")
|
|
||||||
exit(1)
|
|
||||||
# Warnings are not errors
|
# Warnings are not errors
|
||||||
warnings.simplefilter("ignore")
|
warnings.simplefilter("ignore")
|
||||||
start = time.time()
|
start = time.time()
|
||||||
random_state = 17
|
random_state = 17
|
||||||
name = sys.argv[1]
|
n_folds = 5
|
||||||
n_folds = int(sys.argv[2]) if len(sys.argv) == 3 else 5
|
|
||||||
dt = Datasets()
|
|
||||||
name_list = list(dt) if name == "all" else [name]
|
|
||||||
print(f"Accuracy in {n_folds} folds stratified crossvalidation")
|
print(f"Accuracy in {n_folds} folds stratified crossvalidation")
|
||||||
for name in name_list:
|
dataset_start = time.time()
|
||||||
dataset_start = time.time()
|
dataset = load_wine()
|
||||||
X, y = dt.load(name)
|
Xc = dataset.data
|
||||||
clf = TAN(random_state=random_state)
|
enc = KBinsDiscretizer(encode="ordinal")
|
||||||
fit_params = dict(
|
X = enc.fit_transform(Xc)
|
||||||
features=dt.get_features(), class_name=dt.get_class_name(), head=0
|
y = dataset.target
|
||||||
)
|
clf = TAN(random_state=random_state)
|
||||||
kfold = StratifiedKFold(
|
fit_params = dict(features=dataset.feature_names, class_name="class", head=0)
|
||||||
n_splits=n_folds, shuffle=True, random_state=random_state
|
kfold = StratifiedKFold(
|
||||||
)
|
n_splits=n_folds, shuffle=True, random_state=random_state
|
||||||
score = cross_val_score(clf, X, y, cv=kfold, fit_params=fit_params)
|
)
|
||||||
print(
|
score = cross_val_score(clf, X, y, cv=kfold, fit_params=fit_params)
|
||||||
f"{name:20s}{'.' * 10}{score.mean():9.7f} "
|
print(
|
||||||
f"({time.time()-dataset_start:7.2f} seconds)"
|
f"wine {'.' * 10}{score.mean():9.7f} "
|
||||||
)
|
f"({time.time()-dataset_start:7.2f} seconds)"
|
||||||
|
)
|
||||||
|
clf.fit(X, y, **fit_params)
|
||||||
|
clf.plot("TAN wine")
|
||||||
print(f"Took {time.time()-start:.2f} seconds")
|
print(f"Took {time.time()-start:.2f} seconds")
|
||||||
|
@@ -7,7 +7,7 @@ An example plot of :class:`bayesclass.TAN`
|
|||||||
"""
|
"""
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from matplotlib import pyplot as plt
|
from matplotlib import pyplot as plt
|
||||||
from bayesclass import TAN
|
from bayesclass.bayesclass import TAN
|
||||||
|
|
||||||
X = [[0, 0], [1, 1]]
|
X = [[0, 0], [1, 1]]
|
||||||
y = [0, 1]
|
y = [0, 1]
|
||||||
|
@@ -1,6 +1,14 @@
|
|||||||
[build-system]
|
[build-system]
|
||||||
requires = ["flit_core >=3.2,<4"]
|
requires = ["setuptools", "setuptools-scm"]
|
||||||
build-backend = "flit_core.buildapi"
|
build-backend = "setuptools.build_meta"
|
||||||
|
|
||||||
|
[tool.setuptools]
|
||||||
|
packages = ["bayesclass"]
|
||||||
|
license-files = ["LICENSE"]
|
||||||
|
|
||||||
|
[tool.setuptools.dynamic]
|
||||||
|
version = { attr = "bayesclass.__version__" }
|
||||||
|
readme = { file = ["README.md"] }
|
||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "bayesclass"
|
name = "bayesclass"
|
||||||
@@ -8,17 +16,16 @@ description = "A collection of Bayesian Estimators."
|
|||||||
authors = [
|
authors = [
|
||||||
{ name = "Ricardo Montañana", email = "ricardo.montanana@alu.uclm.es" },
|
{ name = "Ricardo Montañana", email = "ricardo.montanana@alu.uclm.es" },
|
||||||
]
|
]
|
||||||
dynamic = ['version']
|
dynamic = ['version', 'readme']
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"numpy",
|
|
||||||
"scipy",
|
"scipy",
|
||||||
|
"numpy",
|
||||||
"pandas",
|
"pandas",
|
||||||
"scikit-learn",
|
"scikit-learn",
|
||||||
"pgmpy",
|
"pgmpy",
|
||||||
"networkx",
|
"networkx",
|
||||||
"matplotlib",
|
"matplotlib",
|
||||||
]
|
]
|
||||||
readme = "README.md"
|
|
||||||
requires-python = ">=3.8"
|
requires-python = ">=3.8"
|
||||||
classifiers = [
|
classifiers = [
|
||||||
"Development Status :: 3 - Alpha",
|
"Development Status :: 3 - Alpha",
|
||||||
@@ -44,7 +51,7 @@ doc = ["sphinx", "sphinx-gallery", "sphinx_rtd_theme", "numpydoc"]
|
|||||||
Home = "https://github.com/doctorado-ml/bayesclass"
|
Home = "https://github.com/doctorado-ml/bayesclass"
|
||||||
|
|
||||||
[tool.pytest.ini_options]
|
[tool.pytest.ini_options]
|
||||||
addopts = "--cov --cov-report html --cov-report term-missing --cov-fail-under 95"
|
addopts = "--cov --cov-report html --cov-report term-missing --cov-fail-under 95 " #--doctest-modules
|
||||||
|
|
||||||
[tool.coverage.run]
|
[tool.coverage.run]
|
||||||
source = ["bayesclass"]
|
source = ["bayesclass"]
|
||||||
|
Reference in New Issue
Block a user