diff --git a/doc/rtd/content/03_machine_learning/mlpro_oa/sub/streams/01_overview.rst b/doc/rtd/content/03_machine_learning/mlpro_oa/sub/streams/01_overview.rst index bc656ef14..ad2c5ee10 100644 --- a/doc/rtd/content/03_machine_learning/mlpro_oa/sub/streams/01_overview.rst +++ b/doc/rtd/content/03_machine_learning/mlpro_oa/sub/streams/01_overview.rst @@ -16,7 +16,6 @@ Combines the functionalities of MLPro's stream task and ML model... **Cross reference** -- BF: Stream Processing -- Howto section -- API -- MLPro-Int-River +- :ref:`Howtos MPro-OA-Streams ` +- :ref:`API reference: MLPro-OA-Streams ` +- :ref:`Basics of data stream processing in MLPro ` \ No newline at end of file diff --git a/doc/rtd/content/03_machine_learning/mlpro_oa/sub/streams/20_cluster_analysis.rst b/doc/rtd/content/03_machine_learning/mlpro_oa/sub/streams/20_cluster_analysis.rst index 4aa110293..1278a5be9 100644 --- a/doc/rtd/content/03_machine_learning/mlpro_oa/sub/streams/20_cluster_analysis.rst +++ b/doc/rtd/content/03_machine_learning/mlpro_oa/sub/streams/20_cluster_analysis.rst @@ -16,7 +16,6 @@ Further descriptions coming soon... **Cross reference** -- Selected open access papers -- Howtos -- API -- MLPro-OA-River \ No newline at end of file +.. - Selected open access papers +.. - Howtos +- :ref:`API reference: MLPro-OA-Streams - Cluster analysis ` diff --git a/doc/rtd/content/03_machine_learning/mlpro_oa/sub/streams/30_anomaly_detection.rst b/doc/rtd/content/03_machine_learning/mlpro_oa/sub/streams/30_anomaly_detection.rst index 4864d0ebf..34fa3ec30 100644 --- a/doc/rtd/content/03_machine_learning/mlpro_oa/sub/streams/30_anomaly_detection.rst +++ b/doc/rtd/content/03_machine_learning/mlpro_oa/sub/streams/30_anomaly_detection.rst @@ -31,6 +31,7 @@ Anomaly detection techniques can be broadly classified into two categories based **Cross reference** -- Selected open access papers -- Howtos -- API +.. - Selected open access papers +.. - Howtos +- :ref:`API reference: MLPro-OA-Streams - Anomaly detection ` + diff --git a/doc/rtd/content/03_machine_learning/mlpro_oa/sub/streams/40_drift_detection.rst b/doc/rtd/content/03_machine_learning/mlpro_oa/sub/streams/40_drift_detection.rst index 002563bdd..4baf0761d 100644 --- a/doc/rtd/content/03_machine_learning/mlpro_oa/sub/streams/40_drift_detection.rst +++ b/doc/rtd/content/03_machine_learning/mlpro_oa/sub/streams/40_drift_detection.rst @@ -16,6 +16,6 @@ Further descriptions coming soon... **Cross reference** -- Selected open access papers -- Howtos -- API +.. - Selected open access papers +.. - Howtos +- :ref:`API reference: MLPro-OA-Streams - Drift detection ` diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/30_anomaly_detection/20_cluster_based.rst b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/30_anomaly_detection/20_cluster_based.rst.off similarity index 100% rename from doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/30_anomaly_detection/20_cluster_based.rst rename to doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/30_anomaly_detection/20_cluster_based.rst.off diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/cluster_based/images/.$MLPro-OA-CB-Drift-Detectors_class_diagram.drawio.bkp b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/30_anomaly_detection/images/.$MLPro-OA-Anomaly-Detectors_class_diagram.drawio.bkp similarity index 55% rename from doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/cluster_based/images/.$MLPro-OA-CB-Drift-Detectors_class_diagram.drawio.bkp rename to doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/30_anomaly_detection/images/.$MLPro-OA-Anomaly-Detectors_class_diagram.drawio.bkp index 3e94fcfa5..b5e6b091a 100644 --- a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/cluster_based/images/.$MLPro-OA-CB-Drift-Detectors_class_diagram.drawio.bkp +++ b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/30_anomaly_detection/images/.$MLPro-OA-Anomaly-Detectors_class_diagram.drawio.bkp @@ -1,6 +1,6 @@ - + - + @@ -54,94 +54,83 @@ - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - - - - + + - - + + - - + + - - - - - - - - diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/30_anomaly_detection/images/MLPro-OA-Anomaly-Detectors_class_diagram.drawio b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/30_anomaly_detection/images/MLPro-OA-Anomaly-Detectors_class_diagram.drawio index b5e6b091a..b7999af44 100644 --- a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/30_anomaly_detection/images/MLPro-OA-Anomaly-Detectors_class_diagram.drawio +++ b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/30_anomaly_detection/images/MLPro-OA-Anomaly-Detectors_class_diagram.drawio @@ -5,7 +5,7 @@ - + @@ -55,7 +55,7 @@ - + @@ -71,41 +71,44 @@ + + + - + - + - - + + - + - + - + - - + + - + - + - + - + - + diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/30_anomaly_detection/images/MLPro-OA-Anomaly-Detectors_class_diagram.drawio.png b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/30_anomaly_detection/images/MLPro-OA-Anomaly-Detectors_class_diagram.drawio.png index 3a64bc22e..8e1b79e1b 100644 Binary files a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/30_anomaly_detection/images/MLPro-OA-Anomaly-Detectors_class_diagram.drawio.png and b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/30_anomaly_detection/images/MLPro-OA-Anomaly-Detectors_class_diagram.drawio.png differ diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection.rst b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection.rst index ace896105..a3ada2997 100644 --- a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection.rst +++ b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection.rst @@ -2,11 +2,11 @@ Drift detection =============== -.. image:: images/MLPro-OA-Drift-Detectors_class_diagram.drawio.png +.. image:: 40_drift_detection/images/MLPro-OA-Drift-Detectors_class_diagram.drawio.png :scale: 50% -.. automodule:: mlpro.oa.streams.tasks.driftydetectors.basics +.. automodule:: mlpro.oa.streams.tasks.driftdetectors.basics :members: :undoc-members: :private-members: diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/10_common_drifts.rst b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/10_common_drifts.rst deleted file mode 100644 index dcb3085f4..000000000 --- a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/10_common_drifts.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. _target_api_oa_stream_tasks_ad_common_drifts: -Common drifts -============= - - -.. toctree:: - :maxdepth: 2 - :glob: - - common_drifts/* \ No newline at end of file diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/10_instance_based.rst b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/10_instance_based.rst new file mode 100644 index 000000000..761110b3c --- /dev/null +++ b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/10_instance_based.rst @@ -0,0 +1,28 @@ +.. _target_api_oa_stream_tasks_dd_ib: +Instance-based drifts and detectors +=================================== + + +.. image:: 10_instance_based/images/MLPro-OA-IB-Drift-Detectors_class_diagram.drawio.png + :scale: 50% + + +.. automodule:: mlpro.oa.streams.tasks.driftdetectors.instancebased.basics + :members: + :undoc-members: + :private-members: + :show-inheritance: + + +.. automodule:: mlpro.oa.streams.tasks.driftdetectors.drifts.instancebased.basics + :members: + :undoc-members: + :private-members: + :show-inheritance: + + +.. toctree:: + :maxdepth: 2 + :glob: + + 10_instance_based/* \ No newline at end of file diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/10_instance_based/10_common_drifts.rst b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/10_instance_based/10_common_drifts.rst new file mode 100644 index 000000000..6017d6fd0 --- /dev/null +++ b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/10_instance_based/10_common_drifts.rst @@ -0,0 +1,10 @@ +.. _target_api_oa_stream_tasks_ib_dd_common_drifts: +Common drifts +============= + +.. automodule:: mlpro.oa.streams.tasks.driftdetectors.drifts.instancebased.movement + :members: + :undoc-members: + :private-members: + :show-inheritance: + diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/10_instance_based/images/MLPro-OA-IB-Drift-Detectors_class_diagram.drawio b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/10_instance_based/images/MLPro-OA-IB-Drift-Detectors_class_diagram.drawio new file mode 100644 index 000000000..8f9ded7f3 --- /dev/null +++ b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/10_instance_based/images/MLPro-OA-IB-Drift-Detectors_class_diagram.drawio @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/10_instance_based/images/MLPro-OA-IB-Drift-Detectors_class_diagram.drawio.png b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/10_instance_based/images/MLPro-OA-IB-Drift-Detectors_class_diagram.drawio.png new file mode 100644 index 000000000..204c95241 Binary files /dev/null and b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/10_instance_based/images/MLPro-OA-IB-Drift-Detectors_class_diagram.drawio.png differ diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_cluster_based.rst.off b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_cluster_based.rst.off new file mode 100644 index 000000000..c9269c098 --- /dev/null +++ b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_cluster_based.rst.off @@ -0,0 +1,28 @@ +.. _target_api_oa_stream_tasks_dd_cb: +Cluster-based drifts and detectors +================================== + + +.. image:: 20_cluster_based/images/MLPro-OA-CB-Drift-Detectors_class_diagram.drawio.png + :scale: 50% + + +.. automodule:: mlpro.oa.streams.tasks.driftdetectors.clusterbased.basics + :members: + :undoc-members: + :private-members: + :show-inheritance: + + +.. automodule:: mlpro.oa.streams.tasks.driftdetectors.drifts.clusterbased.basics + :members: + :undoc-members: + :private-members: + :show-inheritance: + + +.. toctree:: + :maxdepth: 2 + :glob: + + 20_cluster_based/* \ No newline at end of file diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/cluster_based/algorithms/.gitkeep b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_cluster_based/algorithms/.gitkeep similarity index 100% rename from doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/cluster_based/algorithms/.gitkeep rename to doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_cluster_based/algorithms/.gitkeep diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/cluster_based/anomalies/.gitkeep b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_cluster_based/anomalies/.gitkeep similarity index 100% rename from doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/cluster_based/anomalies/.gitkeep rename to doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_cluster_based/anomalies/.gitkeep diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/instance_based/images/.$MLPro-OA-CB-Drift-Detectors_class_diagram.drawio.bkp b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_cluster_based/images/.$MLPro-OA-CB-Drift-Detectors_class_diagram.drawio.bkp similarity index 50% rename from doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/instance_based/images/.$MLPro-OA-CB-Drift-Detectors_class_diagram.drawio.bkp rename to doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_cluster_based/images/.$MLPro-OA-CB-Drift-Detectors_class_diagram.drawio.bkp index 3e94fcfa5..dced91ced 100644 --- a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/instance_based/images/.$MLPro-OA-CB-Drift-Detectors_class_diagram.drawio.bkp +++ b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_cluster_based/images/.$MLPro-OA-CB-Drift-Detectors_class_diagram.drawio.bkp @@ -1,11 +1,11 @@ - + - + - + @@ -54,94 +54,96 @@ - - + + - + - + - - - - - - - - + + - + - - + + - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + - - + + - - - - - + + + + + + + - - + + + + - - + + - - + + + + + + + - - + + + + - - + + - - - - - - - - diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_cluster_based/images/MLPro-OA-CB-Drift-Detectors_class_diagram.drawio b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_cluster_based/images/MLPro-OA-CB-Drift-Detectors_class_diagram.drawio new file mode 100644 index 000000000..dced91ced --- /dev/null +++ b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_cluster_based/images/MLPro-OA-CB-Drift-Detectors_class_diagram.drawio @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_cluster_based/images/MLPro-OA-CB-Drift-Detectors_class_diagram.drawio.png b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_cluster_based/images/MLPro-OA-CB-Drift-Detectors_class_diagram.drawio.png new file mode 100644 index 000000000..b9dc687e3 Binary files /dev/null and b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_cluster_based/images/MLPro-OA-CB-Drift-Detectors_class_diagram.drawio.png differ diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_common_algorithms.rst b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_common_algorithms.rst deleted file mode 100644 index ae5e1efb6..000000000 --- a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/20_common_algorithms.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. _target_api_oa_stream_tasks_ad_common_algorithms: -Common algorithms -================= - - -.. toctree:: - :maxdepth: 2 - :glob: - - common_algorithms/* \ No newline at end of file diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/40_drift_detectors.rst b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/40_drift_detectors.rst deleted file mode 100644 index 227bbaec4..000000000 --- a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/40_drift_detectors.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _target_api_oa_stream_tasks_dd: -Drift detectors -=============== - -.. image:: drift_detectors/images/MLPro-OA-Drift-Detectors_class_diagram.drawio.png - :scale: 50% - - -Template for drift detectors ----------------------------- - -.. automodule:: mlpro.oa.streams.tasks.driftdetectors.basics - :members: - :undoc-members: - :private-members: - :show-inheritance: - - -Template for drift events -------------------------- - -.. automodule:: mlpro.oa.streams.tasks.driftdetectors.drift.basics - :members: - :undoc-members: - :private-members: - :show-inheritance: - - -Concrete drift events and algorithms ------------------------------------- - -.. toctree:: - :maxdepth: 2 - :glob: - - drift_detectors/* diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/cluster_based/30_cluster_based.rst b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/cluster_based/30_cluster_based.rst deleted file mode 100644 index 30d1b7a43..000000000 --- a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/cluster_based/30_cluster_based.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. _target_api_oa_stream_tasks_ad_cb: -Cluster-based drifts and detectors -===================================== - - -.. image:: cluster_based/images/MLPro-OA-CB-Drift-Detectors_class_diagram.drawio.png - :scale: 50% - - -.. toctree:: - :maxdepth: 2 - :glob: - - cluster_based/* \ No newline at end of file diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/cluster_based/images/MLPro-OA-CB-Drift-Detectors_class_diagram.drawio b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/cluster_based/images/MLPro-OA-CB-Drift-Detectors_class_diagram.drawio deleted file mode 100644 index 9249c1e80..000000000 --- a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/cluster_based/images/MLPro-OA-CB-Drift-Detectors_class_diagram.drawio +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/images/.$MLPro-OA-Drift-Detectors_class_diagram.drawio.bkp b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/images/.$MLPro-OA-Drift-Detectors_class_diagram.drawio.bkp index 3e94fcfa5..2f0a97ac1 100644 --- a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/images/.$MLPro-OA-Drift-Detectors_class_diagram.drawio.bkp +++ b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/images/.$MLPro-OA-Drift-Detectors_class_diagram.drawio.bkp @@ -1,11 +1,11 @@ - + - + - + @@ -54,8 +54,8 @@ - - + + @@ -68,80 +68,72 @@ - - + + - - + + - - + + - - + + - - + + - + - + - + - - + + - + - + - + + + + - - + + - + - + - + - - - - + - + - + - + - - - - - - - - diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/images/MLPro-OA-Drift-Detectors_class_diagram.drawio b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/images/MLPro-OA-Drift-Detectors_class_diagram.drawio index cec6402bb..2f0a97ac1 100644 --- a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/images/MLPro-OA-Drift-Detectors_class_diagram.drawio +++ b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/images/MLPro-OA-Drift-Detectors_class_diagram.drawio @@ -1,11 +1,11 @@ - + - + - + @@ -54,8 +54,8 @@ - - + + @@ -68,70 +68,70 @@ - - - - + - - + + + + + - - + + - - + + - + - + - + - - + + - + - + - + + + + - - + + - - - - + - + - + - + - + - + - + diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/images/MLPro-OA-Drift-Detectors_class_diagram.drawio.png b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/images/MLPro-OA-Drift-Detectors_class_diagram.drawio.png index ced368a20..fc0a38318 100644 Binary files a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/images/MLPro-OA-Drift-Detectors_class_diagram.drawio.png and b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/images/MLPro-OA-Drift-Detectors_class_diagram.drawio.png differ diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/instance_based/algorithms/.gitkeep b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/instance_based/algorithms/.gitkeep deleted file mode 100644 index 8d1c8b69c..000000000 --- a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/instance_based/algorithms/.gitkeep +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/instance_based/anomalies/.gitkeep b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/instance_based/anomalies/.gitkeep deleted file mode 100644 index 8d1c8b69c..000000000 --- a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/instance_based/anomalies/.gitkeep +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/instance_based/anomalies/03_drift.rst b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/instance_based/anomalies/03_drift.rst deleted file mode 100644 index 9ad3c0558..000000000 --- a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/instance_based/anomalies/03_drift.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. _target_api_oa_stream_tasks_dd_common_anomalies_drift: -Drift -===== - -.. automodule:: mlpro.oa.streams.tasks.driftdetectors.anomalies.drift - :members: - :undoc-members: - :private-members: - :show-inheritance: \ No newline at end of file diff --git a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/instance_based/images/MLPro-OA-CB-Drift-Detectors_class_diagram.drawio b/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/instance_based/images/MLPro-OA-CB-Drift-Detectors_class_diagram.drawio deleted file mode 100644 index 9249c1e80..000000000 --- a/doc/rtd/content/99_appendices/appendix2/sub/mlpro_oa/streams/40_drift_detection/instance_based/images/MLPro-OA-CB-Drift-Detectors_class_diagram.drawio +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/rtd/content/99_appendices/appendix3/sub/01_versions.rst b/doc/rtd/content/99_appendices/appendix3/sub/01_versions.rst index f4dfdb1d8..7c221116e 100644 --- a/doc/rtd/content/99_appendices/appendix3/sub/01_versions.rst +++ b/doc/rtd/content/99_appendices/appendix3/sub/01_versions.rst @@ -1,7 +1,7 @@ -Release Notes +Release notes ============= -Release Notes on GitHub: +Release notes on GitHub: - `Latest release `_ - `Release history `_ diff --git a/doc/rtd/content/99_appendices/appendix3/sub/02_publications.rst b/doc/rtd/content/99_appendices/appendix3/sub/02_publications.rst index f6c8d4f14..fc8e3d6e0 100644 --- a/doc/rtd/content/99_appendices/appendix3/sub/02_publications.rst +++ b/doc/rtd/content/99_appendices/appendix3/sub/02_publications.rst @@ -11,7 +11,7 @@ Papers -Code Ocean Capsules +Code Ocean capsules ------------------- - Detlef Arend, Steve Yuwono, Mochammad Rizky Diprasetya, Andreas Schwung: `"MLPro - Reinforcement Learning - Demo of Advanced Training with Stagnation Detection" `_, Code Ocean, 2022, doi: 10.24433/CO.9151382.v1 @@ -19,7 +19,7 @@ Code Ocean Capsules -GitHub Repository +GitHub repository ----------------- - - Detlef Arend, Steve Yuwono, Mochammad Rizky Diprasetya, Andreas Schwung: `"MLPro - A Synoptic Framework for Standardized Machine Learning Tasks in Python" `_, Zenodo, 2021, doi: 10.5281/zenodo.6653485 + - Detlef Arend, Steve Yuwono, Mochammad Rizky Diprasetya, Laxmikant Shrikant Baheti, Andreas Schwung: `"Github repository fhswf/MLPro" `_, Zenodo, 2025, doi: 10.5281/zenodo.6653484 diff --git a/doc/rtd/content/99_appendices/appendix3/sub/04_disclaimer.rst b/doc/rtd/content/99_appendices/appendix3/sub/04_disclaimer.rst index b9eac4625..8a089ba69 100644 --- a/doc/rtd/content/99_appendices/appendix3/sub/04_disclaimer.rst +++ b/doc/rtd/content/99_appendices/appendix3/sub/04_disclaimer.rst @@ -1,9 +1,9 @@ Disclaimer -================ +========== If you require any more information or have any questions about our project's disclaimer, please feel free to contact us by email at mlpro@listen.fh-swf.de. -Disclaimers for MLPro Usage +Disclaimers for MLPro usage --------------------------- All the information on this website is published in good faith and for general information purpose only. We do not make any warranties about the completeness, reliability and accuracy of this information. diff --git a/src/mlpro/oa/streams/tasks/anomalydetectors/anomalies/instancebased/group.py b/src/mlpro/oa/streams/tasks/anomalydetectors/anomalies/instancebased/group.py index 975f35592..31564f895 100644 --- a/src/mlpro/oa/streams/tasks/anomalydetectors/anomalies/instancebased/group.py +++ b/src/mlpro/oa/streams/tasks/anomalydetectors/anomalies/instancebased/group.py @@ -14,12 +14,13 @@ ## -- 2024-05-22 1.3.0 SK Refactoring ## -- 2024-11-27 1.3.1 DA Bugfix in method GroupAnomaly.__init__() ## -- 2024-12-11 1.3.2 DA Pseudo classes if matplotlib is not installed +## -- 2025-03-05 1.4.0 DA Code optimization ## ------------------------------------------------------------------------------------------------- """ -Ver. 1.3.2 (2024-12-11) +Ver. 1.4.0 (2025-03-05) -This module provides a template class for group anomaly to be used in anomaly detection algorithms. +This module provides a class for group anomalies to be used in anomaly detection algorithms. """ from datetime import datetime @@ -133,27 +134,23 @@ def _update_plot_nd(self, p_settings: PlotSettings, **p_kwargs): color (str): Color of the shaded region. alpha (float): Transparency of the shaded region (default is 0.5). """ + if not self.plot_update: return - x1 = self.instances[0] - x2 = self.instances[-1] + x1 = self.instances[0].tstamp + x2 = self.instances[-1].tstamp - x1 = x1.id - x2 = x2.id - a=[] - b=[] + y_values = [] for instance in self.instances: - a.append(instance.get_feature_data().get_values()) + y_values.extend(instance.get_feature_data().get_values()) - for x in a: - b.extend(x) - - y1 = min(b) - y2 = max(b) + + y1 = min(y_values) + y2 = max(y_values) if self._rect is None: - label = 'G' + label = 'GA(' + str(self.id) + ')' self._rect = patches.Rectangle((x1, y1), x2 - x1, y2 - y1, linewidth=1, edgecolor='black', facecolor='yellow', alpha=0.5) self._plot_rectangle = p_settings.axes.add_patch(self._rect) self._plot_rectangle_t = p_settings.axes.text((x1+x2)/2, 0, label, color='b' ) diff --git a/src/mlpro/oa/streams/tasks/anomalydetectors/anomalies/instancebased/point.py b/src/mlpro/oa/streams/tasks/anomalydetectors/anomalies/instancebased/point.py index 4f48de558..7f4d3549f 100644 --- a/src/mlpro/oa/streams/tasks/anomalydetectors/anomalies/instancebased/point.py +++ b/src/mlpro/oa/streams/tasks/anomalydetectors/anomalies/instancebased/point.py @@ -90,7 +90,7 @@ def _update_plot_2d(self, p_settings: PlotSettings, p_axlimits_changed: bool, p_ line_y2_ypos = [ feature_values[1], feature_values[1] ] if self._plot_line_x1 is None: - label = 'PO(' + str(self.get_id()) + ')' + label = 'PA(' + str(self.id) + ')' self._plot_line_x1 = p_settings.axes.plot(line_x1_xpos, line_x1_ypos, color='r', linestyle='dashed', lw=1)[0] self._plot_line_x2 = p_settings.axes.plot(line_x2_xpos, line_x2_ypos, color='r', linestyle='dashed', lw=1)[0] self._plot_line_y1 = p_settings.axes.plot(line_y1_xpos, line_y1_ypos, color='r', linestyle='dashed', lw=1)[0] @@ -146,7 +146,7 @@ def _update_plot_3d(self, p_settings: PlotSettings, p_axlimits_changed: bool, p_ line_z2_zpos = [ feature_values[2] - offset_z, feature_values[2] - len_z ] if self._plot_line_x1 is None: - label = 'PO(' + str(self.get_id()) + ')' + label = 'PA(' + str(self.id) + ')' self._plot_line_x1 = p_settings.axes.plot( line_x1_xpos, line_x1_ypos, line_x1_zpos, color='r', linestyle='dashed', lw=1 )[0] self._plot_line_x2 = p_settings.axes.plot( line_x2_xpos, line_x2_ypos, line_x2_zpos, color='r', linestyle='dashed', lw=1 )[0] self._plot_line_y1 = p_settings.axes.plot( line_y1_xpos, line_y1_ypos, line_y1_zpos, color='r', linestyle='dashed', lw=1 )[0] @@ -173,11 +173,11 @@ def _update_plot_nd(self, p_settings: PlotSettings, p_axlimits_changed: bool, p_ inst = self.instances[-1] - inst_id = inst.get_id() + inst_id = inst.id xpos = [inst_id, inst_id] if self._plot_line is None: - label = 'PO(' + str(self.get_id()) + ')' + label = 'PA(' + str(self.id) + ')' self._plot_line = p_settings.axes.plot(xpos, p_ylim, color='r', linestyle='dashed', lw=1)[0] self._plot_label = p_settings.axes.text(inst_id, p_ylim[1], label, color='r' ) diff --git a/src/mlpro/oa/streams/tasks/anomalydetectors/basics.py b/src/mlpro/oa/streams/tasks/anomalydetectors/basics.py index a132a6f87..dd3253f42 100644 --- a/src/mlpro/oa/streams/tasks/anomalydetectors/basics.py +++ b/src/mlpro/oa/streams/tasks/anomalydetectors/basics.py @@ -16,10 +16,11 @@ ## -- 2024-08-12 1.4.1 DA Correction in AnomalyDetector.update_plot() ## -- 2024-12-11 1.4.2 DA Pseudo classes if matplotlib is not installed ## -- 2025-02-14 1.5.0 DA Review and refactoring +## -- 2025-03-03 1.5.1 DA Corrections ## ------------------------------------------------------------------------------------------------- """ -Ver. 1.5.0 (2025-02-12) +Ver. 1.5.1 (2025-03-03) This module provides templates for anomaly detection to be used in the context of online adaptivity. """ @@ -60,6 +61,8 @@ class AnomalyDetector (OAStreamTask): Boolean switch for visualisation. Default = False. p_logging Log level (see constants of class Log). Default: Log.C_LOG_ALL + p_anomaly_buffer_size : int = 100 + Size of the internal anomaly buffer self.anomalies. Default = 100. p_kwargs : dict Further optional named parameters. """ @@ -76,7 +79,7 @@ def __init__( self, p_duplicate_data : bool = False, p_visualize : bool = False, p_logging=Log.C_LOG_ALL, - p_anomaly_buffer_size : int = 10, + p_anomaly_buffer_size : int = 100, **p_kwargs ): super().__init__( p_name = p_name, diff --git a/src/mlpro/oa/streams/tasks/anomalydetectors/instancebased/detectors_point_group.py b/src/mlpro/oa/streams/tasks/anomalydetectors/instancebased/detectors_point_group.py index 1b7a82f3c..0ca78eff2 100644 --- a/src/mlpro/oa/streams/tasks/anomalydetectors/instancebased/detectors_point_group.py +++ b/src/mlpro/oa/streams/tasks/anomalydetectors/instancebased/detectors_point_group.py @@ -14,11 +14,11 @@ ## -- 2024-08-12 1.3.0 DA Review and adjustments on documentation ## -- 2025-02-14 1.4.0 DA Refactoring ## -- 2025-02-17 1.5.0 DA Review and generalization -## -- 2025-02-28 1.6.0 DA Refactoring and simplification +## -- 2025-03-05 1.6.0 DA Refactoring and simplification ## ------------------------------------------------------------------------------------------------- """ -Ver. 1.6.0 (2025-02-28) +Ver. 1.6.0 (2025-03-05) This module provides an extended template for instance-based anomaly detectors that supports an optional group anomaly detection based on point anomalies. @@ -59,6 +59,8 @@ class AnomalyDetectorIBPG (AnomalyDetectorIB): Boolean switch for visualisation. Default = False. p_logging Log level (see constants of class Log). Default: Log.C_LOG_ALL + p_anomaly_buffer_size : int = 100 + Size of the internal anomaly buffer self.anomalies. Default = 100. p_kwargs : dict Further optional named parameters. """ @@ -74,6 +76,7 @@ def __init__( self, p_duplicate_data : bool = False, p_visualize : bool = False, p_logging = Log.C_LOG_ALL, + p_anomaly_buffer_size : int = 100, **p_kwargs ): super().__init__( p_name = p_name, @@ -82,6 +85,7 @@ def __init__( self, p_duplicate_data = p_duplicate_data, p_visualize = p_visualize, p_logging = p_logging, + p_anomaly_buffer_size = p_anomaly_buffer_size, **p_kwargs ) self._group_anomalies : list[Anomaly] = [] @@ -90,7 +94,7 @@ def __init__( self, ## ------------------------------------------------------------------------------------------------- - def _buffer_anomaly(self, p_anomaly): + def _buffer_anomaly(self, p_anomaly : Anomaly): """ Method to be used to add a new anomaly. Please use as part of your algorithm. @@ -124,11 +128,13 @@ def _buffer_anomaly(self, p_anomaly): self._ano_id -= 2 groupanomaly = GroupAnomaly( p_instances = self._group_anomalies_instances, - p_visualize=self._visualize, + p_visualize=self.get_visualization(), p_raising_object = self, p_tstampt = inst_2.tstamp ) + + self._raise_anomaly_event( p_anomaly = groupanomaly ) - super()._buffer_anomaly( p_anomaly = groupanomaly ) + # super()._buffer_anomaly( p_anomaly = groupanomaly ) self._group_anomalies = [] self._group_anomalies.append(groupanomaly) diff --git a/src/mlpro/oa/streams/tasks/driftdetectors/basics.py b/src/mlpro/oa/streams/tasks/driftdetectors/basics.py index 3c36d0b1e..618b6528d 100644 --- a/src/mlpro/oa/streams/tasks/driftdetectors/basics.py +++ b/src/mlpro/oa/streams/tasks/driftdetectors/basics.py @@ -6,10 +6,11 @@ ## -- History : ## -- yyyy-mm-dd Ver. Auth. Description ## -- 2025-02-12 0.1.0 DA Creation +## -- 2025-03-03 0.2.0 DA Alignment with anomaly detection ## ------------------------------------------------------------------------------------------------- """ -Ver. 0.1.0 (2025-02-12) +Ver. 0.2.0 (2025-03-03) This module provides templates for drift detection to be used in the context of online adaptivity. """ @@ -49,6 +50,8 @@ class DriftDetector (OAStreamTask): Boolean switch for visualisation. Default = False. p_logging Log level (see constants of class Log). Default: Log.C_LOG_ALL + p_drift_buffer_size : int = 100 + Size of the internal drift buffer self.drifts. Default = 100. p_kwargs : dict Further optional named parameters. """ @@ -65,6 +68,7 @@ def __init__( self, p_duplicate_data : bool = False, p_visualize : bool = False, p_logging=Log.C_LOG_ALL, + p_drift_buffer_size : int = 100, **p_kwargs ): super().__init__( p_name = p_name, @@ -75,24 +79,11 @@ def __init__( self, p_logging = p_logging, **p_kwargs ) - self._drift_id = 0 - self._drifts = {} + self._drift_id = 0 + self.drifts = {} + self._drift_buffer_size : int = p_drift_buffer_size -## ------------------------------------------------------------------------------------------------- - def get_drifts(self): - """ - Method to return the current list of drifts. - - Returns - ------- - drifts : dict[Drift] - Current dictionary of drifts. - """ - - return self._drifts - - ## ------------------------------------------------------------------------------------------------- def _get_next_drift_id(self): """ @@ -118,8 +109,19 @@ def _buffer_drift(self, p_drift:Drift): Drift object to be added. """ + # 1 Buffering turned on? + if self._drift_buffer_size <= 0: return + + # 2 Buffer full? + if len( self.drifts ) >= self._drift_buffer_size: + # 2.1 Remove oldest entry + oldest_key = next(iter(self.drifts)) + oldest_drift = self.drifts.pop(oldest_key) + oldest_drift.remove_plot() + + # 3 Buffer new anomaly p_drift.id = self._get_next_drift_id() - self._drifts[p_drift.id] = p_drift + self.drifts[p_drift.id] = p_drift ## ------------------------------------------------------------------------------------------------- @@ -134,11 +136,11 @@ def _remove_drift(self, p_drift:Drift): """ p_drift.remove_plot(p_refresh=True) - del self._drifts[p_drift.id] + del self.drifts[p_drift.id] ## ------------------------------------------------------------------------------------------------- - def _raise_drift_event( self, p_drift : Drift ): + def _raise_drift_event( self, p_drift : Drift, p_buffer: bool = True ): """ Specialized method to raise drift events. @@ -148,12 +150,14 @@ def _raise_drift_event( self, p_drift : Drift ): Drift event object to be raised. """ - self._buffer_drift( p_drift = p_drift ) + if p_buffer: self._buffer_drift( p_drift = p_drift ) if self.get_visualization(): - p_drift.init_plot( p_figure=self._figure, p_plot_settings=self.get_plot_settings() ) + p_drift.init_plot( p_figure=self._figure, + p_plot_settings=self.get_plot_settings() ) - return super()._raise_event( p_event_id = p_drift.event_id, p_event_object = p_drift ) + return super()._raise_event( p_event_id = p_drift.event_id, + p_event_object = p_drift ) ## ------------------------------------------------------------------------------------------------- @@ -167,7 +171,7 @@ def init_plot(self, p_figure: Figure = None, p_plot_settings: PlotSettings = Non super().init_plot( p_figure=p_figure, p_plot_settings=p_plot_settings) - for drift in self._drifts.values(): + for drift in self.drifts.values(): drift.init_plot(p_figure=p_figure, p_plot_settings = p_plot_settings) @@ -198,7 +202,7 @@ def update_plot(self, p_inst : InstDict = None, **p_kwargs): self._plot_ax_ylim = ax_ylim_new self._plot_ax_zlim = ax_zlim_new - for drift in self._drifts.values(): + for drift in self.drifts.values(): drift.update_plot( p_axlimits_changed = axlimits_changed, p_xlim = ax_xlim_new, p_ylim = ax_ylim_new, @@ -213,5 +217,21 @@ def remove_plot(self, p_refresh: bool = True): # super().remove_plot( p_refresh = p_refresh ) - for drift in self._drifts.values(): - drift.remove_plot(p_refresh=p_refresh) \ No newline at end of file + for drift in self.drifts.values(): + drift.remove_plot(p_refresh=p_refresh) + + +## ------------------------------------------------------------------------------------------------- + def _renormalize(self, p_normalizer): + """ + Internal renormalization of all buffered drifts. See method OATask.renormalize_on_event() + for further information. + + Parameters + ---------- + p_normalizer : Normalizer + Normalizer object to be applied on task-specific + """ + + for drift in self.drifts.values(): + drift.renormalize( p_normalizer=p_normalizer ) \ No newline at end of file diff --git a/src/mlpro/oa/streams/tasks/driftdetectors/clusterbased/basics.py b/src/mlpro/oa/streams/tasks/driftdetectors/clusterbased/basics.py index 6f0dc275b..0e5e06366 100644 --- a/src/mlpro/oa/streams/tasks/driftdetectors/clusterbased/basics.py +++ b/src/mlpro/oa/streams/tasks/driftdetectors/clusterbased/basics.py @@ -11,7 +11,7 @@ """ Ver. 0.1.0 (2025-02-12) -This module provides template for cluster-based drift detection algorithms to be used in the context of online adaptivity. +This module provides a template for cluster-based drift detection algorithms to be used in the context of online adaptivity. """ from mlpro.bf.various import Log diff --git a/src/mlpro/oa/streams/tasks/driftdetectors/drifts/basics.py b/src/mlpro/oa/streams/tasks/driftdetectors/drifts/basics.py index 7b068a888..a07f3536f 100644 --- a/src/mlpro/oa/streams/tasks/driftdetectors/drifts/basics.py +++ b/src/mlpro/oa/streams/tasks/driftdetectors/drifts/basics.py @@ -54,7 +54,6 @@ class Drift (Id, Event, Plottable, Renormalizable): class name and one of the postfixes '(ON)', '(OFF)' depending on the drift status. """ - C_TYPE = 'Drift' C_PLOT_STANDALONE = False ## ------------------------------------------------------------------------------------------------- diff --git a/src/mlpro/oa/streams/tasks/driftdetectors/drifts/clusterbased/basics.py b/src/mlpro/oa/streams/tasks/driftdetectors/drifts/clusterbased/basics.py index 2b79382a2..e960da98a 100644 --- a/src/mlpro/oa/streams/tasks/driftdetectors/drifts/clusterbased/basics.py +++ b/src/mlpro/oa/streams/tasks/driftdetectors/drifts/clusterbased/basics.py @@ -5,11 +5,12 @@ ## ------------------------------------------------------------------------------------------------- ## -- History : ## -- yyyy-mm-dd Ver. Auth. Description -## -- 2025-02-12 1.0.0 DA Creation +## -- 2025-02-12 0.1.0 DA Creation +## -- 2025-03-04 0.2.0 DA Simplification ## ------------------------------------------------------------------------------------------------- """ -Ver. 0.1.0 (2025-02-12) +Ver. 0.2.0 (2025-03-04) This module provides a template class for cluster-based drifts to be used in cluster-based drift detection algorithms. @@ -72,43 +73,17 @@ def __init__(self, p_raising_object = p_raising_object, **p_kwargs ) - self._clusters : dict[Cluster] = p_clusters - self._properties : dict = p_properties + self.clusters : dict[Cluster] = p_clusters + self.properties : dict = p_properties -## ------------------------------------------------------------------------------------------------- - def get_clusters(self) -> dict[Cluster]: - """ - Method that returns the clusters associated with the drift. - - Returns - ------- - dict[Cluster] - Dictionary of clusters. - """ - return self._clusters - - -## ------------------------------------------------------------------------------------------------- - def get_properties(self) -> dict: - """ - Method that returns the properties of clusters associated with the drift. - - Returns - ------- - dict - Dictionary of properties. - """ - return self._properties - - ## ------------------------------------------------------------------------------------------------- def _init_plot_2d(self, p_figure: Figure, p_settings: PlotSettings): super()._init_plot_2d(p_figure=p_figure, p_settings=p_settings) cluster : Cluster = None - for cluster in self._clusters.values(): + for cluster in self.clusters.values(): if self.drift_status: cluster.color = "red" else: @@ -121,7 +96,7 @@ def _init_plot_3d(self, p_figure: Figure, p_settings: PlotSettings): cluster : Cluster = None - for cluster in self._clusters.values(): + for cluster in self.clusters.values(): if self.drift_status: cluster.color = "red" else: diff --git a/src/mlpro/oa/streams/tasks/driftdetectors/drifts/instancebased/basics.py b/src/mlpro/oa/streams/tasks/driftdetectors/drifts/instancebased/basics.py new file mode 100644 index 000000000..d8d0b901d --- /dev/null +++ b/src/mlpro/oa/streams/tasks/driftdetectors/drifts/instancebased/basics.py @@ -0,0 +1,73 @@ +## ------------------------------------------------------------------------------------------------- +## -- Project : MLPro - The integrative middleware framework for standardized machine learning +## -- Package : mlpro.oa.tasks.driftdetectors.drifts.instancebased +## -- Module : basics.py +## ------------------------------------------------------------------------------------------------- +## -- History : +## -- yyyy-mm-dd Ver. Auth. Description +## -- 2025-03-04 0.1.0 DA Creation +## ------------------------------------------------------------------------------------------------- + +""" +Ver. 0.1.0 (2025-03-04) + +This module provides a template class for instance-based drifts to be used in instance-based drift +detection algorithms. +""" + +from datetime import datetime + +try: + from matplotlib.figure import Figure +except: + class Figure : pass + +from mlpro.bf.mt import PlotSettings + +from mlpro.bf.streams import Instance +from mlpro.oa.streams.tasks.driftdetectors.drifts.basics import Drift + + + +## ------------------------------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- +class DriftIB (Drift): + """ + Sub-type for instance-based drift events. + + Parameters + ---------- + p_id : int + Drift ID. Default value = 0. + p_tstamp : datetime + Time stamp of drift detection. Default = None. + p_visualize : bool + Boolean switch for visualisation. Default = False. + p_raising_object : object + Reference of the object raised. Default = None. + p_clusters : dict[Cluster] + Clusters associated with the anomaly. Default = None. + p_properties : dict + Poperties of clusters associated with the anomaly. Default = None. + **p_kwargs + Further optional keyword arguments. + """ + +## ------------------------------------------------------------------------------------------------- + def __init__(self, + p_drift_status : bool, + p_instances : list[Instance], + p_id : int = 0, + p_tstamp : datetime = None, + p_visualize : bool = False, + p_raising_object : object = None, + **p_kwargs): + + super().__init__( p_drift_status = p_drift_status, + p_id = p_id, + p_tstamp = p_tstamp, + p_visualize = p_visualize, + p_raising_object = p_raising_object, + **p_kwargs ) + + self.instances : list[Instance] = p_instances \ No newline at end of file diff --git a/src/mlpro/oa/streams/tasks/driftdetectors/drifts/instancebased/movement.py b/src/mlpro/oa/streams/tasks/driftdetectors/drifts/instancebased/movement.py new file mode 100644 index 000000000..cf61fe111 --- /dev/null +++ b/src/mlpro/oa/streams/tasks/driftdetectors/drifts/instancebased/movement.py @@ -0,0 +1,29 @@ +## ------------------------------------------------------------------------------------------------- +## -- Project : MLPro - The integrative middleware framework for standardized machine learning +## -- Package : mlpro.oa.tasks.driftdetectors.drifts.instancebased +## -- Module : movement.py +## ------------------------------------------------------------------------------------------------- +## -- History : +## -- yyyy-mm-dd Ver. Auth. Description +## -- 2025-03-04 1.0.0 DA/DS Creation +## ------------------------------------------------------------------------------------------------- + +""" +Ver. 1.0.0 (2025-03-04) + +This module provides a sub-typ of class DriftIB related to data drift of type movement. +""" + +from mlpro.oa.streams.tasks.driftdetectors.drifts.instancebased.basics import DriftIB + + + + +## ------------------------------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- +class DriftIBMovement (DriftIB): + """ + Sub-type indicating the begin or end of a data drift of type movement. + """ + + pass diff --git a/src/mlpro/oa/streams/tasks/driftdetectors/instancebased/__init__.py b/src/mlpro/oa/streams/tasks/driftdetectors/instancebased/__init__.py index e69de29bb..8e650408e 100644 --- a/src/mlpro/oa/streams/tasks/driftdetectors/instancebased/__init__.py +++ b/src/mlpro/oa/streams/tasks/driftdetectors/instancebased/__init__.py @@ -0,0 +1 @@ +from mlpro.oa.streams.tasks.driftdetectors.instancebased.basics import DriftDetectorIB \ No newline at end of file diff --git a/src/mlpro/oa/streams/tasks/driftdetectors/instancebased/basics.py b/src/mlpro/oa/streams/tasks/driftdetectors/instancebased/basics.py new file mode 100644 index 000000000..17d063751 --- /dev/null +++ b/src/mlpro/oa/streams/tasks/driftdetectors/instancebased/basics.py @@ -0,0 +1,32 @@ +## -- ---------------------------------------------------------------------------------------------- +## -- Project : MLPro - The integrative middleware framework for standardized machine learning +## -- Package : mlpro.oa.streams.tasks.driftdetectors.instancebased +## -- Module : basics.py +## ------------------------------------------------------------------------------------------------- +## -- History : +## -- yyyy-mm-dd Ver. Auth. Description +## -- 2025-03-04 0.1.0 DA Creation +## ------------------------------------------------------------------------------------------------- + +""" +Ver. 0.1.0 (2025-03-04) + +This module provides a template for instance-based drift detection algorithms to be used in the context of online adaptivity. +""" + +from mlpro.oa.streams.tasks.driftdetectors.basics import DriftDetector + + + + +## ------------------------------------------------------------------------------------------------- +## ------------------------------------------------------------------------------------------------- +class DriftDetectorIB (DriftDetector): + """ + This is the base class for online-adaptive instance-based drift detectors. It raises an event + when a drift is detected. + """ + + C_TYPE = 'Instance-based Drift Detector' + + \ No newline at end of file