Update to use setuptools

This commit is contained in:
2022-11-23 19:27:21 +01:00
parent 1a0d30dc74
commit a535ecc032
10 changed files with 52 additions and 41 deletions

View File

@@ -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"

View File

@@ -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()

View File

@@ -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__

View File

@@ -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__

View File

@@ -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__

View File

@@ -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()])

View File

@@ -0,0 +1,7 @@
import doctest
import bayesclass
def load_tests(loader, tests, ignore):
tests.addTests(doctest.DocTestSuite(bayesclass))
return tests

View File

@@ -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")

View File

@@ -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]

View File

@@ -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"]