diff --git a/TestEtiquetado.ipynb b/TestEtiquetado.ipynb
index b2daefb..abf76c7 100644
--- a/TestEtiquetado.ipynb
+++ b/TestEtiquetado.ipynb
@@ -772,7 +772,7 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": null,
"id": "09039cdf",
"metadata": {},
"outputs": [
@@ -796,6 +796,17 @@
"text": [
"Report html/OpenBCI_report_sv.html was generated.\n"
]
+ },
+ {
+ "ename": "",
+ "evalue": "",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[1;31mThe Kernel crashed while executing code in the current cell or a previous cell. \n",
+ "\u001b[1;31mPlease review the code in the cell(s) to identify a possible cause of the failure. \n",
+ "\u001b[1;31mClick here for more info. \n",
+ "\u001b[1;31mView Jupyter log for further details."
+ ]
}
],
"source": [
diff --git a/classifier.ipynb b/classifier.ipynb
new file mode 100644
index 0000000..9ed332f
--- /dev/null
+++ b/classifier.ipynb
@@ -0,0 +1,149 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import os\n",
+ "from sklearn.ensemble import RandomForestClassifier\n",
+ "from sklearn.model_selection import cross_val_score\n",
+ "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "random_state = 19"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Data Preparation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Column Analog Channel 0 has only one unique value, dropping it\n",
+ "Column Analog Channel 1 has only one unique value, dropping it\n",
+ "Column Analog Channel 2 has only one unique value, dropping it\n",
+ "Column Marker Channel has only one unique value, dropping it\n",
+ "X shape: (164078, 24)\n",
+ "y shape: (164078,)\n"
+ ]
+ }
+ ],
+ "source": [
+ "dataset = pd.read_csv(os.path.join(\"csv\", 'openbci.csv'))\n",
+ "# Clean the dataset\n",
+ "dataset = dataset.drop(columns=['Timestamp'])\n",
+ "for column in dataset.columns:\n",
+ " if dataset[column].unique().size == 1:\n",
+ " print(f\"Column {column} has only one unique value, dropping it\")\n",
+ " dataset = dataset.drop(columns=[column])\n",
+ "X = dataset.iloc[:, :-1].values\n",
+ "y = dataset.iloc[:,-1].values\n",
+ "print(f\"X shape: {X.shape}\")\n",
+ "print(f\"y shape: {y.shape}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Cross Validation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Accuracy: 0.4630296656648129 (+/- 0.07850119996254491)\n"
+ ]
+ }
+ ],
+ "source": [
+ "clf = RandomForestClassifier(n_estimators=100, n_jobs=-1, random_state=random_state)\n",
+ "clf.fit(X,y)\n",
+ "scores = cross_val_score(clf, X, y, cv=5, n_jobs=-1)\n",
+ "print(f\"Accuracy: {np.mean(scores)} (+/- {np.std(scores)})\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Confusion Matrix"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=random_state)\n",
+ "clf.fit(X_train, y_train)\n",
+ "y_pred = clf.predict(X_test)\n",
+ "cm = confusion_matrix(y_test, y_pred)\n",
+ "disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=clf.classes_)\n",
+ "disp.plot()"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "base",
+ "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.11.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}