mirror of
https://github.com/Doctorado-ML/bayesclass.git
synced 2025-08-15 23:55:57 +00:00
Update to use setuptools
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
from .bayesclass import TAN, KDB, AODE
|
||||
from ._version import __version__
|
||||
# from .bayesclass import TAN, KDB, AODE
|
||||
from bayesclass._version import __version__
|
||||
|
||||
__author__ = "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 pandas as pd
|
||||
>>> from bayesclass import TAN
|
||||
>>> from bayesclass.bayesclass import TAN
|
||||
>>> features = ['A', 'B', 'C', 'D', 'E']
|
||||
>>> np.random.seed(17)
|
||||
>>> values = pd.DataFrame(np.random.randint(low=0, high=2,
|
||||
@@ -142,7 +142,7 @@ class BayesBase(BaseEstimator, ClassifierMixin):
|
||||
--------
|
||||
>>> import numpy as np
|
||||
>>> import pandas as pd
|
||||
>>> from bayesclass import TAN
|
||||
>>> from bayesclass.bayesclass import TAN
|
||||
>>> features = ['A', 'B', 'C', 'D', 'E']
|
||||
>>> np.random.seed(17)
|
||||
>>> 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")
|
||||
for index, model in enumerate(self.models_):
|
||||
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 bayesclass import AODE
|
||||
from bayesclass.bayesclass import AODE
|
||||
from .._version import __version__
|
||||
|
||||
|
||||
|
@@ -6,7 +6,7 @@ from matplotlib.testing.decorators import image_comparison
|
||||
from matplotlib.testing.conftest import mpl_test_settings
|
||||
|
||||
|
||||
from bayesclass import KDB
|
||||
from bayesclass.bayesclass import KDB
|
||||
from .._version import __version__
|
||||
|
||||
|
||||
|
@@ -6,7 +6,7 @@ from matplotlib.testing.decorators import image_comparison
|
||||
from matplotlib.testing.conftest import mpl_test_settings
|
||||
|
||||
|
||||
from bayesclass import TAN
|
||||
from bayesclass.bayesclass import TAN
|
||||
from .._version import __version__
|
||||
|
||||
|
||||
|
@@ -2,7 +2,7 @@ import pytest
|
||||
|
||||
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()])
|
||||
|
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
|
||||
from sklearn.model_selection import cross_val_score, StratifiedKFold
|
||||
from benchmark import Datasets
|
||||
from bayesclass import TAN
|
||||
from sklearn.preprocessing import KBinsDiscretizer
|
||||
from sklearn.datasets import load_wine
|
||||
from bayesclass.bayesclass import TAN
|
||||
import warnings
|
||||
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
print("Usage: python3 example.py <dataset> [n_folds]")
|
||||
exit(1)
|
||||
# Warnings are not errors
|
||||
warnings.simplefilter("ignore")
|
||||
start = time.time()
|
||||
random_state = 17
|
||||
name = sys.argv[1]
|
||||
n_folds = int(sys.argv[2]) if len(sys.argv) == 3 else 5
|
||||
dt = Datasets()
|
||||
name_list = list(dt) if name == "all" else [name]
|
||||
n_folds = 5
|
||||
print(f"Accuracy in {n_folds} folds stratified crossvalidation")
|
||||
for name in name_list:
|
||||
dataset_start = time.time()
|
||||
X, y = dt.load(name)
|
||||
clf = TAN(random_state=random_state)
|
||||
fit_params = dict(
|
||||
features=dt.get_features(), class_name=dt.get_class_name(), head=0
|
||||
)
|
||||
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(
|
||||
f"{name:20s}{'.' * 10}{score.mean():9.7f} "
|
||||
f"({time.time()-dataset_start:7.2f} seconds)"
|
||||
)
|
||||
dataset_start = time.time()
|
||||
dataset = load_wine()
|
||||
Xc = dataset.data
|
||||
enc = KBinsDiscretizer(encode="ordinal")
|
||||
X = enc.fit_transform(Xc)
|
||||
y = dataset.target
|
||||
clf = TAN(random_state=random_state)
|
||||
fit_params = dict(features=dataset.feature_names, class_name="class", head=0)
|
||||
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(
|
||||
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")
|
||||
|
@@ -7,7 +7,7 @@ An example plot of :class:`bayesclass.TAN`
|
||||
"""
|
||||
import numpy as np
|
||||
from matplotlib import pyplot as plt
|
||||
from bayesclass import TAN
|
||||
from bayesclass.bayesclass import TAN
|
||||
|
||||
X = [[0, 0], [1, 1]]
|
||||
y = [0, 1]
|
||||
|
@@ -1,6 +1,14 @@
|
||||
[build-system]
|
||||
requires = ["flit_core >=3.2,<4"]
|
||||
build-backend = "flit_core.buildapi"
|
||||
requires = ["setuptools", "setuptools-scm"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[tool.setuptools]
|
||||
packages = ["bayesclass"]
|
||||
license-files = ["LICENSE"]
|
||||
|
||||
[tool.setuptools.dynamic]
|
||||
version = { attr = "bayesclass.__version__" }
|
||||
readme = { file = ["README.md"] }
|
||||
|
||||
[project]
|
||||
name = "bayesclass"
|
||||
@@ -8,17 +16,16 @@ description = "A collection of Bayesian Estimators."
|
||||
authors = [
|
||||
{ name = "Ricardo Montañana", email = "ricardo.montanana@alu.uclm.es" },
|
||||
]
|
||||
dynamic = ['version']
|
||||
dynamic = ['version', 'readme']
|
||||
dependencies = [
|
||||
"numpy",
|
||||
"scipy",
|
||||
"numpy",
|
||||
"pandas",
|
||||
"scikit-learn",
|
||||
"pgmpy",
|
||||
"networkx",
|
||||
"matplotlib",
|
||||
]
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.8"
|
||||
classifiers = [
|
||||
"Development Status :: 3 - Alpha",
|
||||
@@ -44,7 +51,7 @@ doc = ["sphinx", "sphinx-gallery", "sphinx_rtd_theme", "numpydoc"]
|
||||
Home = "https://github.com/doctorado-ml/bayesclass"
|
||||
|
||||
[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]
|
||||
source = ["bayesclass"]
|
||||
|
Reference in New Issue
Block a user