{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "a48e9306-f459-4d8a-8608-9bd71a7600ae", "metadata": {}, "source": [ "# 6. Exploring advanced features\n", "\n", "This notebook is targeted at advanced users that want to access MOA objects directly using CapyMOA's Python API. \n", "\n", "In this notebook, we include:\n", "* Examples on how to use any MOA classifier or regressor from CapyMOA.\n", "* An example of how preprocessing (from MOA) can be used.\n", "* Comparing a sklearn model to a MOA model.\n", "* A variation of **Tutorial 5**: `Creating a new classifier in CapyMOA` which uses MOA learners, thus accessing MOA (Java) objects directly.\n", "* How to log experiments using TensorBoard alongside the PyTorch API. This extends **Tutorial 3**: `Using Pytorch with CapyMOA`.\n", "* Creating a synthetic stream with concept drifts using the MOA CLI directly.\n", "* An example utilising a multi-threaded ensemble.\n", "\n", "---\n", "\n", "*More information about CapyMOA can be found at* https://www.capymoa.org.\n", "\n", "**last update on 28/11/2025**" ] }, { "cell_type": "markdown", "id": "d2bb536e-4716-48fe-bf9b-05455b9e5a85", "metadata": {}, "source": [ "## 6.1 Using any MOA learner\n", "\n", "* **CapyMOA gives you access to any MOA classifier or regressor**.\n", "\n", "* For some MOA learners, there are corresponding Python objects (such as the `HoeffdingTree` or `AdaptiveRandomForestClassifier`). However, MOA has over a hundred learners, and more are added constantly.\n", "\n", "* To allow advanced users to access **any** MOA learner from CapyMOA, we included the `MOAClassifier` and `MOARegressor` generic wrappers." ] }, { "cell_type": "code", "execution_count": 1, "id": "ded154ef", "metadata": { "execution": { "iopub.execute_input": "2024-09-23T00:29:12.975145Z", "iopub.status.busy": "2024-09-23T00:29:12.974567Z", "iopub.status.idle": "2024-09-23T00:29:12.994851Z", "shell.execute_reply": "2024-09-23T00:29:12.993070Z" }, "nbsphinx": "hidden" }, "outputs": [], "source": [ "# This cell is hidden on capymoa.org. See docs/contributing/docs.rst\n", "from util.nbmock import mock_datasets, is_nb_fast\n", "\n", "if is_nb_fast():\n", " mock_datasets()" ] }, { "cell_type": "code", "execution_count": 2, "id": "3d1a9e23-a272-4c01-ab9b-e7f3ec5f7395", "metadata": { "execution": { "iopub.execute_input": "2024-09-23T00:29:13.001384Z", "iopub.status.busy": "2024-09-23T00:29:13.000816Z", "iopub.status.idle": "2024-09-23T00:29:15.524383Z", "shell.execute_reply": "2024-09-23T00:29:15.523734Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Cumulative accuracy = 83.38629943502825, wall-clock time: 0.7772889137268066\n" ] }, { "data": { "text/html": [ "
| \n", " | instances | \n", "accuracy | \n", "kappa | \n", "kappa_t | \n", "kappa_m | \n", "f1_score | \n", "f1_score_0 | \n", "f1_score_1 | \n", "precision | \n", "precision_0 | \n", "precision_1 | \n", "recall | \n", "recall_0 | \n", "recall_1 | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "500.0 | \n", "86.0 | \n", "71.762808 | \n", "-9.375000 | \n", "68.888889 | \n", "85.886082 | \n", "84.581498 | \n", "87.179487 | \n", "85.939394 | \n", "85.333333 | \n", "86.545455 | \n", "85.832836 | \n", "83.842795 | \n", "87.822878 | \n", "
| 1 | \n", "1000.0 | \n", "89.2 | \n", "78.456874 | \n", "28.947368 | \n", "78.988327 | \n", "89.441189 | \n", "89.285714 | \n", "89.112903 | \n", "89.408294 | \n", "94.142259 | \n", "84.674330 | \n", "89.474107 | \n", "84.905660 | \n", "94.042553 | \n", "
| 2 | \n", "1500.0 | \n", "95.8 | \n", "86.827579 | \n", "66.129032 | \n", "83.064516 | \n", "93.435701 | \n", "89.447236 | \n", "97.378277 | \n", "94.263385 | \n", "91.752577 | \n", "96.774194 | \n", "92.622426 | \n", "87.254902 | \n", "97.989950 | \n", "
| 3 | \n", "2000.0 | \n", "77.0 | \n", "54.896301 | \n", "-47.435897 | \n", "41.326531 | \n", "78.794015 | \n", "75.479744 | \n", "78.342750 | \n", "78.232560 | \n", "64.835165 | \n", "91.629956 | \n", "79.363588 | \n", "90.306122 | \n", "68.421053 | \n", "
| 4 | \n", "2500.0 | \n", "86.2 | \n", "71.983109 | \n", "25.000000 | \n", "68.636364 | \n", "85.991852 | \n", "84.282460 | \n", "87.700535 | \n", "86.009685 | \n", "84.474886 | \n", "87.544484 | \n", "85.974026 | \n", "84.090909 | \n", "87.857143 | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 86 | \n", "43500.0 | \n", "84.4 | \n", "66.158171 | \n", "20.408163 | \n", "62.679426 | \n", "85.193622 | \n", "77.058824 | \n", "88.181818 | \n", "89.430894 | \n", "100.000000 | \n", "78.861789 | \n", "81.339713 | \n", "62.679426 | \n", "100.000000 | \n", "
| 87 | \n", "44000.0 | \n", "77.4 | \n", "35.265811 | \n", "-32.941176 | \n", "28.481013 | \n", "74.117119 | \n", "44.334975 | \n", "85.821832 | \n", "87.582418 | \n", "100.000000 | \n", "75.164835 | \n", "64.240506 | \n", "28.481013 | \n", "100.000000 | \n", "
| 88 | \n", "44500.0 | \n", "72.0 | \n", "39.008452 | \n", "-105.882353 | \n", "36.073059 | \n", "74.346872 | \n", "53.947368 | \n", "79.885057 | \n", "81.729270 | \n", "96.470588 | \n", "66.987952 | \n", "68.187653 | \n", "37.442922 | \n", "98.932384 | \n", "
| 89 | \n", "45000.0 | \n", "77.6 | \n", "52.642706 | \n", "-77.777778 | \n", "45.365854 | \n", "76.539541 | \n", "70.526316 | \n", "81.935484 | \n", "77.362637 | \n", "76.571429 | \n", "78.153846 | \n", "75.733774 | \n", "65.365854 | \n", "86.101695 | \n", "
| 90 | \n", "45312.0 | \n", "76.4 | \n", "52.842253 | \n", "-38.823529 | \n", "47.555556 | \n", "76.613251 | \n", "75.105485 | \n", "77.566540 | \n", "76.446493 | \n", "70.634921 | \n", "82.258065 | \n", "76.780738 | \n", "80.180180 | \n", "73.381295 | \n", "
91 rows × 14 columns
\n", "| \n", " | instances | \n", "accuracy | \n", "kappa | \n", "kappa_t | \n", "kappa_m | \n", "f1_score | \n", "f1_score_0 | \n", "f1_score_1 | \n", "precision | \n", "precision_0 | \n", "precision_1 | \n", "recall | \n", "recall_0 | \n", "recall_1 | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "5000.0 | \n", "88.24 | \n", "73.655083 | \n", "74.289462 | \n", "67.040359 | \n", "87.010721 | \n", "82.437276 | \n", "91.160553 | \n", "88.238718 | \n", "88.235294 | \n", "88.242142 | \n", "85.816434 | \n", "77.354260 | \n", "94.278607 | \n", "
| 1 | \n", "10000.0 | \n", "89.04 | \n", "75.824986 | \n", "76.867877 | \n", "70.152505 | \n", "88.084781 | \n", "84.152689 | \n", "91.623357 | \n", "89.212603 | \n", "89.704069 | \n", "88.721137 | \n", "86.985119 | \n", "79.248366 | \n", "94.721871 | \n", "
| 2 | \n", "15000.0 | \n", "89.20 | \n", "76.244122 | \n", "76.972281 | \n", "70.684039 | \n", "88.278420 | \n", "84.482759 | \n", "91.717791 | \n", "89.339374 | \n", "89.743590 | \n", "88.935158 | \n", "87.242369 | \n", "79.804560 | \n", "94.680177 | \n", "
| 3 | \n", "20000.0 | \n", "88.58 | \n", "74.765545 | \n", "75.712463 | \n", "68.678003 | \n", "87.530191 | \n", "83.434871 | \n", "91.286434 | \n", "88.571385 | \n", "88.546798 | \n", "88.595972 | \n", "86.513193 | \n", "78.880965 | \n", "94.145420 | \n", "
| 4 | \n", "25000.0 | \n", "89.88 | \n", "77.409403 | \n", "77.689594 | \n", "71.492958 | \n", "88.820849 | \n", "85.020722 | \n", "92.358804 | \n", "89.801320 | \n", "89.582034 | \n", "90.020606 | \n", "87.861557 | \n", "80.901408 | \n", "94.821705 | \n", "
| 5 | \n", "30000.0 | \n", "89.22 | \n", "75.974731 | \n", "76.595745 | \n", "69.871437 | \n", "88.127738 | \n", "84.086212 | \n", "91.849388 | \n", "89.191203 | \n", "89.111389 | \n", "89.271017 | \n", "87.089334 | \n", "79.597541 | \n", "94.581127 | \n", "
| 6 | \n", "35000.0 | \n", "89.36 | \n", "75.905391 | \n", "75.927602 | \n", "68.870685 | \n", "88.021791 | \n", "83.810103 | \n", "92.076259 | \n", "88.809299 | \n", "87.317692 | \n", "90.300906 | \n", "87.248127 | \n", "80.573435 | \n", "93.922820 | \n", "
| 7 | \n", "40000.0 | \n", "89.68 | \n", "77.061068 | \n", "77.486911 | \n", "71.285476 | \n", "88.667576 | \n", "84.850264 | \n", "92.174704 | \n", "89.713457 | \n", "89.807334 | \n", "89.619581 | \n", "87.645799 | \n", "80.411797 | \n", "94.879800 | \n", "
| 8 | \n", "45000.0 | \n", "90.12 | \n", "78.163781 | \n", "79.120879 | \n", "72.961138 | \n", "89.253353 | \n", "85.656214 | \n", "92.464918 | \n", "90.406670 | \n", "91.218306 | \n", "89.595034 | \n", "88.129091 | \n", "80.733443 | \n", "95.524740 | \n", "
| 9 | \n", "50000.0 | \n", "89.84 | \n", "77.379454 | \n", "77.787495 | \n", "71.540616 | \n", "88.807902 | \n", "85.041225 | \n", "92.307692 | \n", "89.785901 | \n", "89.633768 | \n", "89.938035 | \n", "87.850979 | \n", "80.896359 | \n", "94.805599 | \n", "