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 +}