{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "a48e9306-f459-4d8a-8608-9bd71a7600ae", "metadata": {}, "source": [ "# 6. Exploring Advanced Features\n", "\n", "This notebook is target at advanced users that want, among other things, access MOA objects directly using the Python API from capymoa. \n", "\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 against 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 in* https://www.capymoa.org\n", "\n", "**last update on 28/07/2024**" ] }, { "cell_type": "markdown", "id": "d2bb536e-4716-48fe-bf9b-05455b9e5a85", "metadata": {}, "source": [ "## 1. Using any MOA learner\n", "\n", "* **CapyMOA gives you access to any MOA classifier or regressor**\n", "\n", "* For some of the MOA learners there are corresponding Python objects (such as the HoeffdingTree or Adaptive Random Forest Classifier). 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.6487746238708496\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.26 | \n", "73.743687 | \n", "74.333188 | \n", "67.096413 | \n", "87.033480 | \n", "82.534960 | \n", "91.158307 | \n", "88.176897 | \n", "87.951807 | \n", "88.401987 | \n", "85.919338 | \n", "77.746637 | \n", "94.092040 | \n", "
1 | \n", "10000.0 | \n", "88.90 | \n", "75.530516 | \n", "76.572393 | \n", "69.771242 | \n", "87.928724 | \n", "83.973433 | \n", "91.509867 | \n", "89.020852 | \n", "89.366933 | \n", "88.674770 | \n", "86.863069 | \n", "79.193900 | \n", "94.532238 | \n", "
2 | \n", "15000.0 | \n", "89.32 | \n", "76.502635 | \n", "77.228145 | \n", "71.009772 | \n", "88.411372 | \n", "84.646348 | \n", "91.812328 | \n", "89.488370 | \n", "89.975550 | \n", "89.001189 | \n", "87.359989 | \n", "79.913138 | \n", "94.806840 | \n", "
3 | \n", "20000.0 | \n", "88.46 | \n", "74.512585 | \n", "75.457252 | \n", "68.348875 | \n", "87.397210 | \n", "83.280209 | \n", "91.189495 | \n", "88.410300 | \n", "88.267813 | \n", "88.552788 | \n", "86.407075 | \n", "78.826111 | \n", "93.988039 | \n", "
4 | \n", "25000.0 | \n", "89.96 | \n", "77.605382 | \n", "77.865961 | \n", "71.718310 | \n", "88.910925 | \n", "85.165485 | \n", "92.412334 | \n", "89.854565 | \n", "89.558732 | \n", "90.150398 | \n", "87.986898 | \n", "81.183099 | \n", "94.790698 | \n", "
5 | \n", "30000.0 | \n", "89.18 | \n", "75.897805 | \n", "76.508901 | \n", "69.759642 | \n", "88.083152 | \n", "84.046004 | \n", "91.814193 | \n", "89.119564 | \n", "88.951311 | \n", "89.287816 | \n", "87.070568 | \n", "79.653438 | \n", "94.487699 | \n", "
6 | \n", "35000.0 | \n", "89.42 | \n", "76.037829 | \n", "76.063348 | \n", "69.046226 | \n", "88.089201 | \n", "83.896499 | \n", "92.122115 | \n", "88.884746 | \n", "87.436548 | \n", "90.332944 | \n", "87.307770 | \n", "80.631949 | \n", "93.983592 | \n", "
7 | \n", "40000.0 | \n", "89.86 | \n", "77.447069 | \n", "77.879581 | \n", "71.786311 | \n", "88.868885 | \n", "85.092620 | \n", "92.317018 | \n", "89.952864 | \n", "90.211970 | \n", "89.693757 | \n", "87.810720 | \n", "80.523094 | \n", "95.098345 | \n", "
8 | \n", "45000.0 | \n", "90.18 | \n", "78.293807 | \n", "79.247675 | \n", "73.125342 | \n", "89.320332 | \n", "85.739181 | \n", "92.511819 | \n", "90.482147 | \n", "91.336634 | \n", "89.627660 | \n", "88.187975 | \n", "80.788177 | \n", "95.587772 | \n", "
9 | \n", "50000.0 | \n", "89.92 | \n", "77.551851 | \n", "77.962396 | \n", "71.764706 | \n", "88.897167 | \n", "85.150265 | \n", "92.370572 | \n", "89.890396 | \n", "89.807334 | \n", "89.973459 | \n", "87.925646 | \n", "80.952381 | \n", "94.898911 | \n", "