diff --git "a/model/model_evaluation.ipynb" "b/model/model_evaluation.ipynb"
new file mode 100644--- /dev/null
+++ "b/model/model_evaluation.ipynb"
@@ -0,0 +1,4579 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import tensorflow as tf\n",
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import cv2\n",
+ "from PIL import Image\n",
+ "import mediapipe as mp\n",
+ "from sklearn.ensemble import RandomForestClassifier\n",
+ "import plotly.express as px\n",
+ "from sklearn.metrics import classification_report, confusion_matrix\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "from tqdm.notebook import tqdm"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Load Model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.\n",
+ "Model: \"Embedding\"\n",
+ "_________________________________________________________________\n",
+ " Layer (type) Output Shape Param # \n",
+ "=================================================================\n",
+ " input_14 (InputLayer) [(None, 478, 3)] 0 \n",
+ " \n",
+ " flatten_13 (Flatten) (None, 1434) 0 \n",
+ " \n",
+ " batch_normalization_13 (Bat (None, 1434) 5736 \n",
+ " chNormalization) \n",
+ " \n",
+ " dense_78 (Dense) (None, 1024) 1469440 \n",
+ " \n",
+ " dropout_22 (Dropout) (None, 1024) 0 \n",
+ " \n",
+ " dense_79 (Dense) (None, 16) 16400 \n",
+ " \n",
+ "=================================================================\n",
+ "Total params: 1,491,576\n",
+ "Trainable params: 1,488,708\n",
+ "Non-trainable params: 2,868\n",
+ "_________________________________________________________________\n"
+ ]
+ }
+ ],
+ "source": [
+ "model = tf.keras.models.load_model('embedding_model_2023-06-03.h5')\n",
+ "model.summary()"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Preprocessing Helper Functions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "INFO: Created TensorFlow Lite XNNPACK delegate for CPU.\n"
+ ]
+ }
+ ],
+ "source": [
+ "from model import LandmarkExtractor\n",
+ "lmk_extractor = LandmarkExtractor()\n",
+ "\n",
+ "def preprocess(landmark_extractor: LandmarkExtractor, image: bytes) -> np.ndarray:\n",
+ " array_repr = np.asarray(bytearray(image), dtype=np.uint8)\n",
+ " # Decode the image. If there is no color, cv2.IMREAD_GRAYSCALE can be used\n",
+ " try:\n",
+ " decoded_img = cv2.imdecode(array_repr, flags=cv2.IMREAD_COLOR)\n",
+ " except:\n",
+ " decoded_img = cv2.imdecode(array_repr, flags=cv2.IMREAD_GRAYSCALE)\n",
+ " landmarks = landmark_extractor.extract_landmarks_flat(decoded_img)\n",
+ " if landmarks is None:\n",
+ " return None\n",
+ " return pd.DataFrame([landmarks]).to_numpy().reshape(1, 478, -1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def extract_face(face_detection, image):\n",
+ " mp_face_detection = mp.solutions.face_detection\n",
+ " image = cv2.imdecode(image, cv2.IMREAD_COLOR)\n",
+ "\n",
+ " # Convert the image to RGB\n",
+ " image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)\n",
+ "\n",
+ " # Initialize the face detection model\n",
+ "\n",
+ " # Run the face detection model on the image\n",
+ " results = face_detection.process(image)\n",
+ " # If a face is detected, crop the image to the face box\n",
+ " if results.detections:\n",
+ " for detection in results.detections:\n",
+ " x, y, w, h = (\n",
+ " int(\n",
+ " detection.location_data.relative_bounding_box.xmin * image.shape[1]\n",
+ " ),\n",
+ " int(\n",
+ " detection.location_data.relative_bounding_box.ymin * image.shape[0]\n",
+ " ),\n",
+ " int(\n",
+ " detection.location_data.relative_bounding_box.width * image.shape[1]\n",
+ " ),\n",
+ " int(\n",
+ " detection.location_data.relative_bounding_box.height\n",
+ " * image.shape[0]\n",
+ " ),\n",
+ " )\n",
+ " cropped_image = image[y : y + h, x : x + w]\n",
+ " return cv2.cvtColor(cropped_image, cv2.COLOR_RGB2BGR)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def embed(model, image):\n",
+ " landmarks = preprocess(lmk_extractor, image)\n",
+ " if landmarks is None:\n",
+ " return None\n",
+ " return model.predict(landmarks)"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Load Datasets\n",
+ "### FER 2013"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "fer_df = pd.read_csv(\"data/fer2013/labels.clean.csv\", index_col=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def extract_label(row: pd.Series):\n",
+ " return row.drop([\"Usage\"]).sort_values(ascending=False).index[0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import os\n",
+ "\n",
+ "\n",
+ "def load_fer_dataset(df: pd.DataFrame, mode: str = \"Training\"):\n",
+ " embeddings = []\n",
+ " labels = []\n",
+ " df = df[df[\"Usage\"] == mode]\n",
+ " for image_name, row in tqdm(df.iterrows(), total=len(df)):\n",
+ " with open(os.path.join(\"data\", \"fer2013\", \"FER2013Test\" if mode == \"Test\" else \"FER2013Train\", image_name), \"rb\") as f:\n",
+ " image = f.read()\n",
+ " embeddings.append(\n",
+ " embed(model, image)\n",
+ " )\n",
+ " labels.append(\n",
+ " extract_label(row)\n",
+ " )\n",
+ " X = np.array(embeddings)\n",
+ " y = np.array(labels)\n",
+ " return X, y"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 59,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "89cdc346b673429e8031850a9a6e8550",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "0it [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "X_train, y_train = load_fer_dataset(fer_df, mode=\"Training\")\n",
+ "# X_test, y_test = load_fer_dataset(fer_df, mode=\"Testing\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X_train, X_test, y_train, y_test = train_test_split(X_train, y_train, test_size=0.2)"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Train Classifier"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 120,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# from sklearn.model_selection import GridSearchCV\n",
+ "# param_grid = {\n",
+ "# 'bootstrap': [True],\n",
+ "# 'max_depth': [80, 90, 100, 110],\n",
+ "# 'max_features': [2, 3, 4, 5],\n",
+ "# 'min_samples_leaf': [3, 4, 5],\n",
+ "# 'min_samples_split': [8, 10, 12],\n",
+ "# 'n_estimators': [100, 200, 300, 1000]\n",
+ "# }\n",
+ "# rf = RandomForestClassifier()\n",
+ "# clf = GridSearchCV(estimator = rf, param_grid = param_grid, cv = 3, verbose = 2, n_jobs = -1)\n",
+ "# clf.fit(X_train.squeeze(), y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 121,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "RandomForestClassifier()"
+ ]
+ },
+ "execution_count": 121,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "clf = RandomForestClassifier()\n",
+ "clf.fit(X_train.squeeze(), y_train)"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Evaluate Classifier"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 122,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " precision recall f1-score support\n",
+ "\n",
+ " anger 0.62 0.24 0.34 432\n",
+ " contempt 0.75 0.10 0.17 31\n",
+ " disgust 1.00 0.19 0.32 31\n",
+ " fear 0.88 0.13 0.23 116\n",
+ " happiness 0.71 0.75 0.73 1460\n",
+ " neutral 0.59 0.86 0.70 1939\n",
+ " sadness 0.51 0.17 0.26 623\n",
+ " surprise 0.69 0.57 0.62 680\n",
+ " unknown 1.00 0.14 0.24 22\n",
+ "\n",
+ " accuracy 0.63 5334\n",
+ " macro avg 0.75 0.35 0.40 5334\n",
+ "weighted avg 0.64 0.63 0.60 5334\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(classification_report(y_test, clf.predict(X_test.squeeze())))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 123,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.plotly.v1+json": {
+ "config": {
+ "plotlyServerURL": "https://plot.ly"
+ },
+ "data": [
+ {
+ "coloraxis": "coloraxis",
+ "hovertemplate": "x: %{x}
y: %{y}
color: %{z}",
+ "name": "0",
+ "type": "heatmap",
+ "x": [
+ "anger",
+ "contempt",
+ "disgust",
+ "fear",
+ "happiness",
+ "neutral",
+ "sadness",
+ "surprise",
+ "unknown"
+ ],
+ "xaxis": "x",
+ "y": [
+ "anger",
+ "contempt",
+ "disgust",
+ "fear",
+ "happiness",
+ "neutral",
+ "sadness",
+ "surprise",
+ "unknown"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 0.6167664670658682,
+ 0,
+ 0,
+ 0,
+ 0.0645577792123951,
+ 0.06609808102345416,
+ 0.03333333333333333,
+ 0.06382978723404255,
+ 0
+ ],
+ [
+ 0,
+ 0.75,
+ 0,
+ 0,
+ 0.005810200129115558,
+ 0.006751954513148543,
+ 0,
+ 0,
+ 0
+ ],
+ [
+ 0.011976047904191617,
+ 0,
+ 1,
+ 0,
+ 0.005164622336991607,
+ 0.005330490405117271,
+ 0,
+ 0,
+ 0
+ ],
+ [
+ 0.023952095808383235,
+ 0,
+ 0,
+ 0.8823529411764706,
+ 0.012911555842479019,
+ 0.01847903340440654,
+ 0.014285714285714285,
+ 0.03900709219858156,
+ 0
+ ],
+ [
+ 0.10179640718562874,
+ 0,
+ 0,
+ 0,
+ 0.7101355713363461,
+ 0.10163468372423597,
+ 0.08571428571428572,
+ 0.06914893617021277,
+ 0
+ ],
+ [
+ 0.07784431137724551,
+ 0.25,
+ 0,
+ 0.058823529411764705,
+ 0.08650742414460942,
+ 0.589907604832978,
+ 0.319047619047619,
+ 0.11170212765957446,
+ 0
+ ],
+ [
+ 0.041916167664670656,
+ 0,
+ 0,
+ 0.058823529411764705,
+ 0.07295029051000645,
+ 0.13432835820895522,
+ 0.5142857142857142,
+ 0.028368794326241134,
+ 0
+ ],
+ [
+ 0.11976047904191617,
+ 0,
+ 0,
+ 0,
+ 0.040025823111684955,
+ 0.07320540156361052,
+ 0.023809523809523808,
+ 0.6861702127659575,
+ 0
+ ],
+ [
+ 0.005988023952095809,
+ 0,
+ 0,
+ 0,
+ 0.001936733376371853,
+ 0.0042643923240938165,
+ 0.009523809523809525,
+ 0.0017730496453900709,
+ 1
+ ]
+ ]
+ }
+ ],
+ "layout": {
+ "coloraxis": {
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ]
+ },
+ "template": {
+ "data": {
+ "bar": [
+ {
+ "error_x": {
+ "color": "#2a3f5f"
+ },
+ "error_y": {
+ "color": "#2a3f5f"
+ },
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "bar"
+ }
+ ],
+ "barpolar": [
+ {
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "barpolar"
+ }
+ ],
+ "carpet": [
+ {
+ "aaxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "baxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "type": "carpet"
+ }
+ ],
+ "choropleth": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "choropleth"
+ }
+ ],
+ "contour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "contour"
+ }
+ ],
+ "contourcarpet": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "contourcarpet"
+ }
+ ],
+ "heatmap": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmap"
+ }
+ ],
+ "heatmapgl": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmapgl"
+ }
+ ],
+ "histogram": [
+ {
+ "marker": {
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "histogram"
+ }
+ ],
+ "histogram2d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2d"
+ }
+ ],
+ "histogram2dcontour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2dcontour"
+ }
+ ],
+ "mesh3d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "mesh3d"
+ }
+ ],
+ "parcoords": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "parcoords"
+ }
+ ],
+ "pie": [
+ {
+ "automargin": true,
+ "type": "pie"
+ }
+ ],
+ "scatter": [
+ {
+ "fillpattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ },
+ "type": "scatter"
+ }
+ ],
+ "scatter3d": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatter3d"
+ }
+ ],
+ "scattercarpet": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattercarpet"
+ }
+ ],
+ "scattergeo": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergeo"
+ }
+ ],
+ "scattergl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergl"
+ }
+ ],
+ "scattermapbox": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattermapbox"
+ }
+ ],
+ "scatterpolar": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolar"
+ }
+ ],
+ "scatterpolargl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolargl"
+ }
+ ],
+ "scatterternary": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterternary"
+ }
+ ],
+ "surface": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "surface"
+ }
+ ],
+ "table": [
+ {
+ "cells": {
+ "fill": {
+ "color": "#EBF0F8"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "header": {
+ "fill": {
+ "color": "#C8D4E3"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "type": "table"
+ }
+ ]
+ },
+ "layout": {
+ "annotationdefaults": {
+ "arrowcolor": "#2a3f5f",
+ "arrowhead": 0,
+ "arrowwidth": 1
+ },
+ "autotypenumbers": "strict",
+ "coloraxis": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "colorscale": {
+ "diverging": [
+ [
+ 0,
+ "#8e0152"
+ ],
+ [
+ 0.1,
+ "#c51b7d"
+ ],
+ [
+ 0.2,
+ "#de77ae"
+ ],
+ [
+ 0.3,
+ "#f1b6da"
+ ],
+ [
+ 0.4,
+ "#fde0ef"
+ ],
+ [
+ 0.5,
+ "#f7f7f7"
+ ],
+ [
+ 0.6,
+ "#e6f5d0"
+ ],
+ [
+ 0.7,
+ "#b8e186"
+ ],
+ [
+ 0.8,
+ "#7fbc41"
+ ],
+ [
+ 0.9,
+ "#4d9221"
+ ],
+ [
+ 1,
+ "#276419"
+ ]
+ ],
+ "sequential": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "sequentialminus": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ]
+ },
+ "colorway": [
+ "#636efa",
+ "#EF553B",
+ "#00cc96",
+ "#ab63fa",
+ "#FFA15A",
+ "#19d3f3",
+ "#FF6692",
+ "#B6E880",
+ "#FF97FF",
+ "#FECB52"
+ ],
+ "font": {
+ "color": "#2a3f5f"
+ },
+ "geo": {
+ "bgcolor": "white",
+ "lakecolor": "white",
+ "landcolor": "#E5ECF6",
+ "showlakes": true,
+ "showland": true,
+ "subunitcolor": "white"
+ },
+ "hoverlabel": {
+ "align": "left"
+ },
+ "hovermode": "closest",
+ "mapbox": {
+ "style": "light"
+ },
+ "paper_bgcolor": "white",
+ "plot_bgcolor": "#E5ECF6",
+ "polar": {
+ "angularaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "radialaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "scene": {
+ "xaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "yaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "zaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ }
+ },
+ "shapedefaults": {
+ "line": {
+ "color": "#2a3f5f"
+ }
+ },
+ "ternary": {
+ "aaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "baxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "caxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "title": {
+ "x": 0.05
+ },
+ "xaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ },
+ "yaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ }
+ }
+ },
+ "title": {
+ "text": "Confusion Matrix - Precision"
+ },
+ "xaxis": {
+ "anchor": "y",
+ "constrain": "domain",
+ "domain": [
+ 0,
+ 1
+ ],
+ "scaleanchor": "y",
+ "side": "top",
+ "title": {
+ "text": "Predicted"
+ }
+ },
+ "yaxis": {
+ "anchor": "x",
+ "autorange": "reversed",
+ "constrain": "domain",
+ "domain": [
+ 0,
+ 1
+ ],
+ "title": {
+ "text": "Actual"
+ }
+ }
+ }
+ }
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "cm = confusion_matrix(y_test, clf.predict(X_test.squeeze()), labels=clf.classes_, normalize=\"pred\")\n",
+ "fig = px.imshow(cm, x=clf.classes_, y=clf.classes_, title=\"Confusion Matrix - Precision\")\n",
+ "fig.update_xaxes(side=\"top\", title=\"Predicted\")\n",
+ "fig.update_yaxes(title=\"Actual\")\n",
+ "fig.show()\n",
+ "fig.write_image(\"confusion_matrix_precision.svg\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 124,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.plotly.v1+json": {
+ "config": {
+ "plotlyServerURL": "https://plot.ly"
+ },
+ "data": [
+ {
+ "coloraxis": "coloraxis",
+ "hovertemplate": "x: %{x}
y: %{y}
color: %{z}",
+ "name": "0",
+ "type": "heatmap",
+ "x": [
+ "anger",
+ "contempt",
+ "disgust",
+ "fear",
+ "happiness",
+ "neutral",
+ "sadness",
+ "surprise",
+ "unknown"
+ ],
+ "xaxis": "x",
+ "y": [
+ "anger",
+ "contempt",
+ "disgust",
+ "fear",
+ "happiness",
+ "neutral",
+ "sadness",
+ "surprise",
+ "unknown"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 0.23842592592592593,
+ 0,
+ 0,
+ 0,
+ 0.23148148148148148,
+ 0.4305555555555556,
+ 0.016203703703703703,
+ 0.08333333333333333,
+ 0
+ ],
+ [
+ 0,
+ 0.0967741935483871,
+ 0,
+ 0,
+ 0.2903225806451613,
+ 0.6129032258064516,
+ 0,
+ 0,
+ 0
+ ],
+ [
+ 0.06451612903225806,
+ 0,
+ 0.1935483870967742,
+ 0,
+ 0.25806451612903225,
+ 0.4838709677419355,
+ 0,
+ 0,
+ 0
+ ],
+ [
+ 0.034482758620689655,
+ 0,
+ 0,
+ 0.12931034482758622,
+ 0.1724137931034483,
+ 0.4482758620689655,
+ 0.02586206896551724,
+ 0.1896551724137931,
+ 0
+ ],
+ [
+ 0.011643835616438357,
+ 0,
+ 0,
+ 0,
+ 0.7534246575342466,
+ 0.1958904109589041,
+ 0.012328767123287671,
+ 0.02671232876712329,
+ 0
+ ],
+ [
+ 0.006704486848891181,
+ 0.0005157297576070139,
+ 0,
+ 0.0005157297576070139,
+ 0.06910778751933987,
+ 0.8561113976276431,
+ 0.03455389375966993,
+ 0.032490974729241874,
+ 0
+ ],
+ [
+ 0.011235955056179775,
+ 0,
+ 0,
+ 0.0016051364365971107,
+ 0.18138041733547353,
+ 0.6067415730337079,
+ 0.17335473515248795,
+ 0.025682182985553772,
+ 0
+ ],
+ [
+ 0.029411764705882353,
+ 0,
+ 0,
+ 0,
+ 0.09117647058823529,
+ 0.3029411764705882,
+ 0.007352941176470588,
+ 0.5691176470588235,
+ 0
+ ],
+ [
+ 0.045454545454545456,
+ 0,
+ 0,
+ 0,
+ 0.13636363636363635,
+ 0.5454545454545454,
+ 0.09090909090909091,
+ 0.045454545454545456,
+ 0.13636363636363635
+ ]
+ ]
+ }
+ ],
+ "layout": {
+ "coloraxis": {
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ]
+ },
+ "template": {
+ "data": {
+ "bar": [
+ {
+ "error_x": {
+ "color": "#2a3f5f"
+ },
+ "error_y": {
+ "color": "#2a3f5f"
+ },
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "bar"
+ }
+ ],
+ "barpolar": [
+ {
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "barpolar"
+ }
+ ],
+ "carpet": [
+ {
+ "aaxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "baxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "type": "carpet"
+ }
+ ],
+ "choropleth": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "choropleth"
+ }
+ ],
+ "contour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "contour"
+ }
+ ],
+ "contourcarpet": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "contourcarpet"
+ }
+ ],
+ "heatmap": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmap"
+ }
+ ],
+ "heatmapgl": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmapgl"
+ }
+ ],
+ "histogram": [
+ {
+ "marker": {
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "histogram"
+ }
+ ],
+ "histogram2d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2d"
+ }
+ ],
+ "histogram2dcontour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2dcontour"
+ }
+ ],
+ "mesh3d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "mesh3d"
+ }
+ ],
+ "parcoords": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "parcoords"
+ }
+ ],
+ "pie": [
+ {
+ "automargin": true,
+ "type": "pie"
+ }
+ ],
+ "scatter": [
+ {
+ "fillpattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ },
+ "type": "scatter"
+ }
+ ],
+ "scatter3d": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatter3d"
+ }
+ ],
+ "scattercarpet": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattercarpet"
+ }
+ ],
+ "scattergeo": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergeo"
+ }
+ ],
+ "scattergl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergl"
+ }
+ ],
+ "scattermapbox": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattermapbox"
+ }
+ ],
+ "scatterpolar": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolar"
+ }
+ ],
+ "scatterpolargl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolargl"
+ }
+ ],
+ "scatterternary": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterternary"
+ }
+ ],
+ "surface": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "surface"
+ }
+ ],
+ "table": [
+ {
+ "cells": {
+ "fill": {
+ "color": "#EBF0F8"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "header": {
+ "fill": {
+ "color": "#C8D4E3"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "type": "table"
+ }
+ ]
+ },
+ "layout": {
+ "annotationdefaults": {
+ "arrowcolor": "#2a3f5f",
+ "arrowhead": 0,
+ "arrowwidth": 1
+ },
+ "autotypenumbers": "strict",
+ "coloraxis": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "colorscale": {
+ "diverging": [
+ [
+ 0,
+ "#8e0152"
+ ],
+ [
+ 0.1,
+ "#c51b7d"
+ ],
+ [
+ 0.2,
+ "#de77ae"
+ ],
+ [
+ 0.3,
+ "#f1b6da"
+ ],
+ [
+ 0.4,
+ "#fde0ef"
+ ],
+ [
+ 0.5,
+ "#f7f7f7"
+ ],
+ [
+ 0.6,
+ "#e6f5d0"
+ ],
+ [
+ 0.7,
+ "#b8e186"
+ ],
+ [
+ 0.8,
+ "#7fbc41"
+ ],
+ [
+ 0.9,
+ "#4d9221"
+ ],
+ [
+ 1,
+ "#276419"
+ ]
+ ],
+ "sequential": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "sequentialminus": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ]
+ },
+ "colorway": [
+ "#636efa",
+ "#EF553B",
+ "#00cc96",
+ "#ab63fa",
+ "#FFA15A",
+ "#19d3f3",
+ "#FF6692",
+ "#B6E880",
+ "#FF97FF",
+ "#FECB52"
+ ],
+ "font": {
+ "color": "#2a3f5f"
+ },
+ "geo": {
+ "bgcolor": "white",
+ "lakecolor": "white",
+ "landcolor": "#E5ECF6",
+ "showlakes": true,
+ "showland": true,
+ "subunitcolor": "white"
+ },
+ "hoverlabel": {
+ "align": "left"
+ },
+ "hovermode": "closest",
+ "mapbox": {
+ "style": "light"
+ },
+ "paper_bgcolor": "white",
+ "plot_bgcolor": "#E5ECF6",
+ "polar": {
+ "angularaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "radialaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "scene": {
+ "xaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "yaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "zaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ }
+ },
+ "shapedefaults": {
+ "line": {
+ "color": "#2a3f5f"
+ }
+ },
+ "ternary": {
+ "aaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "baxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "caxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "title": {
+ "x": 0.05
+ },
+ "xaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ },
+ "yaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ }
+ }
+ },
+ "title": {
+ "text": "Confusion Matrix - Recall"
+ },
+ "xaxis": {
+ "anchor": "y",
+ "constrain": "domain",
+ "domain": [
+ 0,
+ 1
+ ],
+ "scaleanchor": "y",
+ "side": "top",
+ "title": {
+ "text": "Predicted"
+ }
+ },
+ "yaxis": {
+ "anchor": "x",
+ "autorange": "reversed",
+ "constrain": "domain",
+ "domain": [
+ 0,
+ 1
+ ],
+ "title": {
+ "text": "Actual"
+ }
+ }
+ }
+ }
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "cm = confusion_matrix(y_test, clf.predict(X_test.squeeze()), labels=clf.classes_, normalize=\"true\")\n",
+ "fig = px.imshow(cm, x=clf.classes_, y=clf.classes_, title=\"Confusion Matrix - Recall\")\n",
+ "fig.update_xaxes(side=\"top\", title=\"Predicted\")\n",
+ "fig.update_yaxes(title=\"Actual\")\n",
+ "fig.show()\n",
+ "fig.write_image(\"confusion_matrix_recall.svg\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 125,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.plotly.v1+json": {
+ "config": {
+ "plotlyServerURL": "https://plot.ly"
+ },
+ "data": [
+ {
+ "hovertemplate": "False Positive Rate=%{x}
True Positive Rate=%{y}",
+ "legendgroup": "",
+ "line": {
+ "color": "lightgrey",
+ "dash": "dot"
+ },
+ "marker": {
+ "symbol": "circle"
+ },
+ "mode": "lines",
+ "name": "",
+ "orientation": "v",
+ "showlegend": false,
+ "type": "scatter",
+ "x": [
+ 0,
+ 1
+ ],
+ "xaxis": "x",
+ "y": [
+ 0,
+ 1
+ ],
+ "yaxis": "y"
+ },
+ {
+ "name": "anger",
+ "type": "scatter",
+ "x": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0.0002039983680130559,
+ 0.0002039983680130559,
+ 0.0006119951040391676,
+ 0.0008159934720522236,
+ 0.0012239902080783353,
+ 0.0014279885760913912,
+ 0.0018359853121175031,
+ 0.002039983680130559,
+ 0.002243982048143615,
+ 0.002243982048143615,
+ 0.0024479804161566705,
+ 0.0026519787841697267,
+ 0.0032639738882088943,
+ 0.003875968992248062,
+ 0.00448796409628723,
+ 0.006119951040391677,
+ 0.006527947776417789,
+ 0.006731946144430845,
+ 0.008363933088535292,
+ 0.009383924928600572,
+ 0.011015911872705019,
+ 0.011831905344757242,
+ 0.013055895552835577,
+ 0.014891880864953081,
+ 0.015707874337005302,
+ 0.018971848225214197,
+ 0.020195838433292534,
+ 0.021215830273357814,
+ 0.02427580579355365,
+ 0.02672378620971032,
+ 0.029783761729906162,
+ 0.031619747042023666,
+ 0.03773969808241534,
+ 0.04202366381068951,
+ 0.04814361485108119,
+ 0.05752753977968176,
+ 0.06466748266013872,
+ 0.07588739290085679,
+ 0.08935128518971848,
+ 0.10607915136678907,
+ 0.12219502243982049,
+ 0.142390860873113,
+ 0.16360669114647083,
+ 0.19298245614035087,
+ 0.22031823745410037,
+ 0.2658098735210118,
+ 0.31476948184414527,
+ 0.3729090167278662,
+ 0.44104447164422683,
+ 0.5203998368013056,
+ 0.6144430844553244,
+ 0.7195022439820481,
+ 0.8339453284373725,
+ 0.9359445124439004,
+ 1
+ ],
+ "y": [
+ 0,
+ 0.0023148148148148147,
+ 0.004629629629629629,
+ 0.009259259259259259,
+ 0.016203703703703703,
+ 0.020833333333333332,
+ 0.027777777777777776,
+ 0.03009259259259259,
+ 0.034722222222222224,
+ 0.037037037037037035,
+ 0.05092592592592592,
+ 0.06944444444444445,
+ 0.07407407407407407,
+ 0.0763888888888889,
+ 0.08564814814814815,
+ 0.09259259259259259,
+ 0.09953703703703703,
+ 0.10416666666666667,
+ 0.11342592592592593,
+ 0.11805555555555555,
+ 0.12268518518518519,
+ 0.125,
+ 0.125,
+ 0.13425925925925927,
+ 0.1412037037037037,
+ 0.14351851851851852,
+ 0.14351851851851852,
+ 0.14814814814814814,
+ 0.1550925925925926,
+ 0.1712962962962963,
+ 0.18055555555555555,
+ 0.18287037037037038,
+ 0.19212962962962962,
+ 0.19907407407407407,
+ 0.2037037037037037,
+ 0.20601851851851852,
+ 0.2175925925925926,
+ 0.2222222222222222,
+ 0.2337962962962963,
+ 0.2337962962962963,
+ 0.23842592592592593,
+ 0.24537037037037038,
+ 0.25462962962962965,
+ 0.2638888888888889,
+ 0.2777777777777778,
+ 0.2847222222222222,
+ 0.2986111111111111,
+ 0.3055555555555556,
+ 0.31712962962962965,
+ 0.3263888888888889,
+ 0.33796296296296297,
+ 0.3472222222222222,
+ 0.36574074074074076,
+ 0.3888888888888889,
+ 0.39814814814814814,
+ 0.4097222222222222,
+ 0.44212962962962965,
+ 0.4583333333333333,
+ 0.4861111111111111,
+ 0.5162037037037037,
+ 0.5370370370370371,
+ 0.5555555555555556,
+ 0.5787037037037037,
+ 0.5972222222222222,
+ 0.6550925925925926,
+ 0.6967592592592593,
+ 0.7569444444444444,
+ 0.8101851851851852,
+ 0.8703703703703703,
+ 0.8958333333333334,
+ 0.9236111111111112,
+ 0.9583333333333334,
+ 0.9814814814814815,
+ 1
+ ]
+ },
+ {
+ "name": "contempt",
+ "type": "scatter",
+ "x": [
+ 0,
+ 0,
+ 0,
+ 0.00018857250612860644,
+ 0.00018857250612860644,
+ 0.00018857250612860644,
+ 0.0005657175183858194,
+ 0.0016971525551574581,
+ 0.003017160098057703,
+ 0.0035828776164435225,
+ 0.004714312653215161,
+ 0.006222892702244013,
+ 0.008108617763530078,
+ 0.013011502922873844,
+ 0.021120120686403922,
+ 0.03564020365830662,
+ 0.059966056948896854,
+ 0.12822930416745237,
+ 0.3043560248915708,
+ 1
+ ],
+ "y": [
+ 0,
+ 0.03225806451612903,
+ 0.06451612903225806,
+ 0.06451612903225806,
+ 0.0967741935483871,
+ 0.16129032258064516,
+ 0.16129032258064516,
+ 0.16129032258064516,
+ 0.16129032258064516,
+ 0.16129032258064516,
+ 0.16129032258064516,
+ 0.16129032258064516,
+ 0.16129032258064516,
+ 0.16129032258064516,
+ 0.1935483870967742,
+ 0.22580645161290322,
+ 0.3225806451612903,
+ 0.41935483870967744,
+ 0.5806451612903226,
+ 1
+ ]
+ },
+ {
+ "name": "disgust",
+ "type": "scatter",
+ "x": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0.00018857250612860644,
+ 0.00018857250612860644,
+ 0.0013200075429002452,
+ 0.002074297567414671,
+ 0.0026400150858004903,
+ 0.0035828776164435225,
+ 0.005280030171600981,
+ 0.007731472751272865,
+ 0.010560060343201961,
+ 0.013954365453516877,
+ 0.01810296058834622,
+ 0.028285875919290968,
+ 0.04525740147086555,
+ 0.07674900999434282,
+ 0.13954365453516876,
+ 0.3049217424099566,
+ 1
+ ],
+ "y": [
+ 0,
+ 0.03225806451612903,
+ 0.12903225806451613,
+ 0.1935483870967742,
+ 0.1935483870967742,
+ 0.25806451612903225,
+ 0.25806451612903225,
+ 0.25806451612903225,
+ 0.25806451612903225,
+ 0.25806451612903225,
+ 0.2903225806451613,
+ 0.2903225806451613,
+ 0.2903225806451613,
+ 0.2903225806451613,
+ 0.2903225806451613,
+ 0.2903225806451613,
+ 0.3225806451612903,
+ 0.3225806451612903,
+ 0.3870967741935484,
+ 0.5161290322580645,
+ 1
+ ]
+ },
+ {
+ "name": "fear",
+ "type": "scatter",
+ "x": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0.0003832886163280951,
+ 0.0003832886163280951,
+ 0.0011498658489842851,
+ 0.0011498658489842851,
+ 0.0015331544653123803,
+ 0.0017247987734764277,
+ 0.002491376006132618,
+ 0.0034495975469528554,
+ 0.0045994633959371405,
+ 0.006899195093905711,
+ 0.008240705251054043,
+ 0.009965504024530471,
+ 0.013031812955155231,
+ 0.01686469911843618,
+ 0.022039095438865466,
+ 0.028363357608279034,
+ 0.0346876197776926,
+ 0.046186278267535456,
+ 0.06305097738597164,
+ 0.08681487159831353,
+ 0.11345343043311613,
+ 0.15619011115369874,
+ 0.21636642391720967,
+ 0.3049060942889996,
+ 0.4350325795323879,
+ 0.6435415868148716,
+ 1
+ ],
+ "y": [
+ 0,
+ 0.017241379310344827,
+ 0.07758620689655173,
+ 0.10344827586206896,
+ 0.11206896551724138,
+ 0.12931034482758622,
+ 0.13793103448275862,
+ 0.13793103448275862,
+ 0.14655172413793102,
+ 0.16379310344827586,
+ 0.1724137931034483,
+ 0.1896551724137931,
+ 0.19827586206896552,
+ 0.19827586206896552,
+ 0.20689655172413793,
+ 0.20689655172413793,
+ 0.21551724137931033,
+ 0.22413793103448276,
+ 0.22413793103448276,
+ 0.2413793103448276,
+ 0.25862068965517243,
+ 0.27586206896551724,
+ 0.28448275862068967,
+ 0.3017241379310345,
+ 0.3448275862068966,
+ 0.3879310344827586,
+ 0.4224137931034483,
+ 0.4827586206896552,
+ 0.5172413793103449,
+ 0.6206896551724138,
+ 0.75,
+ 0.8448275862068966,
+ 0.9051724137931034,
+ 1
+ ]
+ },
+ {
+ "name": "happiness",
+ "type": "scatter",
+ "x": [
+ 0,
+ 0,
+ 0.0002581311306143521,
+ 0.0002581311306143521,
+ 0.0007743933918430562,
+ 0.0010325245224574084,
+ 0.0015487867836861124,
+ 0.002065049044914817,
+ 0.0023231801755291687,
+ 0.002581311306143521,
+ 0.002581311306143521,
+ 0.002581311306143521,
+ 0.002839442436757873,
+ 0.0038719669592152815,
+ 0.004646360351058337,
+ 0.004646360351058337,
+ 0.004646360351058337,
+ 0.005678884873515746,
+ 0.006453278265358802,
+ 0.0074858027878162104,
+ 0.008260196179659268,
+ 0.009034589571502324,
+ 0.010583376355188436,
+ 0.010841507485802787,
+ 0.011615900877645843,
+ 0.0123902942694889,
+ 0.012906556530717605,
+ 0.014971605575632421,
+ 0.016520392359318535,
+ 0.017811048012390293,
+ 0.01987609705730511,
+ 0.020908621579762518,
+ 0.021424883840991223,
+ 0.022715539494062985,
+ 0.02348993288590604,
+ 0.024264326277749097,
+ 0.02607124419204956,
+ 0.02710376871450697,
+ 0.028652555498193084,
+ 0.030459473412493547,
+ 0.031233866804336603,
+ 0.03252452245740836,
+ 0.03536396489416624,
+ 0.037945276200309755,
+ 0.03949406298399587,
+ 0.040268456375838924,
+ 0.04155911202891069,
+ 0.04336602994321115,
+ 0.04568921011874032,
+ 0.04827052142488384,
+ 0.05162622612287042,
+ 0.05420753742901394,
+ 0.058079504388229224,
+ 0.060918946824987094,
+ 0.06375838926174497,
+ 0.06659783169850284,
+ 0.06866288074341766,
+ 0.07098606091894683,
+ 0.07356737222509034,
+ 0.07769747031491998,
+ 0.08182756840474961,
+ 0.0867320598864223,
+ 0.09034589571502323,
+ 0.09473412493546722,
+ 0.09989674754775425,
+ 0.10325245224574084,
+ 0.10764068146618483,
+ 0.11590087764584409,
+ 0.12132163138874548,
+ 0.12700051626226122,
+ 0.13319566339700567,
+ 0.14042333505420754,
+ 0.14713474445018068,
+ 0.156169334021683,
+ 0.1644295302013423,
+ 0.17268972638100155,
+ 0.18198244708311823,
+ 0.1933402168301497,
+ 0.2057305110996386,
+ 0.21889519876097058,
+ 0.23154362416107382,
+ 0.24754775425916364,
+ 0.2638100154878678,
+ 0.2798141455859577,
+ 0.2947857511615901,
+ 0.3141455859576665,
+ 0.3335054207537429,
+ 0.35389778007227674,
+ 0.38229220443985545,
+ 0.408363448631905,
+ 0.43469282395456893,
+ 0.4692823954568921,
+ 0.5012906556530717,
+ 0.5451729478575116,
+ 0.5890552400619514,
+ 0.6381001548786783,
+ 0.6892101187403201,
+ 0.7449664429530202,
+ 0.8100154878678368,
+ 0.8822922044398555,
+ 0.9509550851832731,
+ 1
+ ],
+ "y": [
+ 0,
+ 0.004794520547945206,
+ 0.023287671232876714,
+ 0.038356164383561646,
+ 0.056164383561643834,
+ 0.07328767123287672,
+ 0.09246575342465753,
+ 0.11643835616438356,
+ 0.13767123287671232,
+ 0.1541095890410959,
+ 0.17602739726027397,
+ 0.19383561643835617,
+ 0.21095890410958903,
+ 0.22534246575342465,
+ 0.23835616438356164,
+ 0.2547945205479452,
+ 0.2705479452054795,
+ 0.28013698630136985,
+ 0.2945205479452055,
+ 0.3061643835616438,
+ 0.31575342465753425,
+ 0.32945205479452055,
+ 0.3445205479452055,
+ 0.3595890410958904,
+ 0.3726027397260274,
+ 0.38082191780821917,
+ 0.3972602739726027,
+ 0.40342465753424656,
+ 0.4089041095890411,
+ 0.41575342465753423,
+ 0.4273972602739726,
+ 0.436986301369863,
+ 0.4520547945205479,
+ 0.4657534246575342,
+ 0.47534246575342465,
+ 0.48424657534246573,
+ 0.4958904109589041,
+ 0.5082191780821917,
+ 0.5184931506849315,
+ 0.5287671232876713,
+ 0.541095890410959,
+ 0.552054794520548,
+ 0.5561643835616439,
+ 0.5595890410958904,
+ 0.5678082191780822,
+ 0.5808219178082191,
+ 0.5924657534246576,
+ 0.6013698630136987,
+ 0.6089041095890411,
+ 0.6171232876712329,
+ 0.6287671232876713,
+ 0.6383561643835617,
+ 0.6458904109589041,
+ 0.6506849315068494,
+ 0.6616438356164384,
+ 0.6671232876712329,
+ 0.673972602739726,
+ 0.6801369863013699,
+ 0.689041095890411,
+ 0.6965753424657535,
+ 0.7068493150684931,
+ 0.7123287671232876,
+ 0.7171232876712329,
+ 0.7232876712328767,
+ 0.7315068493150685,
+ 0.7397260273972602,
+ 0.7452054794520548,
+ 0.7520547945205479,
+ 0.7623287671232877,
+ 0.7691780821917809,
+ 0.7753424657534247,
+ 0.7856164383561643,
+ 0.7945205479452054,
+ 0.802054794520548,
+ 0.8089041095890411,
+ 0.8171232876712329,
+ 0.8267123287671233,
+ 0.8376712328767123,
+ 0.8431506849315068,
+ 0.8541095890410959,
+ 0.8650684931506849,
+ 0.8705479452054794,
+ 0.8815068493150685,
+ 0.8883561643835617,
+ 0.8972602739726028,
+ 0.9034246575342466,
+ 0.9116438356164384,
+ 0.9198630136986301,
+ 0.9294520547945205,
+ 0.9376712328767123,
+ 0.947945205479452,
+ 0.958904109589041,
+ 0.963013698630137,
+ 0.9684931506849315,
+ 0.9767123287671233,
+ 0.9828767123287672,
+ 0.9883561643835617,
+ 0.9917808219178083,
+ 0.9952054794520548,
+ 0.9972602739726028,
+ 0.9993150684931507,
+ 1
+ ]
+ },
+ {
+ "name": "neutral",
+ "type": "scatter",
+ "x": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0.0002945508100147275,
+ 0.0014727540500736377,
+ 0.002061855670103093,
+ 0.00235640648011782,
+ 0.003240058910162003,
+ 0.00471281296023564,
+ 0.006480117820324006,
+ 0.008836524300441826,
+ 0.009720176730486009,
+ 0.012371134020618556,
+ 0.013254786450662739,
+ 0.015905743740795286,
+ 0.01796759941089838,
+ 0.021207658321060384,
+ 0.02533136966126657,
+ 0.03004418262150221,
+ 0.033873343151693665,
+ 0.03858615611192931,
+ 0.04477172312223859,
+ 0.048600883652430045,
+ 0.05419734904270987,
+ 0.05949926362297496,
+ 0.06597938144329897,
+ 0.07187039764359351,
+ 0.07717231222385862,
+ 0.08306332842415316,
+ 0.0910162002945508,
+ 0.10279823269513991,
+ 0.11251840942562592,
+ 0.11899852724594992,
+ 0.1272459499263623,
+ 0.13932253313696613,
+ 0.14904270986745213,
+ 0.15964653902798231,
+ 0.17025036818851252,
+ 0.18055964653902798,
+ 0.18792341678939617,
+ 0.19764359351988217,
+ 0.206480117820324,
+ 0.21561119293078057,
+ 0.22503681885125185,
+ 0.23446244477172312,
+ 0.24477172312223858,
+ 0.25537555228276876,
+ 0.26480117820324006,
+ 0.275699558173785,
+ 0.282179675994109,
+ 0.29013254786450665,
+ 0.3004418262150221,
+ 0.3089837997054492,
+ 0.31752577319587627,
+ 0.32430044182621504,
+ 0.3328424153166421,
+ 0.3399116347569956,
+ 0.34963181148748157,
+ 0.35670103092783506,
+ 0.3670103092783505,
+ 0.3764359351988218,
+ 0.3867452135493373,
+ 0.3949926362297496,
+ 0.40471281296023565,
+ 0.41502209131075113,
+ 0.42209131075110456,
+ 0.43122238586156114,
+ 0.442120765832106,
+ 0.44860088365243006,
+ 0.4592047128129602,
+ 0.4703976435935199,
+ 0.4810014727540501,
+ 0.49543446244477174,
+ 0.5057437407952872,
+ 0.5166421207658322,
+ 0.5325478645066274,
+ 0.5452135493372606,
+ 0.5575846833578793,
+ 0.5699558173784978,
+ 0.5885125184094256,
+ 0.5994108983799705,
+ 0.6147275405007364,
+ 0.6297496318114875,
+ 0.6506627393225332,
+ 0.6783505154639176,
+ 0.7078055964653903,
+ 0.7443298969072165,
+ 0.7849779086892489,
+ 0.8318114874815906,
+ 0.9083946980854197,
+ 1
+ ],
+ "y": [
+ 0,
+ 0.0010314595152140279,
+ 0.0030943785456420837,
+ 0.0036101083032490976,
+ 0.0046415678184631255,
+ 0.008767405879319236,
+ 0.010314595152140279,
+ 0.012893243940175348,
+ 0.019082001031459517,
+ 0.028365136668385766,
+ 0.033522434244455904,
+ 0.0407426508509541,
+ 0.04951005673027334,
+ 0.06549767921609077,
+ 0.07323362558019597,
+ 0.08818978855079938,
+ 0.10159876224858175,
+ 0.11191335740072202,
+ 0.12532233109850438,
+ 0.13976276431150078,
+ 0.15317173800928313,
+ 0.16915936049510058,
+ 0.18772563176895307,
+ 0.20629190304280556,
+ 0.22279525528623,
+ 0.2439401753481176,
+ 0.2619907168643631,
+ 0.28313563692625066,
+ 0.30582774626095927,
+ 0.31975244971634864,
+ 0.34244455905105725,
+ 0.36204228984012377,
+ 0.37493553378029915,
+ 0.3965961835997937,
+ 0.4151624548736462,
+ 0.43063434760185665,
+ 0.44971634863331617,
+ 0.46828261990716863,
+ 0.4847859721505931,
+ 0.5090252707581228,
+ 0.5286230015471892,
+ 0.5492521918514698,
+ 0.5673027333677153,
+ 0.591026302217638,
+ 0.6126869520371325,
+ 0.6322846828261991,
+ 0.6518824136152656,
+ 0.6740587931923672,
+ 0.6915936049510056,
+ 0.7101598762248582,
+ 0.7307890665291388,
+ 0.7478081485301702,
+ 0.7596699329551315,
+ 0.7756575554409489,
+ 0.7875193398659103,
+ 0.8060856111397627,
+ 0.815368746776689,
+ 0.8236204228984012,
+ 0.8421866941722538,
+ 0.850438370293966,
+ 0.8586900464156781,
+ 0.8684889118102115,
+ 0.8834450747808148,
+ 0.890149561629706,
+ 0.8953068592057761,
+ 0.9014956162970603,
+ 0.9092315626611656,
+ 0.9164517792676637,
+ 0.9216090768437338,
+ 0.9283135636926251,
+ 0.9350180505415162,
+ 0.9391438886023724,
+ 0.9443011861784425,
+ 0.9489427539969056,
+ 0.9525528623001547,
+ 0.9571944301186178,
+ 0.961835997937081,
+ 0.9638989169675091,
+ 0.9654461062403301,
+ 0.9675090252707581,
+ 0.9695719443011862,
+ 0.9716348633316142,
+ 0.9747292418772563,
+ 0.9773078906652913,
+ 0.9804022692109334,
+ 0.9819494584837545,
+ 0.9824651882413615,
+ 0.9840123775141826,
+ 0.9865910263022176,
+ 0.9896854048478597,
+ 0.9922640536358948,
+ 0.9953584321815369,
+ 0.9953584321815369,
+ 0.9979370809695719,
+ 0.998968540484786,
+ 1
+ ]
+ },
+ {
+ "name": "sadness",
+ "type": "scatter",
+ "x": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0.0004245383145828911,
+ 0.0006368074718743367,
+ 0.0006368074718743367,
+ 0.0006368074718743367,
+ 0.0006368074718743367,
+ 0.0008490766291657822,
+ 0.0008490766291657822,
+ 0.0008490766291657822,
+ 0.0008490766291657822,
+ 0.0008490766291657822,
+ 0.0010613457864572277,
+ 0.0014858841010401188,
+ 0.002334960730205901,
+ 0.0025472298874973467,
+ 0.0031840373593716833,
+ 0.003396306516663129,
+ 0.0036085756739545746,
+ 0.004245383145828911,
+ 0.006792613033326258,
+ 0.008915304606240713,
+ 0.010825727021863723,
+ 0.011462534493738059,
+ 0.013160687752069624,
+ 0.013585226066652516,
+ 0.014646571853109743,
+ 0.015920186796858415,
+ 0.018679685841647208,
+ 0.021651454043727446,
+ 0.02334960730205901,
+ 0.025047760560390576,
+ 0.027807259605179366,
+ 0.030779027807259607,
+ 0.03459987263850563,
+ 0.04118021651454044,
+ 0.04542559966036935,
+ 0.04945871364890681,
+ 0.05540225005306729,
+ 0.06283167055826788,
+ 0.07111016769263426,
+ 0.0764168966249204,
+ 0.085756739545744,
+ 0.09573338993844195,
+ 0.10549777117384844,
+ 0.1169603056675865,
+ 0.1290596476331989,
+ 0.14328168117172574,
+ 0.16047548291233285,
+ 0.18042878369772872,
+ 0.20399066015707917,
+ 0.22776480577372107,
+ 0.257270218637232,
+ 0.28592655487157714,
+ 0.31713012099341964,
+ 0.3515177244746338,
+ 0.39460836340479727,
+ 0.4347272341328805,
+ 0.47675652727658674,
+ 0.5281256633411165,
+ 0.5816174909785609,
+ 0.64168966249204,
+ 0.7032477181065592,
+ 0.7633198896200382,
+ 0.8210571004033114,
+ 0.8853746550626194,
+ 0.9426873275313097,
+ 1
+ ],
+ "y": [
+ 0,
+ 0.0032102728731942215,
+ 0.004815409309791332,
+ 0.009630818619582664,
+ 0.011235955056179775,
+ 0.01765650080256822,
+ 0.019261637239165328,
+ 0.02247191011235955,
+ 0.024077046548956663,
+ 0.027287319422150885,
+ 0.033707865168539325,
+ 0.04333868378812199,
+ 0.04654895666131621,
+ 0.052969502407704656,
+ 0.05778491171749599,
+ 0.06581059390048154,
+ 0.06741573033707865,
+ 0.07062600321027288,
+ 0.0754414125200642,
+ 0.07704654895666131,
+ 0.08667736757624397,
+ 0.09309791332263243,
+ 0.09309791332263243,
+ 0.09309791332263243,
+ 0.09309791332263243,
+ 0.09470304975922954,
+ 0.09470304975922954,
+ 0.09630818619582665,
+ 0.10112359550561797,
+ 0.10112359550561797,
+ 0.11396468699839486,
+ 0.12680577849117175,
+ 0.13001605136436598,
+ 0.13643659711075443,
+ 0.13964686998394862,
+ 0.15248796147672553,
+ 0.15569823434991975,
+ 0.15730337078651685,
+ 0.1637239165329053,
+ 0.17174959871589085,
+ 0.1781701444622793,
+ 0.19101123595505617,
+ 0.20385232744783308,
+ 0.20706260032102727,
+ 0.21348314606741572,
+ 0.2231139646869984,
+ 0.23595505617977527,
+ 0.2504012841091493,
+ 0.27608346709470305,
+ 0.2857142857142857,
+ 0.30337078651685395,
+ 0.33226324237560195,
+ 0.3467094703049759,
+ 0.36757624398073835,
+ 0.39807383627608345,
+ 0.42857142857142855,
+ 0.4606741573033708,
+ 0.48314606741573035,
+ 0.507223113964687,
+ 0.5296950240770465,
+ 0.5489566613162119,
+ 0.5810593900481541,
+ 0.5987158908507223,
+ 0.6276083467094703,
+ 0.6581059390048154,
+ 0.6837881219903692,
+ 0.7255216693418941,
+ 0.7544141252006421,
+ 0.7881219903691814,
+ 0.8202247191011236,
+ 0.8619582664526485,
+ 0.8956661316211878,
+ 0.9149277688603531,
+ 0.9438202247191011,
+ 0.9630818619582665,
+ 0.9839486356340289,
+ 0.9951845906902087,
+ 1
+ ]
+ },
+ {
+ "name": "surprise",
+ "type": "scatter",
+ "x": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0.00021486892995272884,
+ 0.0004297378599054577,
+ 0.0004297378599054577,
+ 0.0006446067898581865,
+ 0.0006446067898581865,
+ 0.0006446067898581865,
+ 0.0008594757198109154,
+ 0.0008594757198109154,
+ 0.0008594757198109154,
+ 0.001289213579716373,
+ 0.0015040825096691017,
+ 0.0017189514396218307,
+ 0.0019338203695745595,
+ 0.002793296089385475,
+ 0.002793296089385475,
+ 0.0030081650193382035,
+ 0.0040825096691018475,
+ 0.004941985388912763,
+ 0.004941985388912763,
+ 0.0053717232488182205,
+ 0.0058014611087236784,
+ 0.006016330038676407,
+ 0.006446067898581865,
+ 0.006875805758487323,
+ 0.007950150408250967,
+ 0.008165019338203695,
+ 0.008594757198109154,
+ 0.009454232917920068,
+ 0.009883970777825527,
+ 0.010313708637730984,
+ 0.01095831542758917,
+ 0.011817791147400086,
+ 0.012247529007305543,
+ 0.01289213579716373,
+ 0.013966480446927373,
+ 0.015255694026643748,
+ 0.015470562956596476,
+ 0.01675977653631285,
+ 0.017834121186076492,
+ 0.01847872797593468,
+ 0.019338203695745595,
+ 0.019767941555651054,
+ 0.02191663085517834,
+ 0.022776106574989255,
+ 0.024280189084658357,
+ 0.02556940266437473,
+ 0.026643747314138374,
+ 0.028577567683712935,
+ 0.03094112591319295,
+ 0.03330468414267297,
+ 0.03545337344220026,
+ 0.03824666953158573,
+ 0.04061022776106575,
+ 0.04254404813064031,
+ 0.04555221314997851,
+ 0.047700902449505804,
+ 0.05156854318865492,
+ 0.05500644606789858,
+ 0.05951869359690589,
+ 0.06446067898581866,
+ 0.06940266437473142,
+ 0.07391491190373872,
+ 0.08079071766222604,
+ 0.08551783412118608,
+ 0.09110442629995702,
+ 0.09798023205844435,
+ 0.10550064460678986,
+ 0.11388053287494629,
+ 0.12204555221314999,
+ 0.13107004727116459,
+ 0.14331757627847014,
+ 0.15900300816501933,
+ 0.17533304684142673,
+ 0.19058874086807048,
+ 0.2058444348947142,
+ 0.23227331327889988,
+ 0.2617103566824237,
+ 0.29329608938547486,
+ 0.33175762784701335,
+ 0.3760206274172755,
+ 0.4230769230769231,
+ 0.48667812634293084,
+ 0.5620971207563387,
+ 0.6504082509669102,
+ 0.7556940266437473,
+ 0.8725827245380318,
+ 1
+ ],
+ "y": [
+ 0,
+ 0.010294117647058823,
+ 0.011764705882352941,
+ 0.014705882352941176,
+ 0.027941176470588237,
+ 0.03235294117647059,
+ 0.03823529411764706,
+ 0.04264705882352941,
+ 0.052941176470588235,
+ 0.0661764705882353,
+ 0.07647058823529412,
+ 0.08529411764705883,
+ 0.09117647058823529,
+ 0.10441176470588236,
+ 0.11470588235294117,
+ 0.125,
+ 0.13088235294117648,
+ 0.13970588235294118,
+ 0.15,
+ 0.16176470588235295,
+ 0.17058823529411765,
+ 0.18235294117647058,
+ 0.2,
+ 0.21176470588235294,
+ 0.22058823529411764,
+ 0.23088235294117648,
+ 0.24705882352941178,
+ 0.2514705882352941,
+ 0.25588235294117645,
+ 0.2676470588235294,
+ 0.2823529411764706,
+ 0.2911764705882353,
+ 0.2985294117647059,
+ 0.31029411764705883,
+ 0.3220588235294118,
+ 0.33088235294117646,
+ 0.3352941176470588,
+ 0.3397058823529412,
+ 0.35,
+ 0.3588235294117647,
+ 0.36911764705882355,
+ 0.37941176470588234,
+ 0.38529411764705884,
+ 0.3911764705882353,
+ 0.40147058823529413,
+ 0.4102941176470588,
+ 0.4176470588235294,
+ 0.42058823529411765,
+ 0.4279411764705882,
+ 0.4338235294117647,
+ 0.43676470588235294,
+ 0.4441176470588235,
+ 0.45,
+ 0.4602941176470588,
+ 0.47058823529411764,
+ 0.47205882352941175,
+ 0.47794117647058826,
+ 0.48823529411764705,
+ 0.5,
+ 0.5029411764705882,
+ 0.5117647058823529,
+ 0.5235294117647059,
+ 0.5323529411764706,
+ 0.5397058823529411,
+ 0.55,
+ 0.5558823529411765,
+ 0.5632352941176471,
+ 0.5705882352941176,
+ 0.5794117647058824,
+ 0.5955882352941176,
+ 0.6073529411764705,
+ 0.6191176470588236,
+ 0.6338235294117647,
+ 0.65,
+ 0.6647058823529411,
+ 0.6779411764705883,
+ 0.6911764705882353,
+ 0.7,
+ 0.7102941176470589,
+ 0.7161764705882353,
+ 0.7220588235294118,
+ 0.7338235294117647,
+ 0.7426470588235294,
+ 0.7617647058823529,
+ 0.775,
+ 0.7867647058823529,
+ 0.8,
+ 0.8117647058823529,
+ 0.8191176470588235,
+ 0.8397058823529412,
+ 0.8588235294117647,
+ 0.8676470588235294,
+ 0.8808823529411764,
+ 0.9029411764705882,
+ 0.9235294117647059,
+ 0.9352941176470588,
+ 0.9529411764705882,
+ 0.9632352941176471,
+ 0.9691176470588235,
+ 0.975,
+ 0.9882352941176471,
+ 1
+ ]
+ },
+ {
+ "name": "unknown",
+ "type": "scatter",
+ "x": [
+ 0,
+ 0,
+ 0,
+ 0.0007530120481927711,
+ 0.0013177710843373493,
+ 0.0015060240963855422,
+ 0.0018825301204819277,
+ 0.0026355421686746986,
+ 0.0028237951807228916,
+ 0.003953313253012048,
+ 0.006400602409638554,
+ 0.008847891566265061,
+ 0.012989457831325301,
+ 0.021649096385542167,
+ 0.03765060240963856,
+ 0.06532379518072289,
+ 0.13328313253012047,
+ 0.3205948795180723,
+ 1
+ ],
+ "y": [
+ 0,
+ 0.045454545454545456,
+ 0.13636363636363635,
+ 0.13636363636363635,
+ 0.13636363636363635,
+ 0.13636363636363635,
+ 0.13636363636363635,
+ 0.13636363636363635,
+ 0.13636363636363635,
+ 0.13636363636363635,
+ 0.13636363636363635,
+ 0.18181818181818182,
+ 0.18181818181818182,
+ 0.18181818181818182,
+ 0.18181818181818182,
+ 0.3181818181818182,
+ 0.36363636363636365,
+ 0.5909090909090909,
+ 1
+ ]
+ }
+ ],
+ "layout": {
+ "legend": {
+ "tracegroupgap": 0
+ },
+ "template": {
+ "data": {
+ "bar": [
+ {
+ "error_x": {
+ "color": "#2a3f5f"
+ },
+ "error_y": {
+ "color": "#2a3f5f"
+ },
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "bar"
+ }
+ ],
+ "barpolar": [
+ {
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "barpolar"
+ }
+ ],
+ "carpet": [
+ {
+ "aaxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "baxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "type": "carpet"
+ }
+ ],
+ "choropleth": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "choropleth"
+ }
+ ],
+ "contour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "contour"
+ }
+ ],
+ "contourcarpet": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "contourcarpet"
+ }
+ ],
+ "heatmap": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmap"
+ }
+ ],
+ "heatmapgl": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmapgl"
+ }
+ ],
+ "histogram": [
+ {
+ "marker": {
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "histogram"
+ }
+ ],
+ "histogram2d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2d"
+ }
+ ],
+ "histogram2dcontour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2dcontour"
+ }
+ ],
+ "mesh3d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "mesh3d"
+ }
+ ],
+ "parcoords": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "parcoords"
+ }
+ ],
+ "pie": [
+ {
+ "automargin": true,
+ "type": "pie"
+ }
+ ],
+ "scatter": [
+ {
+ "fillpattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ },
+ "type": "scatter"
+ }
+ ],
+ "scatter3d": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatter3d"
+ }
+ ],
+ "scattercarpet": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattercarpet"
+ }
+ ],
+ "scattergeo": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergeo"
+ }
+ ],
+ "scattergl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergl"
+ }
+ ],
+ "scattermapbox": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattermapbox"
+ }
+ ],
+ "scatterpolar": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolar"
+ }
+ ],
+ "scatterpolargl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolargl"
+ }
+ ],
+ "scatterternary": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterternary"
+ }
+ ],
+ "surface": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "surface"
+ }
+ ],
+ "table": [
+ {
+ "cells": {
+ "fill": {
+ "color": "#EBF0F8"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "header": {
+ "fill": {
+ "color": "#C8D4E3"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "type": "table"
+ }
+ ]
+ },
+ "layout": {
+ "annotationdefaults": {
+ "arrowcolor": "#2a3f5f",
+ "arrowhead": 0,
+ "arrowwidth": 1
+ },
+ "autotypenumbers": "strict",
+ "coloraxis": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "colorscale": {
+ "diverging": [
+ [
+ 0,
+ "#8e0152"
+ ],
+ [
+ 0.1,
+ "#c51b7d"
+ ],
+ [
+ 0.2,
+ "#de77ae"
+ ],
+ [
+ 0.3,
+ "#f1b6da"
+ ],
+ [
+ 0.4,
+ "#fde0ef"
+ ],
+ [
+ 0.5,
+ "#f7f7f7"
+ ],
+ [
+ 0.6,
+ "#e6f5d0"
+ ],
+ [
+ 0.7,
+ "#b8e186"
+ ],
+ [
+ 0.8,
+ "#7fbc41"
+ ],
+ [
+ 0.9,
+ "#4d9221"
+ ],
+ [
+ 1,
+ "#276419"
+ ]
+ ],
+ "sequential": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "sequentialminus": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ]
+ },
+ "colorway": [
+ "#636efa",
+ "#EF553B",
+ "#00cc96",
+ "#ab63fa",
+ "#FFA15A",
+ "#19d3f3",
+ "#FF6692",
+ "#B6E880",
+ "#FF97FF",
+ "#FECB52"
+ ],
+ "font": {
+ "color": "#2a3f5f"
+ },
+ "geo": {
+ "bgcolor": "white",
+ "lakecolor": "white",
+ "landcolor": "#E5ECF6",
+ "showlakes": true,
+ "showland": true,
+ "subunitcolor": "white"
+ },
+ "hoverlabel": {
+ "align": "left"
+ },
+ "hovermode": "closest",
+ "mapbox": {
+ "style": "light"
+ },
+ "paper_bgcolor": "white",
+ "plot_bgcolor": "#E5ECF6",
+ "polar": {
+ "angularaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "radialaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "scene": {
+ "xaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "yaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "zaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ }
+ },
+ "shapedefaults": {
+ "line": {
+ "color": "#2a3f5f"
+ }
+ },
+ "ternary": {
+ "aaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "baxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "caxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "title": {
+ "x": 0.05
+ },
+ "xaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ },
+ "yaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ }
+ }
+ },
+ "title": {
+ "text": "ROC Curve"
+ },
+ "xaxis": {
+ "anchor": "y",
+ "domain": [
+ 0,
+ 1
+ ],
+ "title": {
+ "text": "False Positive Rate"
+ }
+ },
+ "yaxis": {
+ "anchor": "x",
+ "domain": [
+ 0,
+ 1
+ ],
+ "title": {
+ "text": "True Positive Rate"
+ }
+ }
+ }
+ }
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# plot roc curve using plotly express\n",
+ "from cv2 import line\n",
+ "from sklearn.metrics import roc_curve, auc\n",
+ "\n",
+ "y_score = clf.predict_proba(X_test.squeeze())\n",
+ "fpr = dict()\n",
+ "tpr = dict()\n",
+ "roc_auc = dict()\n",
+ "for i, class_name in enumerate(clf.classes_):\n",
+ " fpr[i], tpr[i], _ = roc_curve(y_test == clf.classes_[i], y_score[:, i])\n",
+ " roc_auc[class_name] = auc(fpr[i], tpr[i])\n",
+ "\n",
+ "# plot roc curve\n",
+ "fig = px.line(\n",
+ " x=[0, 1],\n",
+ " y=[0, 1],\n",
+ " title=\"ROC Curve\",\n",
+ " labels=dict(x=\"False Positive Rate\", y=\"True Positive Rate\"),\n",
+ " color_discrete_sequence=[\"lightgrey\"],\n",
+ " line_dash_sequence=[\"dot\"],\n",
+ ")\n",
+ "for i in range(len(clf.classes_)):\n",
+ " fig.add_scatter(\n",
+ " x=fpr[i],\n",
+ " y=tpr[i],\n",
+ " name=f\"{clf.classes_[i]}\",\n",
+ " )\n",
+ "fig.show()\n",
+ "fig.write_image(\"roc_curve.svg\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 126,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'anger': 0.7750016055427112,\n",
+ " 'contempt': 0.6764034964992427,\n",
+ " 'disgust': 0.6472994592227163,\n",
+ " 'fear': 0.7823449333209975,\n",
+ " 'happiness': 0.9045211844329247,\n",
+ " 'neutral': 0.8308803636084676,\n",
+ " 'sadness': 0.7416447554696789,\n",
+ " 'surprise': 0.8969975226876312,\n",
+ " 'unknown': 0.6664199411281488}"
+ ]
+ },
+ "execution_count": 126,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "roc_auc"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": ".venv",
+ "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.7.9"
+ },
+ "orig_nbformat": 4
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}