Last active
April 13, 2020 19:19
-
-
Save ilyar/096c794ed069ffdc18c6a1e26a8bba4d to your computer and use it in GitHub Desktop.
Confusion matrix, Accuracy, Precision, Recall and F1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "iVBORw0KGgoAAAANSUhEUgAAAScAAAEqCAYAAABXxJafAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAQ4klEQVR4nO3debBdBX3A8e8vCSFoSiEQEApJKk4JiIhsBcEUqRaq0w4qYw0qS6ColdZ1UKtS0BEUrdsoRbRIEVBUqiICtRhkV0QWpSDIElDZwiKyxIjJr3+c8/DxfMF3k/vu+eH9fmbe5N5zl/ObZPKdc84799zITCSpmildDyBJ4zFOkkoyTpJKMk6SSjJOkkqa1vUAT2bDDTfMuXPndT2GBuhnD/666xE0QA/d8wuW/eqBGO+x0nGaO3cel3z/iq7H0AC97czruh5BA/SVw1+5ysfcrZNUknGSVJJxklSScZJUknGSVJJxklSScZJUknGSVJJxklSScZJUknGSVJJxklSScZJUknGSVJJxklSScZJUknGSVJJxklSScZJUknGSVJJxklSScZJUknGSVJJxklSScZJUknGSVJJxklSScZJUknGSVJJxklSScZJUknGSVJJxklSScZJUknGSVJJxklSScZJUknGSVJJxklSScZJUknGSVJJxklSScZJUknGSVJJxklSScZJUknGSVJJxklSScZJUknGSVJJxklSScZJUknGSVJJxklTStK4H0O+87pBFnHP2WczeaCN+ePW1XY+jAZg2JXjLgnlMmxJMnQJX/eIhvnX90q7HKsEtp0Jee8CBfOOsc7seQwP025XJJy9awjGLb+Ho79zC1hvPZN7663Q9VgnGqZDdX7CAWbNmdT2GBmz5igRg6pRgiv8jH+dundSxAN655zOZPXM6F9x8P0seWNb1SCUMtNMR8bKIyIiYP8j1SpUlcMziW3j3OTcyb9Y6bLLu2l2PVMKgNyIXAhcDrxrweqXylj22kp8ufYStN57Z9SglDCxOETET2A04GOMkATBz+lTWWav5b7jWlGDLjWZy90PLO56qhkEec9oHODczb4yI+yNi+8y8cuyTIuJQ4FCAzefMGeB43dv/NQu56ILvcu+997LFvM147xFHceCig7seS5No3RnT2H/HTZkSQQBX/uJXXHvXw12PVcIg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\n", | |
| "text/plain": [ | |
| "<Figure size 432x288 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Accuracy: 0.6\n", | |
| "Precision: 0.625\n", | |
| "Recall: 0.8333333333333334\n", | |
| "F1: 0.7142857142857143\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "import numpy as np\n", | |
| "import itertools\n", | |
| "import sklearn\n", | |
| "import matplotlib\n", | |
| "\n", | |
| "import matplotlib.pyplot as plt\n", | |
| "\n", | |
| "from sklearn.datasets import make_classification\n", | |
| "from sklearn.model_selection import train_test_split\n", | |
| "from sklearn.metrics import confusion_matrix\n", | |
| "from sklearn.metrics import accuracy_score, recall_score, precision_score, f1_score\n", | |
| "\n", | |
| "class_names = ['A','B']\n", | |
| "y_test = [1,1,1,1,1,1,0,0,0,0]\n", | |
| "y_pred = [1,1,1,1,1,0,0,1,1,1]\n", | |
| "\n", | |
| "matrix = confusion_matrix(y_test, y_pred)\n", | |
| "\n", | |
| "\n", | |
| "# plot the matrix per se\n", | |
| "plt.imshow(matrix, interpolation='nearest', cmap=plt.cm.Blues)\n", | |
| "\n", | |
| " \n", | |
| "fmt = 'd'\n", | |
| "\n", | |
| "# write the number of predictions in each bucket\n", | |
| "thresh = matrix.max() / 2.\n", | |
| "for i, j in itertools.product(range(matrix.shape[0]), range(matrix.shape[1])):\n", | |
| "\n", | |
| " # if background is dark, use a white number, and vice-versa\n", | |
| " plt.text(j, i, format(matrix[i, j], fmt),\n", | |
| " horizontalalignment=\"center\",\n", | |
| " color=\"white\" if matrix[i, j] > thresh else \"black\")\n", | |
| " \n", | |
| "tick_marks = np.arange(len(class_names))\n", | |
| "\n", | |
| "plt.xticks(tick_marks, class_names)\n", | |
| "plt.yticks(tick_marks, class_names)\n", | |
| "plt.tight_layout()\n", | |
| "\n", | |
| "plt.ylabel('Expected',size=14)\n", | |
| "plt.xlabel('Predicted',size=14)\n", | |
| "\n", | |
| "plt.show()\n", | |
| "\n", | |
| "\n", | |
| "print('Accuracy:', accuracy_score(y_test, y_pred))\n", | |
| "print('Precision:', precision_score(y_test, y_pred))\n", | |
| "print('Recall:', recall_score(y_test, y_pred))\n", | |
| "print('F1:', f1_score(y_test, y_pred))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Python 3", | |
| "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.6" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 4 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment