kimic commited on
Commit
f465598
1 Parent(s): e2f172a

Added cm and updated graph titles for clarity

Browse files
analysis.ipynb DELETED
The diff for this file is too large to render. See raw diff
 
inference_analysis.ipynb ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "metadata": {},
7
+ "outputs": [
8
+ {
9
+ "name": "stderr",
10
+ "output_type": "stream",
11
+ "text": [
12
+ "C:\\Users\\kimi\\AppData\\Local\\Temp\\ipykernel_10980\\672662318.py:5: MatplotlibDeprecationWarning: The seaborn styles shipped by Matplotlib are deprecated since 3.6, as they no longer correspond to the styles shipped by seaborn. However, they will remain available as 'seaborn-v0_8-<style>'. Alternatively, directly use the seaborn API instead.\n",
13
+ " plt.style.use(\"seaborn-whitegrid\")\n"
14
+ ]
15
+ },
16
+ {
17
+ "data": {
18
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAIYCAYAAAD9+F0NAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABIlElEQVR4nO3deVhUdf//8degIOAG5L6ld6CZoZL7voVrmqFmhXZrpYV6l1puuedet1pqWmLGrWEaFillRmVWphCapZYL2KJlKoKaIiTI/P7w53wbDyrkjOg5z8d9zXXdnPOZM+85OvH29fmcMza73W4XAAAALMOjsAsAAADAjUUDCAAAYDE0gAAAABZDAwgAAGAxNIAAAAAWQwMIAABgMTSAAAAAFkMDCAAAYDE0gMAtygr3cLfCe7SSwvrz5O8RYEQDiGvavXu3Ro0apbZt26pu3brq0KGDJkyYoMOHD7vtNTds2KB27dopODhYkyZNctlxa9WqpYULF7rseNd6rVq1amnevHl57s/NzVWrVq1Uq1YtvffeewU6dkxMjObMmXPNcf3791f//v0LdOwrmTZtmubPny9Jeu+99xzv79IjODhY7du318SJE3Xs2DGn5y5cuFC1atXK92sdPXpUTz75pH7//XfHtvbt22vs2LGSpN9++83pvCUmJhrqufvuu9WhQwe9+OKLyszMdDr+5WMvf/z93Oa1v06dOmratKkGDRqkPXv2ONV0rUd+/qyvdb7Gjh2r9u3b5/t8Sv/3Z/bbb79dcczl59WVUlJS9PDDD19zXE5OjqKiovTAAw+ofv36CgkJ0QMPPKBly5bp/PnzBX7dyz8rKSkpat++vf78888CHwswk6KFXQBubtHR0Zo5c6aaNGmiZ599VuXKldOhQ4e0bNkyxcfH680331SdOnVc/rpTp05V9erVNXv2bJUvX95lx12zZo0qVKjgsuNdi4eHhzZu3KiRI0ca9iUlJen48eP/6LhLlixR48aNrzlu8uTJ/+j4l0tISFB8fLw+/vhjp+2LFi1S2bJlJUmZmZlKTk7W66+/rk2bNmn16tWqWrWqJKlPnz5q1apVvl9v69at2rx5syZOnOj0WiVKlLjq8yZNmuT4+5iZmal9+/ZpwYIFSk1N1UsvveQ0tnfv3urTp0+exylXrtxVx54/f17Jycl67bXXNHDgQH300UcqV66c1qxZ4xiTmpqqYcOGKSIiQm3btnVsr1at2tXfvEl99NFH2rlz5zXHTZw4UR9//LEGDRqk4OBg2e12bd++XQsWLNC3336rxYsXF+h1L/+sBAYGqn379poxY0a+/hEFmBUNIK5ox44dmjFjhsLDwzV+/HjH9iZNmqhDhw4KCwvTuHHjtH79epe/9qlTp9SiRQs1adLEpcetX7++S493Lffcc4+2b9+uH374wdAof/jhh6pdu7b27t3rttcPDAx0yXFmzZqlRx99VL6+vk7ba9eurSpVqjh+btasmdq1a6ewsDBNmjRJb775piSpQoUK191433XXXdccExgY6PRn3KxZM505c0ZLlizR5MmTnRrIChUq5PvvQ15jGzdurGrVqumJJ57Qxx9/rPDwcKcxl5K2atWq3fC/d7eqI0eOKDY2VlOnTlXfvn0d21u1aqWAgADNnDlTu3btUt26da/rdQYPHqy2bdvq0Ucfdcs/YIFbAVPAuKI33nhDJUuWzDO9CggI0NixY9WxY0edPXvWsX3Dhg0KCwtTSEiIWrRooUmTJun06dOO/QsXLlRoaKg2b96s7t276+6771anTp0UGxsr6f+m8iTp1VdfdUxZ5TXlldd01cqVK9W5c2cFBwerVatWmjJlilN9l08BHz9+XOPGjVObNm1Ut25d9e7dW5999pnT69SqVUvR0dEaP368GjdurJCQED399NM6ceLENc9h48aNVaZMGX300UdO23NychQfH69u3boZnrNv3z4NGzZMTZs2VZ06ddSqVStNnz5dWVlZki5Ohf7++++KjY11nJ/33ntPd911l2JiYtSyZUu1bt1aycnJTlPAK1asMJyvpKQk1a5dWwsWLLjie9i8ebP279+v++6775rvV5KqVq2qBx98UFu3btWhQ4ckGac0Dx8+rIiICDVp0kT16tVT37599cUXX0i6OFU5btw4SVKHDh0c075/nwIuiNKlSxf4OflVsmRJtx27oL7++ms98sgjatCggSOx/+OPP676nPj4ePXo0UN169bVAw88oH379hnG5PczcvnSir//mS9cuFCLFi264thLTpw4Ibvdnueave7du2vkyJEqVaqUY9upU6c0adIkNW/eXMHBwXrwwQe1bds2x/68PivSxYS3adOmWrp06VXPD2BmNIDIk91u15YtW9SsWTP5+PjkOaZz584aNmyYI1VZvHixRowYoXr16mnBggUaOnSoPv74Y/Xv39/RvEgXp8ZeeOEFPfroo1q6dKmqVKmisWPH6uDBg6pTp45jGq13795as2aNYTruSj788EPNmTNH4eHheuONNzR06FCtW7dO06dPz3P8iRMn1Lt3b33zzTcaMWKEFi5cqMqVK2vo0KGGVHP+/PnKzc3VvHnzNHr0aG3evFkzZ868Zk0eHh7q1KmTNm7c6LR927Zt+uuvv9SuXTun7cePH1d4eLgyMzM1e/ZsRUZGqkuXLlq5cqWioqIk/d+0a5s2bZzOz4ULF/Taa69p+vTpGj58uCH969+/vxo3bqw5c+YoPT1dGRkZGjt2rO6++24NGTLkiu9h/fr1ql+/vipWrHjN93tJy5YtJV1MkS+Xm5urJ598UufOndOLL76oxYsXy8/PT0OGDNGvv/6qtm3bKiIiwvFer1ZbXsfOyclRTk6OMjMz9e2332rFihXq2bOnYfr472Mvf1ztuDk5OTp37px27dqladOmqWTJkurQoUO+ayyIK9V3eYO0bt06PfbYYypfvrzmzZuncePGaefOnerbt6/S0tLyPPamTZv09NNPKygoSIsWLVKXLl00atQopzEF+YxcTZ8+fdS7d29JF5dhXGnq/c4771TFihU1a9YsTZ06VV9++aXjH3ABAQF68sknVb16dUnSX3/9pX//+9/67LPPNGLECC1atEgVKlTQE0884WgCr/RZkaQuXbros88+U0ZGRr7fB2AmTAEjTydPntRff/3lNL13NadPn9aSJUvUp08fp3VnNWvWVHh4uN577z098sgjki6uzZoxY4aaNWsmSapevbratWunL774Qo899phjuqwgU3TSxfSwcuXKCg8Pl4eHhxo3bixfX1+dPHkyz/Fvvvmm0tPT9dFHHznWqrVp00YDBgzQiy++qPvuu08eHh6O9zFr1izHc3ft2mVo6q6ka9euio6O1p49e3T33XdLupiUdujQQd7e3k5jDxw4oNq1a+uVV15xNCzNmzfXtm3blJSUpKeeekp33XWXvLy8FBAQYDg/Tz31lNN6s7+z2WyaOXOmevTooZdeekleXl5KT0/X8uXLVbTolf9TkJCQkGdSeTWX1gWmpqYa9qWlpengwYN66qmn1KZNG0lS3bp1tWjRIv3111+6/fbbHevkLp9ivpYBAwYYtlWpUkXDhw83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u3ZauXKlnn/+efXp08dRw6X/yEsX1wBOnjxZc+bMUevWrfXnn39q0aJFql69uu68807DMQcOHKj169dr4MCBGjZsmPz9/fX+++8rISFBM2fOdGkTIl28anrFihXy8/O74k2c69atq8WLF2vp0qWqX7++fv31V73++us6f/6805rDUqVK6ccff9Q333yT73uipaena/LkyWrRooUeeOABSVKnTp00Z84ctWjRwrDO65IWLVoYfplfsnfvXkdClJmZqf379ysqKkrFihW74je43HXXXfL29tbo0aP1n//8R2XKlNHWrVu1d+9ePfroo473J0mffPKJWrdurTvuuCNf7zElJcUxXW6323XkyBG9+uqr8vX1Vb9+/ZzGHj16VN99912ex/H29s7z78zflShRQiNGjND48eM1f/58vfDCC/mq8dChQ0pPT3fZvQE9PDw0cuRIjRs3TiNGjFDPnj118uRJLVq0SKVLl9bAgQPzfN7IkSP173//W8OGDVPfvn31yy+/aMmSJU5j8vsZadu2rT788EPH9HhsbKx+/fVXp2Nd+jP94IMPVK9evTz/vvXs2VNxcXEaPXq0EhMT1aZNG0d6u2LFCnl7e+uxxx6TJIWFhemtt97SwIED9dRTT6lixYraunWrIiMj1a9fP0fCfvln5dJFJDt27JCPj88VU2rA7GgAcVURERG66667FB0drVmzZunUqVOqUKGCWrduraeeesrpX8+Xfpm/9dZbiomJkZ+fnzp37qzhw4df8VYy+dWiRQuNGTNGK1euVHx8vOrUqaNFixbpoYcecox56KGHlJ2drdWrV2vVqlXy9vZWs2bNNGrUqDynW8uWLau3335bc+fO1YwZM5Sdna0777xTixcvdsttPbp27ao33nhDXbp0uWJz+eSTT+rkyZNasWKFXn31VVWsWFH333+/bDabXn/9dcfC9scee0wzZ87U448/7rjZ8rVMnTpVGRkZmjp1qmPbxIkT1bVrVz3//PNasWJFnmvZOnXqpLi4OB0/ftywRuxS4ipdbIgu1du/f/8816RJF9On5cuXO877n3/+qerVq+uFF15w/EOhSZMmat68uebOnatt27bl+35tf2/CPDw85Ofnp/r16+ull14yJICXpgrzEhQUpA8++OCar9erVy+tWbNGMTEx6tu3b75uKrx48WLFxsZq//791xybX2Fh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ddnr9O/fXwsXLpQkTZo0SZMmTbrmczZt2qTHH3/8H7/me++9p/bt2xd43+UWLlyo/v37/+M6atWqpcTExH/8fAAoLEULuwAA7jN16lSFhYU5ft6/f78GDBggHx8fPf300y5/vRdeeCFf406dOiW+hAgACg8NIGAhtWrVUqNGjfTjjz9KupjeVa5cWYmJibLb7frggw+Unp6umTNnaufOnfL19VWPHj00dOhQeXl5SZJiYmL02muvKT09XR07dlRmZqbj+GPHjpUkzZ49W5L0v//9T2+99ZZOnDihGjVqaNSoUfLw8NDkyZOVnZ2tkJAQbdy4Uf7+/lqyZInWr1+vM2fOqF69epowYYJuv/12SdLBgwc1ZcoU7dmzR1WqVFGTJk3y/Z7Xrl2rVatW6ffff9f58+fVuHFjzZo1SwEBAZKkc+fOaezYsfr8888VEBCgJ598Uj179pQknT9//qp1AcCtiilgwCKys7OVmJiohIQEtWjRwrF969atWr16tdavXy8PDw8NGDBAQUFB+vLLL7Vq1Spt3brVMcW7bds2vfDCC5o+fbqSkpJUr1497d69O8/Xe++997R48WK9+OKL2rFjhx5++GFFRESoVq1amjp1qipVqqSdO3eqfPnymj9/vjZv3qyoqCh99dVXqlevnh577DH99ddfys7O1pNPPqmgoCAlJCRo3rx5+vTTT/P1nnft2qXp06drypQpSkxM1EcffaRffvlFK1ascIzZs2eP7r77bm3ZskUTJkzQhAkTtH37dkm6al0AcCujAQRMbOrUqWrYsKEaNmyoZs2aadq0aRo4cKD69evnGNO6dWuVL19epUqV0ubNm3X+/HmNHDlSxYoVU8WKFfXMM88oOjpakrR+/Xp17NhRzZo1U9GiRfXII4/orrvuyvO1Y2Nj1bdvX4WEhMjDw0N9+vTR8uXL5e3t7TTObrdr9erVGjlypKpWrapixYpp6NChys7O1ubNm7Vz50798ccfGj16tIoVK6agoCANHDgwX++/Zs2a+uCDD1S3bl2dPn1ax48fV0BAgI4dO+YYU7t2bfXr10+enp5q0aKFOnXqpHXr1l2zLgC4lTEFDJjY5MmTndYA5qVcuXKO///7778rPT1djRo1cmyz2+3Kzs5WWlqajh07pjp16jg9v2rVqnkeNzU1VZUqVXLads899xjGpaen69y5c3rmmWfk4fF//ybNzs52TNv6+/s7NY7VqlW76nu6xMPDQytWrFBcXJx8fX1Vq1YtnT171mn9YZUqVZyeU7FiRR04cOCadQHArYwGELA4m83m+P8VKlRQtWrVtHHjRse2s2fPKi0tTQEBAapQoYIOHz7s9PyjR48qKCjIcNyKFSvqjz/+cNo2f/589ejRw2mbv7+/ihUrpuXLl6t+/fqO7T/99JPKly+vvXv3Kj09XRkZGSpevLjjNfMjKipKX3/9teLi4lSmTBlJ0lNPPeU05vjx404/Hz58WJUrV75mXQBwK2MKGIBDu3btlJGRoWXLlun8+fP6888/NWbMGI0YMUI2m029evXSp59+qs8//1w5OTmKjY3V999/n+exwsLCtGbNGu3atUu5ubl69913FR0d7WisMjMzlZOTIw8PD/Xu3Vtz587V0aNHlZubq9jYWN1333369ddfFRISoho1amj69OnKzMzUr7/+quXLl+fr/Zw9e1ZFixaVp6encnJytG7dOn311VfKzs52jNm1a5feffddZWdn6/PPP9emTZvUp0+fa9YFALcyEkAADiVKlFBUVJRmz56tZcuWKTc3V02aNNGSJUskSQ0aNNCLL76o2bNna8SIEWratKnTBSV/1717d/35558aNWqUUlNTFRgYqMjISAUEBKhRo0a67bbb1KhRI61evVpjxozRwoUL9cgjj+jUqVOqWrWqFixY4FhfuHTpUk2aNEnNmzdXmTJl1KFDB8XHx1/z/Tz22GM6cOCA2rVrp2LFiumuu+7SI488ooSEBMeY5s2b67PPPtP06dNVpUoVvfLKK47XvVZdAHCrstm5GRcAAIClMAUMAABgMTSAAAAAFkMDCAAAYDE0gAAAABZDAwgAAGAxNIAAAAAWQwMIAABgMTSAAAAAFkMDCAAAYDE0gAAAABZDAwgAAGAx/w//GI+SygBFWgAAAABJRU5ErkJggg==",
19
+ "text/plain": [
20
+ "<Figure size 800x600 with 2 Axes>"
21
+ ]
22
+ },
23
+ "metadata": {},
24
+ "output_type": "display_data"
25
+ }
26
+ ],
27
+ "source": [
28
+ "import matplotlib.pyplot as plt\n",
29
+ "import seaborn as sns\n",
30
+ "import pandas as pd\n",
31
+ "\n",
32
+ "plt.style.use(\"seaborn-whitegrid\")\n",
33
+ "\n",
34
+ "version = 3\n",
35
+ "\n",
36
+ "# Read confusion matrix from CSV\n",
37
+ "cm_df = pd.read_csv(\n",
38
+ " f\"./output/version_{version}/confusion_matrix_inference_{version}.csv\"\n",
39
+ ")\n",
40
+ "cm = cm_df.values\n",
41
+ "\n",
42
+ "# Plotting\n",
43
+ "plt.figure(figsize=(8, 6))\n",
44
+ "sns.heatmap(cm, annot=True, fmt=\"d\", cmap=\"Blues\")\n",
45
+ "plt.title(\"Confusion Matrix (DistilBERT, Holdout Set)\")\n",
46
+ "plt.ylabel(\"True label\")\n",
47
+ "plt.xlabel(\"Predicted label\")\n",
48
+ "plt.show()"
49
+ ]
50
+ }
51
+ ],
52
+ "metadata": {
53
+ "kernelspec": {
54
+ "display_name": "torch",
55
+ "language": "python",
56
+ "name": "python3"
57
+ },
58
+ "language_info": {
59
+ "codemirror_mode": {
60
+ "name": "ipython",
61
+ "version": 3
62
+ },
63
+ "file_extension": ".py",
64
+ "mimetype": "text/x-python",
65
+ "name": "python",
66
+ "nbconvert_exporter": "python",
67
+ "pygments_lexer": "ipython3",
68
+ "version": "3.10.11"
69
+ }
70
+ },
71
+ "nbformat": 4,
72
+ "nbformat_minor": 2
73
+ }
inference_main.py CHANGED
@@ -6,7 +6,7 @@ from transformers import (
6
  )
7
  from datasets import Dataset, load_from_disk
8
  import pandas as pd
9
- from sklearn.metrics import accuracy_score, f1_score, roc_auc_score
10
  from functools import partial
11
  import os
12
 
@@ -107,9 +107,20 @@ if __name__ == "__main__":
107
 
108
  trainer = Trainer(model=model)
109
  predictions = trainer.predict(dataset)
110
- accuracy = accuracy_score(predictions.label_ids, predictions.predictions.argmax(-1))
111
- f1 = f1_score(predictions.label_ids, predictions.predictions.argmax(-1))
112
- auc_roc = roc_auc_score(predictions.label_ids, predictions.predictions.argmax(-1))
 
 
 
 
 
 
 
 
 
 
 
113
 
114
  print(f"Accuracy: {accuracy}")
115
  print(f"F1 Score: {f1}")
 
6
  )
7
  from datasets import Dataset, load_from_disk
8
  import pandas as pd
9
+ from sklearn.metrics import accuracy_score, f1_score, roc_auc_score, confusion_matrix
10
  from functools import partial
11
  import os
12
 
 
107
 
108
  trainer = Trainer(model=model)
109
  predictions = trainer.predict(dataset)
110
+
111
+ # Compute metrics
112
+ true_labels = predictions.label_ids
113
+ pred_labels = predictions.predictions.argmax(-1)
114
+ accuracy = accuracy_score(true_labels, pred_labels)
115
+ f1 = f1_score(true_labels, pred_labels)
116
+ auc_roc = roc_auc_score(true_labels, predictions.predictions[:, 1])
117
+
118
+ # Generate and save confusion matrix
119
+ cm = confusion_matrix(true_labels, pred_labels)
120
+ cm_df = pd.DataFrame(cm)
121
+ cm_filename = f"./output/version_{version}/confusion_matrix_inference_{version}.csv"
122
+ cm_df.to_csv(cm_filename, index=False)
123
+ print(f"Confusion Matrix saved to {cm_filename}")
124
 
125
  print(f"Accuracy: {accuracy}")
126
  print(f"F1 Score: {f1}")
output/version_3/confusion_matrix_inference_3.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:92e17b0d80093e9c44f667cde9f7806d424a5c4eb8401a51ebdc4822a5a195e4
3
+ size 20
train_analysis.ipynb ADDED
The diff for this file is too large to render. See raw diff