From 21814ba01eadbee8ab62605c87e98ab595971a94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana?= Date: Tue, 15 Nov 2022 18:52:33 +0100 Subject: [PATCH] First KDB implementation --- bayesclass/__init__.py | 4 +- bayesclass/bayesclass.py | 238 +++++++++++------- .../test_KDB/line_dashes_KDB.png | Bin 0 -> 51565 bytes .../test_TAN/line_dashes_TAN.png | Bin 0 -> 45222 bytes .../test_bayesclass/line_dashes.png | Bin 46357 -> 0 bytes bayesclass/tests/test_KDB.py | 92 +++++++ .../tests/{test_bayesclass.py => test_TAN.py} | 70 ++---- 7 files changed, 256 insertions(+), 148 deletions(-) create mode 100644 bayesclass/tests/baseline_images/test_KDB/line_dashes_KDB.png create mode 100644 bayesclass/tests/baseline_images/test_TAN/line_dashes_TAN.png delete mode 100644 bayesclass/tests/baseline_images/test_bayesclass/line_dashes.png create mode 100644 bayesclass/tests/test_KDB.py rename bayesclass/tests/{test_bayesclass.py => test_TAN.py} (60%) diff --git a/bayesclass/__init__.py b/bayesclass/__init__.py index cc119e8..3f9bc3c 100644 --- a/bayesclass/__init__.py +++ b/bayesclass/__init__.py @@ -1,4 +1,4 @@ -from .bayesclass import TAN +from .bayesclass import TAN, KDB from ._version import __version__ __author__ = "Ricardo Montañana Gómez" @@ -6,4 +6,4 @@ __copyright__ = "Copyright 2020-2023, Ricardo Montañana Gómez" __license__ = "MIT License" __author_email__ = "ricardo.montanana@alu.uclm.es" -__all__ = ["TAN", "__version__"] +__all__ = ["TAN", "KDB", "__version__"] diff --git a/bayesclass/bayesclass.py b/bayesclass/bayesclass.py index 4b6acf7..6ed1fdd 100644 --- a/bayesclass/bayesclass.py +++ b/bayesclass/bayesclass.py @@ -2,12 +2,12 @@ This is a module to be used as a reference for building other modules """ import random -from itertools import combinations import numpy as np import pandas as pd from sklearn.base import ClassifierMixin, BaseEstimator from sklearn.utils.validation import check_X_y, check_array, check_is_fitted from sklearn.utils.multiclass import unique_labels +from sklearn.feature_selection import mutual_info_classif import networkx as nx from pgmpy.estimators import TreeSearch, BayesianEstimator from pgmpy.models import BayesianNetwork @@ -16,6 +16,10 @@ from ._version import __version__ class BayesBase(BaseEstimator, ClassifierMixin): + def __init__(self, random_state, show_progress): + self.random_state = random_state + self.show_progress = show_progress + def _more_tags(self): return { "requires_positive_X": True, @@ -85,34 +89,6 @@ class BayesBase(BaseEstimator, ClassifierMixin): # Return the classifier return self - def _check_params_fit(self, X, y, kwargs): - """Check the parameters passed to fit""" - # Check that X and y have correct shape - X, y = check_X_y(X, y) - # Store the classes seen during fit - self.classes_ = unique_labels(y) - # Default values - self.class_name_ = "class" - self.features_ = [f"feature_{i}" for i in range(X.shape[1])] - self.head_ = 0 - expected_args = ["class_name", "features", "head"] - for key, value in kwargs.items(): - if key in expected_args: - setattr(self, f"{key}_", value) - else: - raise ValueError(f"Unexpected argument: {key}") - if self.random_state is not None: - random.seed(self.random_state) - if self.head_ == "random": - self.head_ = random.randint(0, len(self.features_) - 1) - if len(self.features_) != X.shape[1]: - raise ValueError( - "Number of features does not match the number of columns in X" - ) - if self.head_ is not None and self.head_ >= len(self.features_): - raise ValueError("Head index out of range") - return X, y - def predict(self, X): """A reference implementation of a prediction for a classifier. @@ -167,17 +143,28 @@ class BayesBase(BaseEstimator, ClassifierMixin): dataset = pd.DataFrame(X, columns=self.features_, dtype="int16") return self.model_.predict(dataset).values.ravel() + def plot(self, title="", node_size=800): + nx.draw_circular( + self.model_, + with_labels=True, + arrowsize=20, + node_size=node_size, + alpha=0.3, + font_weight="bold", + ) + plt.title(title) + plt.show() + class TAN(BayesBase): """Tree Augmented Naive Bayes Parameters ---------- - simple_init : bool, default=True - How to init the initial DAG. If True, only the first feature is used - as father of the other features. random_state: int, default=None Random state for reproducibility + show_progress: bool, default=False + used in pgmpy to show progress bars Attributes ---------- @@ -201,51 +188,40 @@ class TAN(BayesBase): The actual classifier """ - def __init__( - self, simple_init=True, show_progress=False, random_state=None - ): - self.simple_init = simple_init - self.show_progress = show_progress - self.random_state = random_state + def __init__(self, show_progress=False, random_state=None): + super().__init__( + show_progress=show_progress, random_state=random_state + ) - def __initial_edges(self): - """As with the naive Bayes, in a TAN structure, the class has no - parents, while features must have the class as parent and are forced to - have one other feature as parent too (except for one single feature, - which has only the class as parent and is considered the root of the - features' tree) - Cassio P. de Campos, Giorgio Corani, Mauro Scanagatta, Marco Cuccu, - Marco Zaffalon, - Learning extended tree augmented naive structures, - International Journal of Approximate Reasoning, - - Returns - ------- - List - List of edges - """ - head = self.head_ - if self.simple_init: - first_node = self.features_[head] - return [ - (first_node, feature) - for feature in self.features_ - if feature != first_node - ] - # initialize a complete network with all edges starting from head - reordered = [ - self.features_[idx % len(self.features_)] - for idx in range(head, len(self.features_) + head) - ] - return list(combinations(reordered, 2)) + def _check_params_fit(self, X, y, kwargs): + """Check the parameters passed to fit""" + # Check that X and y have correct shape + X, y = check_X_y(X, y) + # Store the classes seen during fit + self.classes_ = unique_labels(y) + # Default values + self.class_name_ = "class" + self.features_ = [f"feature_{i}" for i in range(X.shape[1])] + self.head_ = 0 + expected_args = ["class_name", "features", "head"] + for key, value in kwargs.items(): + if key in expected_args: + setattr(self, f"{key}_", value) + else: + raise ValueError(f"Unexpected argument: {key}") + if self.random_state is not None: + random.seed(self.random_state) + if self.head_ == "random": + self.head_ = random.randint(0, len(self.features_) - 1) + if len(self.features_) != X.shape[1]: + raise ValueError( + "Number of features does not match the number of columns in X" + ) + if self.head_ is not None and self.head_ >= len(self.features_): + raise ValueError("Head index out of range") + return X, y def _build(self): - # Initialize a Naive Bayes model - net = [(self.class_name_, feature) for feature in self.features_] - self.model_ = BayesianNetwork(net) - # initialize a complete network with all edges - self.model_.add_edges_from(self.__initial_edges()) - # learn graph structure est = TreeSearch(self.dataset_, root_node=self.features_[self.head_]) self.dag_ = est.estimate( estimator_type="tan", @@ -263,31 +239,103 @@ class TAN(BayesBase): prior_type="K2", ) - def plot(self, title=""): - nx.draw_circular( - self.model_, - with_labels=True, - arrowsize=30, - node_size=800, - alpha=0.3, - font_weight="bold", - ) - plt.title(title) - plt.show() - -class KDBayesClassifier(BayesBase): - def __init__(self, k=3, random_state=None): +class KDB(BayesBase): + def __init__(self, k, show_progress=False, random_state=None): self.k = k - self.random_state = random_state + super().__init__( + show_progress=show_progress, random_state=random_state + ) - @staticmethod - def version() -> str: - """Return the version of the package.""" - return __version__ + def _check_params_fit(self, X, y, kwargs): + """Check the parameters passed to fit""" + # Check that X and y have correct shape + X, y = check_X_y(X, y) + # Store the classes seen during fit + self.classes_ = unique_labels(y) + # Default values + self.class_name_ = "class" + self.features_ = [f"feature_{i}" for i in range(X.shape[1])] + self.head_ = 0 + expected_args = ["class_name", "features"] + for key, value in kwargs.items(): + if key in expected_args: + setattr(self, f"{key}_", value) + else: + raise ValueError(f"Unexpected argument: {key}") + if self.random_state is not None: + random.seed(self.random_state) + if len(self.features_) != X.shape[1]: + raise ValueError( + "Number of features does not match the number of columns in X" + ) + return X, y def _build(self): - pass + """ + 1. For each feature Xi, compute mutual information, I(X;;C), where C is the class. + 2. Compute class conditional mutual information I(Xi;XjIC), f or each pair of features Xi and Xj, where i#j. + 3. Let the used variable list, S, be empty. + 4. Let the Bayesian network being constructed, BN, begin with a single class node, C. + 5. Repeat until S includes all domain features + 5.1. Select feature Xmax which is not in S and has the largest value I(Xmax;C). + 5.2. Add a node to BN representing Xmax. + 5.3. Add an arc from C to Xmax in BN. + 5.4. Add m =min(lSl,/c) arcs from m distinct features Xj in S with the highest value for I(Xmax;X,jC). + 5.5. Add Xmax to S. + Compute the conditional probabilility infered by the structure of BN by using counts from DB, and output BN. + """ + + def add_m_edges(dag, idx, S_nodes, conditional_weights): + n_edges = min(self.k, len(S_nodes)) + cond_w = conditional_weights.copy() + exit_cond = False + num = 0 + while not exit_cond: + max_minfo = np.argmax(cond_w[idx, :]) + try: + dag.add_edge( + self.features_[max_minfo], self.features_[idx] + ) + num += 1 + except ValueError: + # Loops are not allowed + pass + cond_w[idx, max_minfo] = -1 + exit_cond = num == n_edges or np.all(cond_w[idx, :] <= 0) + + # 1. get the mutual information between each feature and the class + mutual = mutual_info_classif(self.X_, self.y_, discrete_features=True) + # 2. symmetric matrix where each element represents I(X, Y| class_node) + conditional_weights = TreeSearch( + self.dataset_ + )._get_conditional_weights( + self.dataset_, self.class_name_, show_progress=self.show_progress + ) + # 3. + S_nodes = [] + # 4. + dag = BayesianNetwork() + dag.add_node(self.class_name_) # , state_names=self.classes_) + # 5. 5.1 + for idx in np.argsort(mutual): + # 5.2 + feature = self.features_[idx] + dag.add_node(feature) + # 5.3 + dag.add_edge(self.class_name_, feature) + # 5.4 + add_m_edges(dag, idx, S_nodes, conditional_weights) + # 5.5 + S_nodes.append(idx) + self.dag_ = dag def _train(self): - pass + self.model_ = BayesianNetwork( + self.dag_.edges(), show_progress=self.show_progress + ) + self.model_.fit( + self.dataset_, + estimator=BayesianEstimator, + prior_type="K2", + ) diff --git a/bayesclass/tests/baseline_images/test_KDB/line_dashes_KDB.png b/bayesclass/tests/baseline_images/test_KDB/line_dashes_KDB.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9ac71aac36bb94856c066915a5b199ac8f9700 GIT binary patch literal 51565 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%0A7n{m2tkqX)e5Ui*J#%`cRtvm-uC-jO{ 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 WWSGsCP%9|-W1weDP1o5I_`d)vNcY?T literal 0 HcmV?d00001 diff --git a/bayesclass/tests/baseline_images/test_bayesclass/line_dashes.png b/bayesclass/tests/baseline_images/test_bayesclass/line_dashes.png deleted file mode 100644 index 4322d0eddefeef7a0ef2addab50a6cda00a1a1b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46357 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 diff --git a/bayesclass/tests/test_KDB.py b/bayesclass/tests/test_KDB.py new file mode 100644 index 0000000..a42e9aa --- /dev/null +++ b/bayesclass/tests/test_KDB.py @@ -0,0 +1,92 @@ +import pytest +import numpy as np +from sklearn.datasets import load_iris +from sklearn.preprocessing import KBinsDiscretizer +from matplotlib.testing.decorators import image_comparison +from matplotlib.testing.conftest import mpl_test_settings + + +from bayesclass import KDB +from .._version import __version__ + + +@pytest.fixture +def data(): + X, y = load_iris(return_X_y=True) + enc = KBinsDiscretizer(encode="ordinal") + return enc.fit_transform(X), y + + +@pytest.fixture +def clf(): + return KDB(k=3) + + +def test_KDB_default_hyperparameters(data, clf): + # Test default values of hyperparameters + assert not clf.show_progress + assert clf.random_state is None + clf = KDB(show_progress=True, random_state=17, k=3) + assert clf.show_progress + assert clf.random_state == 17 + clf.fit(*data) + assert clf.class_name_ == "class" + assert clf.features_ == [ + "feature_0", + "feature_1", + "feature_2", + "feature_3", + ] + + +def test_KDB_version(clf): + """Check TAN version.""" + assert __version__ == clf.version() + + +def test_KDB_nodes_leaves(clf): + assert clf.nodes_leaves() == (0, 0) + + +def test_KDB_classifier(data, clf): + clf.fit(*data) + attribs = ["classes_", "X_", "y_", "features_", "class_name_"] + for attr in attribs: + assert hasattr(clf, attr) + X = data[0] + y = data[1] + y_pred = clf.predict(X) + assert y_pred.shape == (X.shape[0],) + assert sum(y == y_pred) == 147 + + +@image_comparison( + baseline_images=["line_dashes_KDB"], remove_text=True, extensions=["png"] +) +def test_KDB_plot(data, clf): + # mpl_test_settings will automatically clean these internal side effects + mpl_test_settings + dataset = load_iris(as_frame=True) + clf.fit(*data, features=dataset["feature_names"]) + clf.plot("KDB Iris") + + +def test_KDB_wrong_num_features(data, clf): + with pytest.raises( + ValueError, + match="Number of features does not match the number of columns in X", + ): + clf.fit(*data, features=["feature_1", "feature_2"]) + + +def test_KDB_wrong_hyperparam(data, clf): + with pytest.raises(ValueError, match="Unexpected argument: wrong_param"): + clf.fit(*data, wrong_param="wrong_param") + + +def test_KDB_error_size_predict(data, clf): + X, y = data + clf.fit(X, y) + with pytest.raises(ValueError): + X_diff_size = np.ones((10, X.shape[1] + 1)) + clf.predict(X_diff_size) diff --git a/bayesclass/tests/test_bayesclass.py b/bayesclass/tests/test_TAN.py similarity index 60% rename from bayesclass/tests/test_bayesclass.py rename to bayesclass/tests/test_TAN.py index 2e0b14d..b3b2e5f 100644 --- a/bayesclass/tests/test_bayesclass.py +++ b/bayesclass/tests/test_TAN.py @@ -17,14 +17,16 @@ def data(): return enc.fit_transform(X), y -def test_TAN_default_hyperparameters(data): - clf = TAN() +@pytest.fixture +def clf(): + return TAN() + + +def test_TAN_default_hyperparameters(data, clf): # Test default values of hyperparameters - assert clf.simple_init assert not clf.show_progress assert clf.random_state is None - clf = TAN(simple_init=True, show_progress=True, random_state=17) - assert clf.simple_init + clf = TAN(show_progress=True, random_state=17) assert clf.show_progress assert clf.random_state == 17 clf.fit(*data) @@ -38,34 +40,26 @@ def test_TAN_default_hyperparameters(data): ] -def test_TAN_version(): +def test_TAN_version(clf): """Check TAN version.""" - clf = TAN() assert __version__ == clf.version() +def test_TAN_nodes_leaves(clf): + assert clf.nodes_leaves() == (0, 0) + + def test_TAN_random_head(data): clf = TAN(random_state=17) clf.fit(*data, head="random") assert clf.head_ == 3 -def test_TAN_dag_initializer(data): - clf_not_simple = TAN(simple_init=False) - clf_simple = TAN(simple_init=True) - clf_not_simple.fit(*data, head=0) - clf_simple.fit(*data, head=0) - assert clf_simple.dag_.edges == clf_not_simple.dag_.edges - - -def test_TAN_classifier(data): - clf = TAN() - +def test_TAN_classifier(data, clf): clf.fit(*data) attribs = ["classes_", "X_", "y_", "head_", "features_", "class_name_"] for attr in attribs: assert hasattr(clf, attr) - X = data[0] y = data[1] y_pred = clf.predict(X) @@ -74,40 +68,17 @@ def test_TAN_classifier(data): @image_comparison( - baseline_images=["line_dashes"], remove_text=True, extensions=["png"] + baseline_images=["line_dashes_TAN"], remove_text=True, extensions=["png"] ) -def test_TAN_plot(data): +def test_TAN_plot(data, clf): # mpl_test_settings will automatically clean these internal side effects mpl_test_settings - clf = TAN() dataset = load_iris(as_frame=True) clf.fit(*data, features=dataset["feature_names"], head=0) clf.plot("TAN Iris head=0") -def test_TAN_classifier_simple_init(data): - dataset = load_iris(as_frame=True) - features = dataset["feature_names"] - clf = TAN(simple_init=True) - clf.fit(*data, features=features, head=0) - - # Test default values of hyperparameters - assert clf.simple_init - - clf.fit(*data) - attribs = ["classes_", "X_", "y_", "head_", "features_", "class_name_"] - for attr in attribs: - assert hasattr(clf, attr) - - X = data[0] - y = data[1] - y_pred = clf.predict(X) - assert y_pred.shape == (X.shape[0],) - assert sum(y == y_pred) == 147 - - -def test_TAN_wrong_num_features(data): - clf = TAN() +def test_KDB_wrong_num_features(data, clf): with pytest.raises( ValueError, match="Number of features does not match the number of columns in X", @@ -115,21 +86,18 @@ def test_TAN_wrong_num_features(data): clf.fit(*data, features=["feature_1", "feature_2"]) -def test_TAN_wrong_hyperparam(data): - clf = TAN() +def test_TAN_wrong_hyperparam(data, clf): with pytest.raises(ValueError, match="Unexpected argument: wrong_param"): clf.fit(*data, wrong_param="wrong_param") -def test_TAN_head_out_of_range(data): - clf = TAN() +def test_TAN_head_out_of_range(data, clf): with pytest.raises(ValueError, match="Head index out of range"): clf.fit(*data, head=4) -def test_TAN_error_size_predict(data): +def test_TAN_error_size_predict(data, clf): X, y = data - clf = TAN() clf.fit(X, y) with pytest.raises(ValueError): X_diff_size = np.ones((10, X.shape[1] + 1))