{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "[![Open in Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/justmarkham/scikit-learn-tips/master?filepath=notebooks%2F20_plot_confusion_matrix.ipynb)\n", "\n", "[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/justmarkham/scikit-learn-tips/blob/master/notebooks/20_plot_confusion_matrix.ipynb)\n", "\n", "# 🤖⚡ scikit-learn tip #20 ([video](https://www.youtube.com/watch?v=QRFMgKdF-Ug&list=PL5-da3qGB5ID7YYAqireYEew2mWVvgmj6&index=20))\n", "\n", "New in scikit-learn 0.22: Plot a confusion matrix in one line of code!\n", "\n", "Highly customizable, including the colormap, display labels, and value formatting.\n", "\n", "See example 👇" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "df = pd.read_csv('http://bit.ly/kaggletrain')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "cols = ['Pclass', 'Fare']\n", "X = df[cols]\n", "y = df['Survived']" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.metrics import plot_confusion_matrix" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "clf = LogisticRegression()\n", "clf.fit(X_train, y_train);" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# pass it a trained model: it makes predictions for X_test and compares them to y_test\n", "disp = plot_confusion_matrix(clf, X_test, y_test, cmap='Blues', values_format='d')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[122, 17],\n", " [ 48, 36]])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# print the \"normal\" confusion matrix\n", "disp.confusion_matrix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Want more tips? [View all tips on GitHub](https://github.com/justmarkham/scikit-learn-tips) or [Sign up to receive 2 tips by email every week](https://scikit-learn.tips) 💌\n", "\n", "© 2020 [Data School](https://www.dataschool.io). All rights reserved." ] } ], "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.9.4" } }, "nbformat": 4, "nbformat_minor": 4 }