{"cells":[{"cell_type":"markdown","id":"given-organ","metadata":{"id":"given-organ"},"source":["# Train your for classifier for MicroPython"]},{"cell_type":"code","execution_count":null,"id":"vulnerable-cause","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"vulnerable-cause","executionInfo":{"status":"ok","timestamp":1718180358573,"user_tz":-180,"elapsed":67337,"user":{"displayName":"Shafin Saleem","userId":"07308092508119443747"}},"outputId":"62d4fad5-27b3-4038-b41b-56b53b0e4613"},"outputs":[{"output_type":"stream","name":"stdout","text":["Collecting everywhereml\n"," Downloading everywhereml-0.2.39.tar.gz (47 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m47.7/47.7 kB\u001b[0m \u001b[31m1.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n","Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from everywhereml) (1.25.2)\n","Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from everywhereml) (2.0.3)\n","Requirement already satisfied: seaborn in /usr/local/lib/python3.10/dist-packages (from everywhereml) (0.13.1)\n","Requirement already satisfied: scikit-learn in /usr/local/lib/python3.10/dist-packages (from everywhereml) (1.2.2)\n","Requirement already satisfied: scikit-image in /usr/local/lib/python3.10/dist-packages (from everywhereml) (0.19.3)\n","Requirement already satisfied: Jinja2 in /usr/local/lib/python3.10/dist-packages (from everywhereml) (3.1.4)\n","Collecting cached-property (from everywhereml)\n"," Downloading cached_property-1.5.2-py2.py3-none-any.whl (7.6 kB)\n","Collecting umap-learn (from everywhereml)\n"," Downloading umap_learn-0.5.6-py3-none-any.whl (85 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m85.7/85.7 kB\u001b[0m \u001b[31m3.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hRequirement already satisfied: python-slugify in /usr/local/lib/python3.10/dist-packages (from everywhereml) (8.0.4)\n","Collecting hexdump (from everywhereml)\n"," Downloading hexdump-3.3.zip (12 kB)\n"," Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n","Collecting jinja2_workarounds (from everywhereml)\n"," Downloading jinja2_workarounds-0.1.0-py3-none-any.whl (2.8 kB)\n","Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from everywhereml) (2.31.0)\n","Collecting pySerial (from everywhereml)\n"," Downloading pyserial-3.5-py2.py3-none-any.whl (90 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m90.6/90.6 kB\u001b[0m \u001b[31m8.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hRequirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from everywhereml) (4.66.4)\n","Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from Jinja2->everywhereml) (2.1.5)\n","Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas->everywhereml) (2.8.2)\n","Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->everywhereml) (2023.4)\n","Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas->everywhereml) (2024.1)\n","Requirement already satisfied: text-unidecode>=1.3 in /usr/local/lib/python3.10/dist-packages (from python-slugify->everywhereml) (1.3)\n","Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->everywhereml) (3.3.2)\n","Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->everywhereml) (3.7)\n","Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->everywhereml) (2.0.7)\n","Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->everywhereml) (2024.6.2)\n","Requirement already satisfied: scipy>=1.4.1 in /usr/local/lib/python3.10/dist-packages (from scikit-image->everywhereml) (1.11.4)\n","Requirement already satisfied: networkx>=2.2 in /usr/local/lib/python3.10/dist-packages (from scikit-image->everywhereml) (3.3)\n","Requirement already satisfied: pillow!=7.1.0,!=7.1.1,!=8.3.0,>=6.1.0 in /usr/local/lib/python3.10/dist-packages (from scikit-image->everywhereml) (9.4.0)\n","Requirement already satisfied: imageio>=2.4.1 in /usr/local/lib/python3.10/dist-packages (from scikit-image->everywhereml) (2.31.6)\n","Requirement already satisfied: tifffile>=2019.7.26 in /usr/local/lib/python3.10/dist-packages (from scikit-image->everywhereml) (2024.5.22)\n","Requirement already satisfied: PyWavelets>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-image->everywhereml) (1.6.0)\n","Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from scikit-image->everywhereml) (24.0)\n","Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-learn->everywhereml) (1.4.2)\n","Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn->everywhereml) (3.5.0)\n","Requirement already satisfied: matplotlib!=3.6.1,>=3.4 in /usr/local/lib/python3.10/dist-packages (from seaborn->everywhereml) (3.7.1)\n","Requirement already satisfied: numba>=0.51.2 in /usr/local/lib/python3.10/dist-packages (from umap-learn->everywhereml) (0.58.1)\n","Collecting pynndescent>=0.5 (from umap-learn->everywhereml)\n"," Downloading pynndescent-0.5.12-py3-none-any.whl (56 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.8/56.8 kB\u001b[0m \u001b[31m1.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hRequirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn->everywhereml) (1.2.1)\n","Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn->everywhereml) (0.12.1)\n","Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn->everywhereml) (4.53.0)\n","Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn->everywhereml) (1.4.5)\n","Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn->everywhereml) (3.1.2)\n","Requirement already satisfied: llvmlite<0.42,>=0.41.0dev0 in /usr/local/lib/python3.10/dist-packages (from numba>=0.51.2->umap-learn->everywhereml) (0.41.1)\n","Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->pandas->everywhereml) (1.16.0)\n","Building wheels for collected packages: everywhereml, hexdump\n"," Building wheel for everywhereml (setup.py) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for everywhereml: filename=everywhereml-0.2.39-py3-none-any.whl size=81224 sha256=4e46396b8829910c254263cc77770b56ddfb58af5b546628b6ce8e67d19714df\n"," Stored in directory: /root/.cache/pip/wheels/96/16/0d/c55612f3c08c6ed348c45c7de6018dac22ea839124bc507ced\n"," Building wheel for hexdump (setup.py) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for hexdump: filename=hexdump-3.3-py3-none-any.whl size=8896 sha256=9cc0e38fbc452a85045d2e44e44904b4624835d5917f61aef4700320fa411dda\n"," Stored in directory: /root/.cache/pip/wheels/26/28/f7/f47d7ecd9ae44c4457e72c8bb617ef18ab332ee2b2a1047e87\n","Successfully built everywhereml hexdump\n","Installing collected packages: pySerial, hexdump, cached-property, jinja2_workarounds, pynndescent, umap-learn, everywhereml\n","Successfully installed cached-property-1.5.2 everywhereml-0.2.39 hexdump-3.3 jinja2_workarounds-0.1.0 pySerial-3.5 pynndescent-0.5.12 umap-learn-0.5.6\n","Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (2.0.3)\n","Collecting pandas\n"," Downloading pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.0 MB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.0/13.0 MB\u001b[0m \u001b[31m65.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hRequirement already satisfied: numpy>=1.22.4 in /usr/local/lib/python3.10/dist-packages (from pandas) (1.25.2)\n","Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas) (2.8.2)\n","Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas) (2023.4)\n","Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.10/dist-packages (from pandas) (2024.1)\n","Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\n","Installing collected packages: pandas\n"," Attempting uninstall: pandas\n"," Found existing installation: pandas 2.0.3\n"," Uninstalling pandas-2.0.3:\n"," Successfully uninstalled pandas-2.0.3\n","\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n","cudf-cu12 24.4.1 requires pandas<2.2.2dev0,>=2.0, but you have pandas 2.2.2 which is incompatible.\n","google-colab 1.0.0 requires pandas==2.0.3, but you have pandas 2.2.2 which is incompatible.\u001b[0m\u001b[31m\n","\u001b[0mSuccessfully installed pandas-2.2.2\n","Requirement already satisfied: scikit-learn in /usr/local/lib/python3.10/dist-packages (1.2.2)\n","Collecting scikit-learn\n"," Downloading scikit_learn-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.3 MB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.3/13.3 MB\u001b[0m \u001b[31m60.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hRequirement already satisfied: numpy>=1.19.5 in /usr/local/lib/python3.10/dist-packages (from scikit-learn) (1.25.2)\n","Requirement already satisfied: scipy>=1.6.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn) (1.11.4)\n","Requirement already satisfied: joblib>=1.2.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn) (1.4.2)\n","Requirement already satisfied: threadpoolctl>=3.1.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn) (3.5.0)\n","Installing collected packages: scikit-learn\n"," Attempting uninstall: scikit-learn\n"," Found existing installation: scikit-learn 1.2.2\n"," Uninstalling scikit-learn-1.2.2:\n"," Successfully uninstalled scikit-learn-1.2.2\n","Successfully installed scikit-learn-1.5.0\n"]}],"source":["! pip3 install -U everywhereml\n","! pip3 install -U pandas\n","! pip3 install -U scikit-learn"]},{"cell_type":"markdown","id":"russian-journalist","metadata":{"id":"russian-journalist"},"source":["### Import your dataset and inspect your data"]},{"cell_type":"code","execution_count":1,"id":"color-watson","metadata":{"id":"color-watson","outputId":"c4ed13ba-4af6-4360-c635-9e257516c1cd","executionInfo":{"status":"error","timestamp":1718182085776,"user_tz":-120,"elapsed":455,"user":{"displayName":"Albrecht Schmidt","userId":"08787995956293377973"}},"colab":{"base_uri":"https://localhost:8080/","height":339}},"outputs":[{"output_type":"error","ename":"FileNotFoundError","evalue":"[Errno 2] No such file or directory: 'Downloads/concatenated_df_3_led.csv'","traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)","\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpandas\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mdf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Downloads/concatenated_df_3_led.csv\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msep\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\",\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36mread_csv\u001b[0;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, date_format, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options, dtype_backend)\u001b[0m\n\u001b[1;32m 910\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwds_defaults\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 911\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 912\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 913\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 914\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36m_read\u001b[0;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[1;32m 575\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 576\u001b[0m \u001b[0;31m# Create the parser.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 577\u001b[0;31m \u001b[0mparser\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mTextFileReader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 578\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 579\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mchunksize\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0miterator\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[1;32m 1405\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1406\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhandles\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mIOHandles\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1407\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_make_engine\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mengine\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1408\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1409\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36m_make_engine\u001b[0;34m(self, f, engine)\u001b[0m\n\u001b[1;32m 1659\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m\"b\"\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmode\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1660\u001b[0m \u001b[0mmode\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;34m\"b\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1661\u001b[0;31m self.handles = get_handle(\n\u001b[0m\u001b[1;32m 1662\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1663\u001b[0m \u001b[0mmode\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/pandas/io/common.py\u001b[0m in \u001b[0;36mget_handle\u001b[0;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[0m\n\u001b[1;32m 857\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mioargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencoding\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;34m\"b\"\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mioargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmode\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 858\u001b[0m \u001b[0;31m# Encoding\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 859\u001b[0;31m handle = open(\n\u001b[0m\u001b[1;32m 860\u001b[0m \u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 861\u001b[0m \u001b[0mioargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmode\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'Downloads/concatenated_df_3_led.csv'"]}],"source":["import pandas as pd\n","df = pd.read_csv(\"Downloads/concatenated_df_3_led.csv\", sep=\",\")\n","df.head()"]},{"cell_type":"code","execution_count":null,"id":"horizontal-helicopter","metadata":{"id":"horizontal-helicopter","outputId":"69bfad98-a309-4ee6-b94f-51c0c9b81f40"},"outputs":[{"data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
XYZLFLVLRLabel
9010.2341310.3760990.2214361696426326221655
9020.050903-0.1556401.3604741659626742225335
9030.3093260.5063480.1016851696426054220055
904-0.300659-0.3699952.1082761621126790227895
9050.3966060.4226070.1614991734825446218935
\n","
"],"text/plain":[" X Y Z LF LV LR Label\n","901 0.234131 0.376099 0.221436 16964 26326 22165 5\n","902 0.050903 -0.155640 1.360474 16596 26742 22533 5\n","903 0.309326 0.506348 0.101685 16964 26054 22005 5\n","904 -0.300659 -0.369995 2.108276 16211 26790 22789 5\n","905 0.396606 0.422607 0.161499 17348 25446 21893 5"]},"execution_count":3,"metadata":{},"output_type":"execute_result"}],"source":["df.tail()"]},{"cell_type":"markdown","id":"vietnamese-audit","metadata":{"id":"vietnamese-audit"},"source":["* on table face up (0)\n","* right tilt (1)\n","* left tilt (2),\n","* on table facing down (3)\n","* vertical (facing the board) (4)\n","* random movements (5)"]},{"cell_type":"markdown","id":"congressional-virgin","metadata":{"id":"congressional-virgin"},"source":["### Check for class balance"]},{"cell_type":"code","execution_count":null,"id":"hindu-somalia","metadata":{"id":"hindu-somalia","outputId":"c6a1a052-dc47-4723-ce77-eb253fffc0bc"},"outputs":[{"data":{"text/plain":["Label\n","0 151\n","1 151\n","2 151\n","3 151\n","4 151\n","5 151\n","Name: count, dtype: int64"]},"execution_count":4,"metadata":{},"output_type":"execute_result"}],"source":["df.Label.value_counts()#/len(df)"]},{"cell_type":"markdown","id":"suitable-terminology","metadata":{"id":"suitable-terminology"},"source":["### Split your data into train and test set to check if your model generalizes"]},{"cell_type":"code","execution_count":null,"id":"incredible-behavior","metadata":{"id":"incredible-behavior"},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","\n","X = df[[\"X\", \"Y\", \"Z\"]].diff().iloc[1:].values\n","y = df.Label.iloc[1:].values\n","\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)"]},{"cell_type":"markdown","id":"curious-guarantee","metadata":{"id":"curious-guarantee"},"source":["### Train your model"]},{"cell_type":"code","execution_count":null,"id":"agricultural-brunswick","metadata":{"id":"agricultural-brunswick","outputId":"836cec08-dc63-4d6b-ff8a-0f43ef30ff32"},"outputs":[{"name":"stdout","output_type":"stream","text":["Score: 0.651\n"]}],"source":["from everywhereml.sklearn.ensemble import RandomForestClassifier\n","\n","max_leaf_nodes = 30\n","clf = RandomForestClassifier(n_estimators=100, max_leaf_nodes=max_leaf_nodes)\n","\n","#from sklearn.tree import DecisionTreeClassifier\n","#clf = DecisionTreeClassifier()\n","\n","clf.fit(X_train, y_train)\n","\n","print(f'Score: {clf.score(X_test, y_test):3.3f}')"]},{"cell_type":"markdown","id":"necessary-weight","metadata":{"id":"necessary-weight"},"source":["### Validate your accuracy"]},{"cell_type":"code","execution_count":null,"id":"northern-impression","metadata":{"id":"northern-impression","outputId":"44546b66-9d1c-4976-a619-74668eed27e2"},"outputs":[{"data":{"text/plain":[""]},"execution_count":7,"metadata":{},"output_type":"execute_result"},{"data":{"image/png":"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","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["from sklearn.metrics import confusion_matrix\n","import matplotlib.pyplot as plt\n","\n","y_true = y_test\n","y_pred = clf.predict(X_test)\n","\n","plt.imshow(confusion_matrix(y_true, y_pred))\n","plt.colorbar()"]},{"cell_type":"markdown","id":"charming-palmer","metadata":{"id":"charming-palmer"},"source":["### Export your model to MicoPython"]},{"cell_type":"code","execution_count":null,"id":"adequate-evening","metadata":{"id":"adequate-evening"},"outputs":[],"source":["clf.to_micropython_file(\"MyModel.py\")"]},{"cell_type":"code","execution_count":null,"id":"adolescent-junior","metadata":{"id":"adolescent-junior","outputId":"b06fb92b-f7dc-4d7e-e905-17a320182859"},"outputs":[{"data":{"text/plain":["array([0])"]},"execution_count":10,"metadata":{},"output_type":"execute_result"}],"source":["clf.predict([[0,0,0]])"]},{"cell_type":"code","execution_count":null,"id":"arbitrary-award","metadata":{"id":"arbitrary-award"},"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"},"colab":{"provenance":[]}},"nbformat":4,"nbformat_minor":5}