{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
Please cite us if you use the software
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Example-7 (How to plot via seaborn+pandas)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Install seaborn,pandas" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: seaborn in c:\\users\\sepkjaer\\appdata\\local\\programs\\python\\python35-32\\lib\\site-packages (0.9.0)\n", "Requirement already satisfied: matplotlib>=1.4.3 in c:\\users\\sepkjaer\\appdata\\local\\programs\\python\\python35-32\\lib\\site-packages (from seaborn) (3.0.3)\n", "Requirement already satisfied: numpy>=1.9.3 in c:\\users\\sepkjaer\\appdata\\local\\programs\\python\\python35-32\\lib\\site-packages (from seaborn) (1.15.2)\n", "Requirement already satisfied: pandas>=0.15.2 in c:\\users\\sepkjaer\\appdata\\local\\programs\\python\\python35-32\\lib\\site-packages (from seaborn) (0.22.0)\n", "Requirement already satisfied: scipy>=0.14.0 in c:\\users\\sepkjaer\\appdata\\local\\programs\\python\\python35-32\\lib\\site-packages (from seaborn) (1.1.0)\n", "Requirement already satisfied: python-dateutil>=2.1 in c:\\users\\sepkjaer\\appdata\\local\\programs\\python\\python35-32\\lib\\site-packages (from matplotlib>=1.4.3->seaborn) (2.6.1)\n", "Requirement already satisfied: kiwisolver>=1.0.1 in c:\\users\\sepkjaer\\appdata\\local\\programs\\python\\python35-32\\lib\\site-packages (from matplotlib>=1.4.3->seaborn) (1.0.1)\n", "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in c:\\users\\sepkjaer\\appdata\\local\\programs\\python\\python35-32\\lib\\site-packages (from matplotlib>=1.4.3->seaborn) (2.2.0)\n", "Requirement already satisfied: cycler>=0.10 in c:\\users\\sepkjaer\\appdata\\local\\programs\\python\\python35-32\\lib\\site-packages (from matplotlib>=1.4.3->seaborn) (0.10.0)\n", "Requirement already satisfied: pytz>=2011k in c:\\users\\sepkjaer\\appdata\\local\\programs\\python\\python35-32\\lib\\site-packages (from pandas>=0.15.2->seaborn) (2018.3)\n", "Requirement already satisfied: six>=1.5 in c:\\users\\sepkjaer\\appdata\\local\\programs\\python\\python35-32\\lib\\site-packages (from python-dateutil>=2.1->matplotlib>=1.4.3->seaborn) (1.11.0)\n", "Requirement already satisfied: setuptools in c:\\users\\sepkjaer\\appdata\\local\\programs\\python\\python35-32\\lib\\site-packages (from kiwisolver>=1.0.1->matplotlib>=1.4.3->seaborn) (40.9.0)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING: You are using pip version 20.0.2; however, version 20.1.1 is available.\n", "You should consider upgrading via the 'C:\\Users\\Sepkjaer\\AppData\\Local\\Programs\\Python\\Python35-32\\python.exe -m pip install --upgrade pip' command.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pandas in c:\\users\\sepkjaer\\appdata\\local\\programs\\python\\python35-32\\lib\\site-packages (0.22.0)\n", "Requirement already satisfied: numpy>=1.9.0 in c:\\users\\sepkjaer\\appdata\\local\\programs\\python\\python35-32\\lib\\site-packages (from pandas) (1.15.2)\n", "Requirement already satisfied: python-dateutil>=2 in c:\\users\\sepkjaer\\appdata\\local\\programs\\python\\python35-32\\lib\\site-packages (from pandas) (2.6.1)\n", "Requirement already satisfied: pytz>=2011k in c:\\users\\sepkjaer\\appdata\\local\\programs\\python\\python35-32\\lib\\site-packages (from pandas) (2018.3)\n", "Requirement already satisfied: six>=1.5 in c:\\users\\sepkjaer\\appdata\\local\\programs\\python\\python35-32\\lib\\site-packages (from python-dateutil>=2->pandas) (1.11.0)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING: You are using pip version 20.0.2; however, version 20.1.1 is available.\n", "You should consider upgrading via the 'C:\\Users\\Sepkjaer\\AppData\\Local\\Programs\\Python\\Python35-32\\python.exe -m pip install --upgrade pip' command.\n" ] } ], "source": [ "import sys\n", "!{sys.executable} -m pip install seaborn;\n", "!{sys.executable} -m pip install pandas;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plotting" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from pandas import *\n", "import seaborn as sns\n", "from pycm import *\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def plot_confusion_matrix(cm,normalize=False,title='Confusion matrix',annot=False,cmap=\"YlGnBu\"):\n", " if normalize == True:\n", " df = DataFrame(cm.normalized_matrix).T.fillna(0)\n", " else:\n", " df = DataFrame(cm.matrix).T.fillna(0)\n", " ax = sns.heatmap(df,annot=annot,cmap=cmap)\n", " ax.set_title(title)\n", " ax.set(xlabel='Predict', ylabel='Actual')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "