diff dashboard.py @ 0:1f20fe57fdee draft

planemo upload for repository https://github.com/goeckslab/Galaxy-Pycaret commit d79b0f722b7d09505a526d1a4332f87e548a3df1
author goeckslab
date Wed, 11 Dec 2024 04:59:43 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dashboard.py	Wed Dec 11 04:59:43 2024 +0000
@@ -0,0 +1,159 @@
+import logging
+from typing import Any, Dict, Optional
+
+from pycaret.utils.generic import get_label_encoder
+
+logging.basicConfig(level=logging.DEBUG)
+LOG = logging.getLogger(__name__)
+
+
+def generate_classifier_explainer_dashboard(
+        exp,
+        estimator,
+        display_format: str = "dash",
+        dashboard_kwargs: Optional[Dict[str, Any]] = None,
+        run_kwargs: Optional[Dict[str, Any]] = None,
+        **kwargs,):
+
+    """
+        This function is changed from pycaret.classification.oop.dashboard()
+
+        This function generates the interactive dashboard for a trained model.
+        The dashboard is implemented using
+        ExplainerDashboard (explainerdashboard.readthedocs.io)
+
+
+        estimator: scikit-learn compatible object
+            Trained model object
+
+
+        display_format: str, default = 'dash'
+            Render mode for the dashboard. The default is set to ``dash``
+            which will
+            render a dashboard in browser. There are four possible options:
+
+            - 'dash' - displays the dashboard in browser
+            - 'inline' - displays the dashboard in the jupyter notebook cell.
+            - 'jupyterlab' - displays the dashboard in jupyterlab pane.
+            - 'external' - displays the dashboard in a separate tab.
+                (use in Colab)
+
+
+        dashboard_kwargs: dict, default = {} (empty dict)
+            Dictionary of arguments passed to the ``ExplainerDashboard`` class.
+
+
+        run_kwargs: dict, default = {} (empty dict)
+            Dictionary of arguments passed to the ``run``
+            method of ``ExplainerDashboard``.
+
+
+        **kwargs:
+            Additional keyword arguments to pass to the ``ClassifierExplainer``
+            or ``RegressionExplainer`` class.
+
+
+        Returns:
+            ExplainerDashboard
+    """
+
+    dashboard_kwargs = dashboard_kwargs or {}
+    run_kwargs = run_kwargs or {}
+
+    from explainerdashboard import ClassifierExplainer, ExplainerDashboard
+
+    le = get_label_encoder(exp.pipeline)
+    if le:
+        labels_ = list(le.classes_)
+    else:
+        labels_ = None
+
+    # Replaceing chars which dash doesnt accept for column name `.` , `{`, `}`
+
+    X_test_df = exp.X_test_transformed.copy()
+    LOG.info(X_test_df)
+    X_test_df.columns = [
+        col.replace(".", "__").replace("{", "__").replace("}", "__")
+        for col in X_test_df.columns
+    ]
+
+    explainer = ClassifierExplainer(
+        estimator, X_test_df, exp.y_test_transformed, labels=labels_, **kwargs
+    )
+    return ExplainerDashboard(
+        explainer, mode=display_format,
+        contributions=False, whatif=False,
+        **dashboard_kwargs
+    )
+
+
+def generate_regression_explainer_dashboard(
+        exp,
+        estimator,
+        display_format: str = "dash",
+        dashboard_kwargs: Optional[Dict[str, Any]] = None,
+        run_kwargs: Optional[Dict[str, Any]] = None,
+        **kwargs,):
+
+    """
+    This function is changed from pycaret.regression.oop.dashboard()
+
+        This function generates the interactive dashboard for a trained model.
+        The dashboard is implemented using ExplainerDashboard
+        (explainerdashboard.readthedocs.io)
+
+
+        estimator: scikit-learn compatible object
+            Trained model object
+
+
+        display_format: str, default = 'dash'
+            Render mode for the dashboard. The default is set to ``dash``
+            which will
+            render a dashboard in browser. There are four possible options:
+
+            - 'dash' - displays the dashboard in browser
+            - 'inline' - displays the dashboard in the jupyter notebook cell.
+            - 'jupyterlab' - displays the dashboard in jupyterlab pane.
+            - 'external' - displays the dashboard in a separate tab.
+            (use in Colab)
+
+
+        dashboard_kwargs: dict, default = {} (empty dict)
+            Dictionary of arguments passed to the ``ExplainerDashboard`` class.
+
+
+        run_kwargs: dict, default = {} (empty dict)
+            Dictionary of arguments passed to the ``run`` method
+            of ``ExplainerDashboard``.
+
+
+        **kwargs:
+            Additional keyword arguments to pass to the
+            ``ClassifierExplainer`` or
+            ``RegressionExplainer`` class.
+
+
+        Returns:
+            ExplainerDashboard
+    """
+
+    dashboard_kwargs = dashboard_kwargs or {}
+    run_kwargs = run_kwargs or {}
+
+    from explainerdashboard import ExplainerDashboard, RegressionExplainer
+
+    # Replaceing chars which dash doesnt accept for column name `.` , `{`, `}`
+    X_test_df = exp.X_test_transformed.copy()
+    X_test_df.columns = [
+        col.replace(".", "__").replace("{", "__").replace("}", "__")
+        for col in X_test_df.columns
+    ]
+    explainer = RegressionExplainer(
+        estimator, X_test_df, exp.y_test_transformed, **kwargs
+    )
+    return ExplainerDashboard(
+        explainer, mode=display_format, contributions=False,
+        whatif=False, shap_interaction=False, decision_trees=False,
+        **dashboard_kwargs
+    )