{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "b773bf8e-c420-44e1-80a6-99f75dd12268", "metadata": {}, "source": [ "# 5. Creating a new classifier in CapyMOA\n", "\n", "In this tutorial we show how simple it is to create a new learner in capymoa using Python.\n", "\n", "* We choose to make an implementation of the canonical ensemble classifier Online Bagging (AKA OzaBag)\n", "* The base learner is a capymoa object, which allows us to use either SKLearn algorithms or MOA algorithms, thus even though it will be all implemented in Python by us, it can be quite efficient in terms of run time as it depends on the base learner. \n", "\n", "\n", "Reference: _Online bagging and boosting._ Oza, Nikunj C., and Stuart J. Russell. In International Workshop on Artificial Intelligence and Statistics, pp. 229-236. PMLR, 2001.\n", "\n", "---\n", "\n", "*More information about CapyMOA can be found in* https://www.capymoa.org\n", "\n", "**last update on 27/07/2024**" ] }, { "attachments": {}, "cell_type": "markdown", "id": "96cb3df1-190c-49ea-959b-292559df13e6", "metadata": {}, "source": [ "## 1. Creating the classifier\n", "\n", "* The first step is to extend the `Classifier` abstract class from `capymoa.base` and implement the required methods\n", " * ```__init__(self, schema=None, random_seed=1, ...)```\n", " * ```train(self, instance)```\n", " * ```predict(self, instance)```\n", " * ```predict_proba(self, instance)```\n", " \n", "* There is no need to pay much attention to the auxiliary function `poisson`, even though it is a defining characteristic of Online Bagging algorithm but not that relevant for our example\n", "\n", "* We specify the parameter `base_learner_class` as a class identifier and proceed to instantiate it inside the init method\n", "```python\n", " self.ensemble = []\n", " for i in range(self.ensemble_size): \n", " self.ensemble.append(self.base_learner_class(schema=self.schema))\n", "```" ] }, { "cell_type": "code", "execution_count": 1, "id": "ee26df77", "metadata": { "execution": { "iopub.execute_input": "2024-09-23T00:28:51.057812Z", "iopub.status.busy": "2024-09-23T00:28:51.057183Z", "iopub.status.idle": "2024-09-23T00:28:51.067626Z", "shell.execute_reply": "2024-09-23T00:28:51.067162Z" }, "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": "26f4959d-dbc9-41dc-b70a-69ff61dbdf66", "metadata": { "execution": { "iopub.execute_input": "2024-09-23T00:28:51.069321Z", "iopub.status.busy": "2024-09-23T00:28:51.069185Z", "iopub.status.idle": "2024-09-23T00:28:52.609087Z", "shell.execute_reply": "2024-09-23T00:28:52.608517Z" } }, "outputs": [], "source": [ "from capymoa.base import Classifier\n", "from capymoa.classifier import HoeffdingTree\n", "\n", "from collections import Counter\n", "import numpy as np\n", "import random\n", "import math\n", "\n", "\n", "# Generates a random sample from a Poisson distribution with a given mean parameter `lambd`\n", "def poisson(lambd, random_generator):\n", " if lambd < 100.0:\n", " product = 1.0\n", " _sum = 1.0\n", " threshold = random_generator.random() * math.exp(lambd)\n", " i = 1\n", " max_val = max(100, 10 * math.ceil(lambd))\n", " while i < max_val and _sum <= threshold:\n", " product *= lambd / i\n", " _sum += product\n", " i += 1\n", " return i - 1\n", " x = lambd + math.sqrt(lambd) * random_generator.gauss(0, 1)\n", " if x < 0.0:\n", " return 0\n", " return int(math.floor(x))\n", "\n", "\n", "# Online Bagging Implementation\n", "class CustomOnlineBagging(Classifier):\n", " def __init__(\n", " self, schema=None, random_seed=1, ensemble_size=5, base_learner_class=None\n", " ):\n", " super().__init__(schema=schema, random_seed=random_seed)\n", "\n", " self.random_generator = random.Random()\n", "\n", " self.ensemble_size = ensemble_size\n", " self.base_learner_class = base_learner_class\n", "\n", " if self.base_learner_class is None:\n", " self.base_learner_class = HoeffdingTree\n", "\n", " self.ensemble = []\n", " for i in range(self.ensemble_size):\n", " self.ensemble.append(self.base_learner_class(schema=self.schema))\n", "\n", " def __str__(self):\n", " return \"CustomOnlineBagging\"\n", "\n", " def train(self, instance):\n", " for i in range(self.ensemble_size):\n", " k = poisson(1.0, self.random_generator)\n", " for _ in range(k):\n", " self.ensemble[i].train(instance)\n", "\n", " def predict(self, instance):\n", " predictions = []\n", " for i in range(self.ensemble_size):\n", " predictions.append(self.ensemble[i].predict(instance))\n", " majority_vote = Counter(predictions)\n", " prediction = majority_vote.most_common(1)[0][0]\n", " return prediction\n", "\n", " def predict_proba(self, instance):\n", " probabilities = []\n", " for i in range(self.ensemble_size):\n", " classifier_proba = self.ensemble[i].predict_proba(instance)\n", " classifier_proba = classifier_proba / np.sum(classifier_proba)\n", " probabilities.append(classifier_proba)\n", " avg_proba = np.mean(probabilities, axis=0)\n", " return avg_proba" ] }, { "attachments": {}, "cell_type": "markdown", "id": "a4ff1ac9-07a1-4a0b-9bb5-f2afa79dd928", "metadata": {}, "source": [ "## 3. Evaluating the classifier\n", "\n", "* We use the same approach as when we evaluate any other capymoa learner.\n", "* We show how it is simple to use learners with different backends in our implementation, e.g.\n", " * `HoeffdingTree` (MOA)\n", " * `SGDClassifier` (SKLearn)" ] }, { "cell_type": "code", "execution_count": 3, "id": "da2bba35-c258-4fc0-8932-f97d56e4e276", "metadata": { "execution": { "iopub.execute_input": "2024-09-23T00:28:52.611171Z", "iopub.status.busy": "2024-09-23T00:28:52.610955Z", "iopub.status.idle": "2024-09-23T00:29:01.347305Z", "shell.execute_reply": "2024-09-23T00:29:01.345454Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CustomOnlineBagging(HT) accuracy: 82.84339689265536, wallclock: 4.093186378479004\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "CustomOnlineBagging(SGD) accuracy: 82.21663135593221, wallclock: 3.690402030944824\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+UAAAHWCAYAAAARsiigAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAADCVElEQVR4nOzdd3QUZRfH8e/spocklFASCC30DoIgHamCNBEECyoqdgUUFRUbIoKKIAi+2AsdFBGQIkpvIr1j6CX0UNKzu+8fQwKRAElIMim/zzl7dpi2N3FMcud55l7D5XK5EBEREREREZEsZ7M6ABEREREREZG8Skm5iIiIiIiIiEWUlIuIiIiIiIhYREm5iIiIiIiIiEWUlIuIiIiIiIhYREm5iIiIiIiIiEWUlIuIiIiIiIhYREm5iIiIiIiIiEWUlIuIiIiIiIhYREm5iIiIiIiIiEWUlIuIiIiIiIhYREm5iIiIiIiIiEWUlIuIiEi6RUZGWh2CiIhIjqakXEREJBs5ePAgzzzzDBUrVsTb25tChQrRvXt3Dhw4cM2+ERER9O/fn9KlS+Pp6UmJEiXo3bs3p0+fTtonJiaGd955hwoVKuDl5UVQUBD33HMPYWFhACxZsgTDMFiyZEmycx84cADDMPjuu++S1j3yyCPky5ePsLAw2rdvj5+fHw888AAAy5cvp3v37pQsWRJPT09CQkLo378/0dHR18S9a9cuevToQeHChfH29qZixYq88cYbAPz1118YhsEvv/xyzXGTJk3CMAxWr16d1m+riIhItuVmdQAiIiJyxd9//82qVavo2bMnJUqU4MCBA4wfP57mzZuzY8cOfHx8ALh06RJNmjRh586d9OnThzp16nD69Glmz57NkSNHCAwMxOFwcPfdd7N48WJ69uzJiy++yMWLF1m0aBHbtm0jNDQ0zfElJCTQtm1bGjduzMcff5wUz/Tp04mKiuLpp5+mUKFCrFu3jjFjxnDkyBGmT5+edPyWLVto0qQJ7u7u9O3bl9KlSxMWFsZvv/3G0KFDad68OSEhIUycOJGuXbsm++yJEycSGhrKHXfccQvfYRERkexFSbmIiEg20qFDB+69995k6zp27Mgdd9zBzJkzeeihhwD46KOP2LZtGz///HOy5PXNN9/E5XIB8MMPP7B48WJGjhxJ//79k/Z57bXXkvZJq9jYWLp3786wYcOSrR8+fDje3t5J/+7bty/lypXj9ddf59ChQ5QsWRKA559/HpfLxYYNG5LWAXz44YcAGIbBgw8+yMiRIzl//jwBAQEAnDp1ioULFyaNqIuIiOQWmr4uIiKSjVyd2MbHx3PmzBnKlStH/vz52bBhQ9K2mTNnUrNmzWtGk8FMbBP3CQwM5Pnnn7/uPunx9NNP3zDuyMhITp8+TcOGDXG5XGzcuBEwE+tly5bRp0+fZAn5f+Pp3bs3sbGxzJgxI2nd1KlTSUhI4MEHH0x33CIiItmRknIREZFsJDo6mrfeeouQkBA8PT0JDAykcOHCREREcP78+aT9wsLCqFat2g3PFRYWRsWKFXFzy7iJcW5ubpQoUeKa9YcOHeKRRx6hYMGC5MuXj8KFC9OsWTOApLj37dsHcNO4K1WqRL169Zg4cWLSuokTJ9KgQQPKlSuXUV+KiIhItqDp6yIiItnI888/z7fffku/fv244447CAgIwDAMevbsidPpzPDPu96IucPhSHG9p6cnNpvtmn1bt27N2bNnefXVV6lUqRK+vr4cPXqURx55JF1x9+7dmxdffJEjR44QGxvLmjVrGDt2bJrPIyIikt0pKRcREclGZsyYwcMPP8wnn3yStC4mJoaIiIhk+4WGhrJt27Ybnis0NJS1a9cSHx+Pu7t7ivsUKFAA4JrzHzx4MNUxb926lT179vD999/Tu3fvpPWLFi1Ktl/ZsmUBbho3QM+ePRkwYACTJ08mOjoad3d37rvvvlTHJCIiklNo+rqIiEg2YrfbrynCNmbMmGtGrrt168bmzZtTbB2WeHy3bt04ffp0iiPMifuUKlUKu93OsmXLkm0fN25cmmK++pyJy6NHj062X+HChWnatCnffPMNhw4dSjGeRIGBgdx111389NNPTJw4kXbt2hEYGJjqmERERHIKjZSLiIhkI3fffTc//vgjAQEBVKlShdWrV/PHH39QqFChZPsNHDiQGTNm0L17d/r06cNtt93G2bNnmT17Nl988QU1a9akd+/e/PDDDwwYMIB169bRpEkTIiMj+eOPP3jmmWfo3LkzAQEBdO/enTFjxmAYBqGhocyZM4eTJ0+mOuZKlSoRGhrKyy+/zNGjR/H392fmzJmcO3fumn0/++wzGjduTJ06dejbty9lypThwIEDzJ07l02bNiXbt3fv3kmV6IcMGZL2b6aIiEgOoKRcREQkGxk9ejR2u52JEycSExNDo0aN+OOPP2jbtm2y/fLly8fy5ct5++23+eWXX/j+++8pUqQILVu2TCrEZrfbmTdvHkOHDmXSpEnMnDmTQoUK0bhxY6pXr550rjFjxhAfH88XX3yBp6cnPXr04KOPPrppQbZE7u7u/Pbbb7zwwgsMGzYMLy8vunbtynPPPUfNmjWT7VuzZk3WrFnD4MGDGT9+PDExMZQqVYoePXpcc96OHTtSoEABnE4nnTp1Suu3UkREJEcwXOltVCoiIiKSiRISEggODqZjx458/fXXVocjIiKSKfRMuYiIiGRLs2bN4tSpU8mKx4mIiOQ2GikXERGRbGXt2rVs2bKFIUOGEBgYyIYNG6wOSUREJNNopFxERESylfHjx/P0009TpEgRfvjhB6vDERERyVQaKRcRERERERGxiEbKRURERERERCyipFxERERERETEIrm+T7nT6eTYsWP4+flhGIbV4YiIiIiIiEgu53K5uHjxIsHBwdhsNx4Lz/VJ+bFjxwgJCbE6DBEREREREcljDh8+TIkSJW64T65Pyv38/ADzm+Hv729xNJJTxcfHs3DhQtq0aYO7u7vV4YhkKl3vklfoWpe8RNe75CXZ4Xq/cOECISEhSfnojeT6pDxxyrq/v7+Sckm3+Ph4fHx88Pf31y8yyfV0vUteoWtd8hJd75KXZKfrPTWPUKvQm4iIiIiIiIhFlJSLiIiIiIiIWERJuYiIiIiIiIhFcv0z5SIiIiIiItmZy+UiISEBh8NhdSi5Qnx8PG5ubsTExGTa99Rut+Pm5pYhbbeVlIuIiIiIiFgkLi6O48ePExUVZXUouYbL5aJYsWIcPnw4Q5Lm6/Hx8SEoKAgPD49bOo+SchEREREREQs4nU7279+P3W4nODgYDw+PTE0i8wqn08mlS5fIly8fNlvGP7HtcrmIi4vj1KlT7N+/n/Lly9/S51ielF+8eJHBgwfzyy+/cPLkSWrXrs3o0aOpV68eYH7Bb7/9Nl9++SURERE0atSI8ePHU758eYsjFxERERERSb+4uDicTichISH4+PhYHU6u4XQ6iYuLw8vLK1OScgBvb2/c3d05ePBg0mell+WF3h5//HEWLVrEjz/+yNatW2nTpg2tWrXi6NGjAIwYMYLPPvuML774grVr1+Lr60vbtm2JiYmxOHIREREREZFbl1mJo2SujPrvZul//ejoaGbOnMmIESNo2rQp5cqV45133qFcuXKMHz8el8vFqFGjePPNN+ncuTM1atTghx9+4NixY8yaNcvK0EVERERERERumaXT1xMrDP53qN/b25sVK1awf/9+wsPDadWqVdK2gIAA6tevz+rVq+nZs+c154yNjSU2Njbp3xcuXADMCnzx8fGZ9JVIbpd47egakrxA17vkFbrWJS/R9Z49xcfH43K5cDqdOJ1Oq8PJNVwuV9J7Zn5fnU4nLpeL+Ph47HZ7sm1p+X/N0qTcz8+PO+64gyFDhlC5cmWKFi3K5MmTWb16NeXKlSM8PByAokWLJjuuaNGiSdv+a9iwYbz77rvXrF+4cKGe05BbtmjRIqtDEMkyut4lr9C1LnmJrvfsxc3NjWLFinHp0iXi4uKsDidbGDp0KKdOnWLUqFG3fK6LFy8m+3fr1q15/vnn6dSp0y2fG8yaANHR0SxbtoyEhIRk29JSTd9wJd5GsEhYWBh9+vRh2bJl2O126tSpQ4UKFfjnn3/4+uuvadSoEceOHSMoKCjpmB49emAYBlOnTr3mfCmNlIeEhHD69Gn8/f2z5GuS3Cc+Pp5FixbRunVr3N3drQ5HJFPpepe8Qte65CW63rOnmJgYDh8+TOnSpW+pUBjA/tORTP/nCEfORVOigDfdbytBmUDfDIr0+g4fPsw777zDggULOH36NEFBQXTu3JnBgwdTqFAhAO68806WLl2adEyRIkVo0qQJH330EaVKlUpaHx4eTqVKldi8eXPS+kcffZSIiAh++eWXZJ+7ZMkSWrZsyZkzZ+jfvz8//PDDdWMsVaoU+/btY86cObz00kvs3LkzQ54Hj4mJ4cCBA4SEhFzz3+/ChQsEBgZy/vz5m+ahlldfDw0NZenSpURGRnLhwgWCgoK47777KFu2LMWKFQPgxIkTyZLyEydOUKtWrRTP5+npiaen5zXr3d3d9QNIbpmuI8lLdL1LXqFrXfISXe/Zi8PhwDAMbDbbLSWJ09Yf5rWZWzAMA5fLhWEYTFi2j+HdatC9bkgGRpzcvn37uOOOO6hQoQKTJ0+mTJkybN++nYEDBzJ//nzWrFlDwYIFAXjiiSd47733cLlcHDx4kH79+tG7d2+WL1+edL5vvvmGhg0bUqZMmaR1hmEkfY+ulvhvm83GZ599xvDhw5O2BQUF8fnnn9OlSxdsNht2ux2bzUaHDh3o27cvCxYsoEOHDrf89dtsNgzDSPH/q7T8f2Z5Up7I19cXX19fzp07x4IFCxgxYgRlypShWLFiLF68OCkJv3DhAmvXruXpp5+2NmAREREREZEM5nK5iI53pHr/A2cieW3mFpwuIHES9OX3V2duoVpxf0oVSt2Iube7PU190p999lk8PDxYuHAh3t7eAJQsWZLatWsTGhrKG2+8wfjx4wHw8fFJGnQNCgriueee48knn0x2vilTpqQrzwsICCAgIOCadcWKFUuWzNvtdtq3b8+UKVMyJCnPKJYn5QsWLMDlclGxYkX+/fdfBg4cSKVKlXj00UcxDIN+/frx/vvvU758ecqUKcPgwYMJDg6mS5cuVocuIiIiIiKSoaLjHVR5a0GGnMvpgrtGr0j1/jvea4uPR+pSxLNnz7JgwQKGDh2alJAnKlasGA888ABTp05l3LhxKR47bdo06tevn2zdjh07qFu3bqrjTY/bb7+dDz/8MFM/I60sT8rPnz/PoEGDOHLkCAULFqRbt24MHTo0abj/lVdeITIykr59+xIREUHjxo2ZP3/+LT9zISIiIiIiIumzd+9eXC4XlStXTnF75cqVOXfuHKdOnQJg3LhxfPXVV7hcLqKioqhQoQILFly5+XDo0CFcLhfBwcHXnGvOnDnky5cv2TqHI/WzCa4WHBzM4cOHcTqd2aY/vOVJeY8ePejRo8d1txuGwXvvvcd7772XhVGJiIiIiIhkPW93Ozvea5vq/Ucu2sO3Kw7gSKF+t90weLRxaQa0rpDqz06r1NYNf+CBB3jjjTcAs0bYBx98QJs2bfjnn3/w8/MjOjoaIMXB1xYtWiRNg0+0du1aHnzwwTTH6+3tjdPpJDY29poRfqtYnpSLiIiIiIiIyTCMVE8hB3igfim+WbE/xW0uXDxYv1Sazpda5cqVwzAMdu7cSdeuXa/ZvnPnTgoUKEDhwoUB8xnvcuXKJR379ddfExQUxNSpU3n88ccJDAwE4Ny5c0nHJPL19U06NtGRI0fSFffZs2fx9fXNNgk5QPYYrxcREREREZE0KxPoy/BuNbAZYLcZyd6Hd6tB6Uxqi1aoUCFat27NuHHjkka5E4WHhzNx4kTuu+++6xaOs9vNUfnEY0NDQ/H392fHjh2ZEm+ibdu2Ubt27Uz9jLTSSLmIiIiIiEgO1r1uCPVKF2Tq+sNJfcrvqxuSaQl5orFjx9KwYUPatm3L+++/n6wlWvHixRk6dGjSvlFRUYSHhwPm9PUhQ4bg5eVFmzZtALO9WKtWrVixYkWmFvVevnx50mdmFxopFxERERERyeFKB/ryartKjOlVm1fbVcr0hBygfPnyrF+/nrJly9KjRw9CQ0Pp27cvLVq0YPXq1Uk9ygG+/PJLgoKCCAoKokWLFpw+fZp58+ZRsWLFpH0ef/xxpkyZgtPpzJR4jx49yqpVq3j00Ucz5fzppZFyERERERERSZdSpUrx3Xff3XCfJUuWpOpc7dq1Izg4mKlTp9KrVy+A6567efPm1y0y53A4uHDhwjXrP/vsMx555BFKlCiRqniyikbKRURERERExHKGYTBhwgQSEhIy5fxFihRhyJAhmXLuW6GRchEREREREckWatWqRa1atTLl3C+99FKmnPdWaaRcRERERERExCIaKc8G9p+OZNpVlRJ71A2hTBYUZhARERERERFrKSm32LT1h3lt5hYMw8DlcmEYBv9bGsbwbjXoXjfE6vBEREREREQkE2n6uoX2n47ktZlbcLrA4XQle3915hYOnI60OkQRERERERHJRErKLTRt/WEMw0hxm2EYTF1/OIsjEhERERERkaykpNxCR85FX7e3nsvl4si56CyOSERERERERLKSknILlSjgfd2R8sTtIiIiIiIiknspKbdQj7oh1x0pd7qgSbnALI5IRERERETEOoMHD6Zv375Wh8EXX3xBx44ds+SzlJRbqEygL8O71cBmgN1mmO9XjZy/OWsb5yLjLIxQRERERERyhDNh8Mc7MKOP+X4mLEs+9vDhw/Tp04fg4GA8PDwoVaoUL774ImfOnEnap3nz5hiGkfQqWrQo3bt35+DBg8nOFR4ezujRo3njjTeS1p06dYqnn36akiVL4unpSbFixWjbti0rV65MduzGjRu57777CAoKwtvbm+rVq9OxY0d+++23pIHQAwcOJIvDz8+PqlWr8uyzz7J3795k5+vTpw8bNmxg+fLlGf0tu4aScot1rxvCny81p2/TsnSoEUzfZmWZ+dQdFM/vzb7TkTzxw3pi4h1WhykiIiIiItnVxp9gbF1Y+Rls/8V8H1sXNk7M1I/dt28fdevWZe/evUyePJl///2XL774gsWLF3PHHXdw9uzZpH2feOIJ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acynTJlCSEgIgwYNKtkXHR1NREQEO3bsKFU2OTmZBg0aVHaIIiIiIiIiIuXO6T3lDoeDKVOmMHr0aFxcfgvHMAwefPBBJk6cSFxcHPHx8UybNo3t27czc+ZMJ0YsIiIiIiIiUj6cnpQvWrSI9PR0brnllrOOTZgwgfz8fO69916OHTtGXFwcCxcupHHjxk6IVERERERERKR8OT0p79+/PxeaAP6RRx4ptU65iIiIiIiISE1RJa4pFxEREREREamNlJSLiIiIiIiIOImSchEREREREREnUVIuIiIiIiIi4iRKykVEREREREScREm5iIiIiIiIiJMoKRcRERERERFxEiXlIiIiIiIiIk6ipFxERERERETESZSUi4iIiIiIiDiJknIRERERERERJ1FSLiIiIiIiIuIkSspFREREREREnERJuYiIiIiIiIiTKCkXERERERERcRIl5SIiIiIiIiJOoqRcRERERERExEmUlIuIiIiIiIg4iZJyERERERERESdRUi4iIiIiIiLiJC7ODqCimaYJQFZWlpMjkeqssLCQ3NxcsrKycHV1dXY4IhVK7V1qC7V1qU3U3qU2qQrt/Uz+eSYfvZAan5RnZ2cDEBkZ6eRIREREREREpDbJzs7Gz8/vgmUM82JS92rM4XCwf/9+fHx8MAzD2eFINZWVlUVkZCR79uzB19fX2eGIVCi1d6kt1NalNlF7l9qkKrR30zTJzs4mIiICm+3CV43X+J5ym81G/fr1nR2G1BC+vr76Qya1htq71BZq61KbqL1LbeLs9v5HPeRnaKI3ERERERERESdRUi4iIiIiIiLiJErKRS6Cu7s7EydOxN3d3dmhiFQ4tXepLdTWpTZRe5fapLq19xo/0ZuIiIiIiIhIVaWechEREREREREnUVIuIiIiIiIi4iRKykVEREREREScREm5iIiIiIiIiJMoKZca6YcffuDaa68lIiICwzCYPXt2qeOmafLPf/6T8PBwPD096du3L7/++mupMseOHWPkyJH4+vri7+/PrbfeSk5OTqkymzdvpnv37nh4eBAZGcnzzz9/VixffPEFzZs3x8PDg9jYWObNm1fur1dqt8mTJ9OxY0d8fHwICQlh8ODB7Nixo1SZ/Px8xo8fT2BgIN7e3gwZMoSMjIxSZdLT0xk0aBBeXl6EhITw4IMPUlRUVKrMsmXLaNeuHe7u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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from capymoa.evaluation import prequential_evaluation\n", "from capymoa.evaluation.visualization import plot_windowed_results\n", "from capymoa.datasets import Electricity\n", "from capymoa.classifier import SGDClassifier\n", "\n", "elec_stream = Electricity()\n", "\n", "# Creating a learner: using a hoeffding adaptive tree as the base learner\n", "ob_ht = CustomOnlineBagging(\n", " schema=elec_stream.get_schema(), ensemble_size=5, base_learner_class=HoeffdingTree\n", ")\n", "ob_sgd = CustomOnlineBagging(\n", " schema=elec_stream.get_schema(), ensemble_size=5, base_learner_class=SGDClassifier\n", ")\n", "\n", "results_ob_ht = prequential_evaluation(\n", " stream=elec_stream, learner=ob_ht, window_size=4500\n", ")\n", "print(\n", " f\"CustomOnlineBagging(HT) accuracy: {results_ob_ht.cumulative.accuracy()}, wallclock: {results_ob_ht.wallclock()}\"\n", ")\n", "results_ob_sgd = prequential_evaluation(\n", " stream=elec_stream, learner=ob_ht, window_size=4500\n", ")\n", "print(\n", " f\"CustomOnlineBagging(SGD) accuracy: {results_ob_sgd.cumulative.accuracy()}, wallclock: {results_ob_sgd.wallclock()}\"\n", ")\n", "\n", "results_ob_ht.learner = \"OB(HT)\"\n", "results_ob_sgd.learner = \"OB(SGD)\"\n", "plot_windowed_results(results_ob_ht, results_ob_sgd, metric=\"accuracy\")" ] }, { "attachments": {}, "cell_type": "markdown", "id": "c99c28f5-0eb7-49f1-b38b-7e6891d5f30a", "metadata": {}, "source": [ "## 4. CustomOnlineBagging and OnlineBagging\n", "\n", "* Testing and training our custom online bagging implementation alongside the online bagging implementation from `capymoa.classifier.OnlineBagging`." ] }, { "cell_type": "code", "execution_count": 4, "id": "3da81297-af63-4d30-a643-81f347304efa", "metadata": { "execution": { "iopub.execute_input": "2024-09-23T00:29:01.354112Z", "iopub.status.busy": "2024-09-23T00:29:01.353176Z", "iopub.status.idle": "2024-09-23T00:29:11.707790Z", "shell.execute_reply": "2024-09-23T00:29:11.707307Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[custom] Online Bagging acc: 67.611\n", "[capymoa] Online Bagging acc: 60.357000000000006\n", "CPU times: user 11.6 s, sys: 31.4 ms, total: 11.7 s\n", "Wall time: 10.3 s\n" ] } ], "source": [ "%%time\n", "from capymoa.classifier import OnlineBagging\n", "from capymoa.evaluation import ClassificationEvaluator\n", "from capymoa.datasets import RBFm_100k\n", "\n", "RBFm_100k_stream = RBFm_100k()\n", "\n", "# Creating a learner without specifying the base_learner thus HoeffdingTree is used\n", "custom_ob = CustomOnlineBagging(schema=RBFm_100k_stream.get_schema(), ensemble_size=5)\n", "capy_ob = OnlineBagging(schema=RBFm_100k_stream.get_schema(), ensemble_size=5)\n", "\n", "custom_ob_evaluator = ClassificationEvaluator(schema=RBFm_100k_stream.get_schema())\n", "capy_ob_evaluator = ClassificationEvaluator(schema=RBFm_100k_stream.get_schema())\n", "\n", "while RBFm_100k_stream.has_more_instances():\n", " instance = RBFm_100k_stream.next_instance()\n", "\n", " prediction_new = custom_ob.predict(instance)\n", " prediction = capy_ob.predict(instance)\n", "\n", " custom_ob_evaluator.update(instance.y_index, prediction_new)\n", " capy_ob_evaluator.update(instance.y_index, prediction)\n", "\n", " custom_ob.train(instance)\n", " capy_ob.train(instance)\n", "\n", "print(f\"[custom] Online Bagging acc: {custom_ob_evaluator.accuracy()}\")\n", "print(f\"[capymoa] Online Bagging acc: {capy_ob_evaluator.accuracy()}\")" ] }, { "cell_type": "code", "execution_count": null, "id": "ba55eedb-5578-4c0d-9b09-921a690729dc", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.19" } }, "nbformat": 4, "nbformat_minor": 5 }