Skip to content

Instantly share code, notes, and snippets.

@firmai
Last active February 26, 2024 21:19
Show Gist options
  • Save firmai/c984629eb84c87127bd2d0cb7946969d to your computer and use it in GitHub Desktop.
Save firmai/c984629eb84c87127bd2d0cb7946969d to your computer and use it in GitHub Desktop.
Financial Complaints Classification.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/firmai/c984629eb84c87127bd2d0cb7946969d/financial-complaints-classification.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "aiVrbpKHdhYZ"
},
"source": [
"Text Classification"
]
},
{
"cell_type": "markdown",
"source": [],
"metadata": {
"id": "GtBFFJyLSaPn"
}
},
{
"cell_type": "markdown",
"metadata": {
"id": "HUDYuepddhYf"
},
"source": [
"It is estimated that 80% of all data is unstructured. Unstructured data is the messy stuff every quantitative analyst tries to traditionally stay away from. It can include images of accidents, text notes of loss adjusters, social media comments, claim documents and reviews of medical doctors etc. How can actuaries make use of these kinds of data to add value to the insurer and what techniques are available for handling these types of data? <br><br>\n",
"In the insurance industry, text data appears everywhere but is generally more prevalent in the marketing, sales and claims. Listed below are some of the possible areas in which an insurer can benefit from text data analytics: <br><br>\n",
"* **General Insurance**\n",
" * Sentiment analysis from customer feedback\n",
" * Chatbots for product recommendations and customer service\n",
" * Automation of claims management process\n",
"* **Life Insurance**\n",
" * Increase accuracy of underwriting process with the use of context analysis from social media platforms\n",
" * Improved customer service through timely responses on coverage, billing ect. especially with the massive library of PDSes\n",
"* **Investments**\n",
" * Recommendation systems based on risk appetite identification from client conversations\n",
"\n",
"<br>\n",
"In this article, we are going to be looking at one of the topics within Natural Language Processing: Text Classification. The way we are going to handle this problem can be split into 3 distinct parts: <br>\n",
"1. Importing and cleaning the dataset <br>\n",
"2. Transforming text to numerical features <br>\n",
"3. Classifying the complaints using supervised learning techniques"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "VGRcKj9ydhYg"
},
"source": [
"### Tools and Packages"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ZSii7CmmdhYg"
},
"source": [
"The article uses [Python3](https://www.python.org/) and the main packages that we will be using are listed below:\n",
"* [Pandas](https://pandas.pydata.org/) and [Numpy](http://www.numpy.org/) for general data manipulation\n",
"* [Matplotlib](https://matplotlib.org/) and [Seaborn](https://seaborn.pydata.org/) for general data visualisation\n",
"* [Sci-kit](http://scikit-learn.org/stable/) learn packages for both feature extraction and classification model"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-16T08:11:13.909398Z",
"start_time": "2018-11-16T08:11:09.586504Z"
},
"id": "KTNZXQRydhYh"
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import warnings\n",
"import pyarrow.parquet as pq\n",
"from collections import defaultdict\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"from sklearn.preprocessing import LabelEncoder\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.feature_extraction.text import TfidfVectorizer\n",
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn import metrics"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2uBqqyugdhYi"
},
"source": [
"### Run the code from your browser"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Pd_9bOPidhYk"
},
"source": [
"## Importing and Cleaning Data"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "70TizekNdhYl"
},
"source": [
"The dataset we are using here consists of information regarding finance related complaints that a company has received from its customers.\n",
"It is provided by an open source data library managed by the U.S. General Services Administration and can be downloaded [here](https://catalog.data.gov/dataset/consumer-complaint-database).\n",
"<br><br>\n",
"Since we are trying to predict the category of products based on the complaints received, we can ignore the rest of the columns for the purposes of this exercise and only focus at 2 of them, in particular:\n",
"* Description - Narrative of customer's complaint\n",
"* Product - The category of financial products which the complaint relates to\n",
"<br><br>\n",
"\n",
"We will also get rid of null entries as they will not be of any use to us."
]
},
{
"cell_type": "code",
"source": [
"!wget https://files.consumerfinance.gov/ccdb/complaints.csv.zip"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "zDiyE31Rd2Mb",
"outputId": "e17c19fe-3091-4222-a36e-2707580a5afb"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"--2023-10-23 10:21:55-- https://files.consumerfinance.gov/ccdb/complaints.csv.zip\n",
"Resolving files.consumerfinance.gov (files.consumerfinance.gov)... 13.35.116.98, 13.35.116.61, 13.35.116.20, ...\n",
"Connecting to files.consumerfinance.gov (files.consumerfinance.gov)|13.35.116.98|:443... connected.\n",
"HTTP request sent, awaiting response... 200 OK\n",
"Length: 659978547 (629M) [binary/octet-stream]\n",
"Saving to: ‘complaints.csv.zip’\n",
"\n",
"complaints.csv.zip 100%[===================>] 629.40M 94.2MB/s in 6.7s \n",
"\n",
"2023-10-23 10:22:01 (94.5 MB/s) - ‘complaints.csv.zip’ saved [659978547/659978547]\n",
"\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"from zipfile import ZipFile\n",
"\n",
"with ZipFile('complaints.csv.zip', 'r') as zipObj:\n",
" # Extract all the contents of zip file in current directory\n",
" zipObj.extractall()"
],
"metadata": {
"id": "JHV5GYizd-pn"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"## grabbing 1% of the data\n",
"import pandas as pd\n",
"import random\n",
"random.seed(10)\n",
"\n",
"p= 0.01\n",
"df = pd.read_csv(\"complaints.csv\",skiprows=lambda i: i>0 and random.random() > p)"
],
"metadata": {
"id": "WsUVPiDqeJnt"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 712
},
"id": "twY8lccthrkq",
"outputId": "5d2bd255-b7fc-4eb8-89fb-2c89682bb070"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Date received Product \\\n",
"0 2023-10-06 Credit reporting or other personal consumer re... \n",
"1 2023-10-05 Credit reporting or other personal consumer re... \n",
"2 2023-10-19 Debt collection \n",
"3 2023-10-06 Checking or savings account \n",
"4 2023-10-05 Credit reporting or other personal consumer re... \n",
"\n",
" Sub-product Issue \\\n",
"0 Credit reporting Problem with a company's investigation into an... \n",
"1 Credit reporting Incorrect information on your report \n",
"2 Medical debt Attempts to collect debt not owed \n",
"3 Checking account Managing an account \n",
"4 Credit reporting Incorrect information on your report \n",
"\n",
" Sub-issue \\\n",
"0 Their investigation did not fix an error on yo... \n",
"1 Information belongs to someone else \n",
"2 Debt was result of identity theft \n",
"3 Banking errors \n",
"4 Information belongs to someone else \n",
"\n",
" Consumer complaint narrative \\\n",
"0 NaN \n",
"1 NaN \n",
"2 NaN \n",
"3 XX/XX/2023 Wells Fargo own Transaction record ... \n",
"4 NaN \n",
"\n",
" Company public response \\\n",
"0 NaN \n",
"1 NaN \n",
"2 Company has responded to the consumer and the ... \n",
"3 Company has responded to the consumer and the ... \n",
"4 NaN \n",
"\n",
" Company State ZIP code Tags \\\n",
"0 LD Holdings Group, LLC CA 92563 NaN \n",
"1 Experian Information Solutions Inc. CT 06112 NaN \n",
"2 Ability Recovery Services, LLC TX 76210 NaN \n",
"3 WELLS FARGO & COMPANY NV 89084 NaN \n",
"4 Experian Information Solutions Inc. TX 75212 NaN \n",
"\n",
" Consumer consent provided? Submitted via Date sent to company \\\n",
"0 NaN Web 2023-10-06 \n",
"1 Other Web 2023-10-05 \n",
"2 Consent not provided Web 2023-10-19 \n",
"3 Consent provided Web 2023-10-06 \n",
"4 NaN Web 2023-10-05 \n",
"\n",
" Company response to consumer Timely response? Consumer disputed? \\\n",
"0 In progress Yes NaN \n",
"1 In progress Yes NaN \n",
"2 Closed with explanation Yes NaN \n",
"3 Closed with explanation Yes NaN \n",
"4 In progress Yes NaN \n",
"\n",
" Complaint ID \n",
"0 7658108 \n",
"1 7648067 \n",
"2 7728101 \n",
"3 7649539 \n",
"4 7652371 "
],
"text/html": [
"\n",
" <div id=\"df-242792ea-91a3-4d79-adee-8e0e991a242d\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Date received</th>\n",
" <th>Product</th>\n",
" <th>Sub-product</th>\n",
" <th>Issue</th>\n",
" <th>Sub-issue</th>\n",
" <th>Consumer complaint narrative</th>\n",
" <th>Company public response</th>\n",
" <th>Company</th>\n",
" <th>State</th>\n",
" <th>ZIP code</th>\n",
" <th>Tags</th>\n",
" <th>Consumer consent provided?</th>\n",
" <th>Submitted via</th>\n",
" <th>Date sent to company</th>\n",
" <th>Company response to consumer</th>\n",
" <th>Timely response?</th>\n",
" <th>Consumer disputed?</th>\n",
" <th>Complaint ID</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2023-10-06</td>\n",
" <td>Credit reporting or other personal consumer re...</td>\n",
" <td>Credit reporting</td>\n",
" <td>Problem with a company's investigation into an...</td>\n",
" <td>Their investigation did not fix an error on yo...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>LD Holdings Group, LLC</td>\n",
" <td>CA</td>\n",
" <td>92563</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Web</td>\n",
" <td>2023-10-06</td>\n",
" <td>In progress</td>\n",
" <td>Yes</td>\n",
" <td>NaN</td>\n",
" <td>7658108</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2023-10-05</td>\n",
" <td>Credit reporting or other personal consumer re...</td>\n",
" <td>Credit reporting</td>\n",
" <td>Incorrect information on your report</td>\n",
" <td>Information belongs to someone else</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Experian Information Solutions Inc.</td>\n",
" <td>CT</td>\n",
" <td>06112</td>\n",
" <td>NaN</td>\n",
" <td>Other</td>\n",
" <td>Web</td>\n",
" <td>2023-10-05</td>\n",
" <td>In progress</td>\n",
" <td>Yes</td>\n",
" <td>NaN</td>\n",
" <td>7648067</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2023-10-19</td>\n",
" <td>Debt collection</td>\n",
" <td>Medical debt</td>\n",
" <td>Attempts to collect debt not owed</td>\n",
" <td>Debt was result of identity theft</td>\n",
" <td>NaN</td>\n",
" <td>Company has responded to the consumer and the ...</td>\n",
" <td>Ability Recovery Services, LLC</td>\n",
" <td>TX</td>\n",
" <td>76210</td>\n",
" <td>NaN</td>\n",
" <td>Consent not provided</td>\n",
" <td>Web</td>\n",
" <td>2023-10-19</td>\n",
" <td>Closed with explanation</td>\n",
" <td>Yes</td>\n",
" <td>NaN</td>\n",
" <td>7728101</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2023-10-06</td>\n",
" <td>Checking or savings account</td>\n",
" <td>Checking account</td>\n",
" <td>Managing an account</td>\n",
" <td>Banking errors</td>\n",
" <td>XX/XX/2023 Wells Fargo own Transaction record ...</td>\n",
" <td>Company has responded to the consumer and the ...</td>\n",
" <td>WELLS FARGO &amp; COMPANY</td>\n",
" <td>NV</td>\n",
" <td>89084</td>\n",
" <td>NaN</td>\n",
" <td>Consent provided</td>\n",
" <td>Web</td>\n",
" <td>2023-10-06</td>\n",
" <td>Closed with explanation</td>\n",
" <td>Yes</td>\n",
" <td>NaN</td>\n",
" <td>7649539</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2023-10-05</td>\n",
" <td>Credit reporting or other personal consumer re...</td>\n",
" <td>Credit reporting</td>\n",
" <td>Incorrect information on your report</td>\n",
" <td>Information belongs to someone else</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Experian Information Solutions Inc.</td>\n",
" <td>TX</td>\n",
" <td>75212</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Web</td>\n",
" <td>2023-10-05</td>\n",
" <td>In progress</td>\n",
" <td>Yes</td>\n",
" <td>NaN</td>\n",
" <td>7652371</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-242792ea-91a3-4d79-adee-8e0e991a242d')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-242792ea-91a3-4d79-adee-8e0e991a242d button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-242792ea-91a3-4d79-adee-8e0e991a242d');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-3283ac38-0bf8-4526-829a-c1a8f320c6ab\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-3283ac38-0bf8-4526-829a-c1a8f320c6ab')\"\n",
" title=\"Suggest charts.\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-3283ac38-0bf8-4526-829a-c1a8f320c6ab button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" </div>\n",
" </div>\n"
]
},
"metadata": {},
"execution_count": 5
}
]
},
{
"cell_type": "code",
"source": [
"df.columns"
],
"metadata": {
"id": "H-uMo7VPxQ2z",
"outputId": "f07e951c-2065-4dce-f928-ebe5eec6c508",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Index(['Date received', 'Product', 'Sub-product', 'Issue', 'Sub-issue',\n",
" 'Consumer complaint narrative', 'Company public response', 'Company',\n",
" 'State', 'ZIP code', 'Tags', 'Consumer consent provided?',\n",
" 'Submitted via', 'Date sent to company', 'Company response to consumer',\n",
" 'Timely response?', 'Consumer disputed?', 'Complaint ID'],\n",
" dtype='object')"
]
},
"metadata": {},
"execution_count": 6
}
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-16T08:14:46.980471Z",
"start_time": "2018-11-16T08:11:13.917382Z"
},
"scrolled": true,
"id": "UZXJ5t6BdhYl",
"outputId": "28841b96-4a01-4d42-efcd-7f1c559ed9bf",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 293
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" description \\\n",
"0 XX/XX/2023 Wells Fargo own Transaction record clearly showed that {$4500.00} disappeared from my checking account without any knowledge or approval. The missing money was paid to another person account under \" XXXX XXXX '' Wells Fargo blamed me f... \n",
"1 My credit card was lost, I noticed some unauthorized charges appeared on my statement. I notified the credit company regarding the unauthorized charges but they denied the claim. \n",
"2 I contacted XXXX XXXX at XXXX XXXX XXXX, XXXX XXXX, Kansas, to inquire about a test drive for a vehicle shown on their website. I informed the salesman that I was interested in a newer model but saw that their car was comparable to the one that I... \n",
"5 I checked my credit report and found that some of the data were incorrect. The three credit bureaus are required by Sections 609 ( a ) ( 1 ) ( A ) and 611 ( a ) ( 1 ) to verify these items ( A ). It is not permitted to report these items as unver... \n",
"7 I was driving my boyfriend car but the car is registered to me. I was a secondary driver on insurance policy. I was in a motor vehicle accident XX/XX/XXXX. I was hit by a driver and had no fault. The person the vehicle belonged too was not the dr... \n",
"\n",
" target \n",
"0 Checking or savings account \n",
"1 Credit card \n",
"2 Credit reporting or other personal consumer reports \n",
"5 Credit reporting or other personal consumer reports \n",
"7 Debt collection "
],
"text/html": [
"\n",
" <div id=\"df-ee9d3b45-2d4f-474a-abd7-fd1a71545406\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>description</th>\n",
" <th>target</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>XX/XX/2023 Wells Fargo own Transaction record clearly showed that {$4500.00} disappeared from my checking account without any knowledge or approval. The missing money was paid to another person account under \" XXXX XXXX '' Wells Fargo blamed me f...</td>\n",
" <td>Checking or savings account</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>My credit card was lost, I noticed some unauthorized charges appeared on my statement. I notified the credit company regarding the unauthorized charges but they denied the claim.</td>\n",
" <td>Credit card</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>I contacted XXXX XXXX at XXXX XXXX XXXX, XXXX XXXX, Kansas, to inquire about a test drive for a vehicle shown on their website. I informed the salesman that I was interested in a newer model but saw that their car was comparable to the one that I...</td>\n",
" <td>Credit reporting or other personal consumer reports</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>I checked my credit report and found that some of the data were incorrect. The three credit bureaus are required by Sections 609 ( a ) ( 1 ) ( A ) and 611 ( a ) ( 1 ) to verify these items ( A ). It is not permitted to report these items as unver...</td>\n",
" <td>Credit reporting or other personal consumer reports</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>I was driving my boyfriend car but the car is registered to me. I was a secondary driver on insurance policy. I was in a motor vehicle accident XX/XX/XXXX. I was hit by a driver and had no fault. The person the vehicle belonged too was not the dr...</td>\n",
" <td>Debt collection</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-ee9d3b45-2d4f-474a-abd7-fd1a71545406')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-ee9d3b45-2d4f-474a-abd7-fd1a71545406 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-ee9d3b45-2d4f-474a-abd7-fd1a71545406');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-339ca14d-ab06-41fa-abbb-ede1f0e19713\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-339ca14d-ab06-41fa-abbb-ede1f0e19713')\"\n",
" title=\"Suggest charts.\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-339ca14d-ab06-41fa-abbb-ede1f0e19713 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" </div>\n",
" </div>\n"
]
},
"metadata": {},
"execution_count": 7
}
],
"source": [
"df = df.loc[(df['Consumer complaint narrative'].notnull()), ['Consumer complaint narrative', 'Product']] \\\n",
" .reset_index() \\\n",
" .drop('index', axis = 1)\n",
"df = df[(np.logical_not(df.Product.str.contains(','))) & (df.Product != 'Credit card or prepaid card')]\n",
"df.columns = ['description', 'target']\n",
"pd.set_option('display.max_colwidth', 250)\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "6dNSJFn9dhYn"
},
"source": [
"Next, we will assign each target variable an integer value instead of using the string representation (Credit reporting for example). This allows our models to be able to recognize the responses. We can do this using a variety of methods, but here we will be using sklearn's LabelEncoder function."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-16T08:14:47.932973Z",
"start_time": "2018-11-16T08:14:46.984508Z"
},
"id": "h76oqXmPdhYn",
"outputId": "fc064173-7d18-4f92-eacc-8fbd8c9316df",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 551
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" encoded_response\n",
"target \n",
"Bank account or service 0\n",
"Checking or savings account 1\n",
"Consumer Loan 2\n",
"Credit card 3\n",
"Credit reporting 4\n",
"Credit reporting or other personal consumer reports 5\n",
"Debt collection 6\n",
"Debt or credit management 7\n",
"Money transfers 8\n",
"Mortgage 9\n",
"Other financial service 10\n",
"Payday loan 11\n",
"Prepaid card 12\n",
"Student loan 13\n",
"Vehicle loan or lease 14"
],
"text/html": [
"\n",
" <div id=\"df-75471db1-57b4-439b-b108-d55e239fb77b\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>encoded_response</th>\n",
" </tr>\n",
" <tr>\n",
" <th>target</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Bank account or service</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Checking or savings account</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Consumer Loan</th>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Credit card</th>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Credit reporting</th>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Credit reporting or other personal consumer reports</th>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Debt collection</th>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Debt or credit management</th>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Money transfers</th>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mortgage</th>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Other financial service</th>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Payday loan</th>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Prepaid card</th>\n",
" <td>12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Student loan</th>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Vehicle loan or lease</th>\n",
" <td>14</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-75471db1-57b4-439b-b108-d55e239fb77b')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-75471db1-57b4-439b-b108-d55e239fb77b button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-75471db1-57b4-439b-b108-d55e239fb77b');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-4a8ba772-5b55-48ab-8403-a9346193910b\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-4a8ba772-5b55-48ab-8403-a9346193910b')\"\n",
" title=\"Suggest charts.\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-4a8ba772-5b55-48ab-8403-a9346193910b button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" </div>\n",
" </div>\n"
]
},
"metadata": {},
"execution_count": 8
}
],
"source": [
"encoder = LabelEncoder()\n",
"encoder.fit(df.target)\n",
"df = df.assign(encoded_response = lambda x: encoder.transform(x.target))\n",
"df[['target', 'encoded_response']].drop_duplicates() \\\n",
" .set_index('target') \\\n",
" .sort_values('encoded_response', ascending = True)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "i2_iNaGGdhYo"
},
"source": [
"We can see from the output above, that our resulting dataset contains 13 unique categories which we will try to classify complaints into by training our model to \"understand\" the narrative. <br><br>\n",
"After encoding our target variable, we can then move on to splitting our dataset for training and validation purposes. Train test splits are a crucial part of any modelling process and prevents [overfitting](https://en.wikipedia.org/wiki/Overfitting). Here, we are using an 80/20 split and setting a random seed for reproducibility."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-16T08:14:47.999483Z",
"start_time": "2018-11-16T08:14:47.940983Z"
},
"id": "TrrbsPFfdhYo"
},
"outputs": [],
"source": [
"x_train, x_test, y_train, y_test, indices_train, indices_test = train_test_split(df.description,\n",
" df.encoded_response,\n",
" df.index,\n",
" test_size = 0.2,\n",
" random_state = 1)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "N2RfY3ErdhYo"
},
"source": [
"## Feature Extraction"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "j4RahTLqdhYp"
},
"source": [
"Just as we have encoded our target variables, we must also find a way to transform our description data out if its string representation into a numerical one. However, unlike the target variables, this process is not as simple as allocating an integer value to each unique complaint. Keep in mind that a meaningful transformation must somehow display some form of homogeneity between complaints within the same product categories."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "37wbNimvdhYp"
},
"source": [
"### Bag of Words (BOW) Model"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "gZ2T84AldhYp"
},
"source": [
"One way of transforming a document full of text data into numerical features is by using the BOW (Bag of Words) model. Put simply, all it does is assign each unique word (or token) an ID number and counts up its frequency. For example, if we have a document: <br><br>\n",
"`\"This is a cat. That is a dog\"`\n",
"<br><br>\n",
"The BOW representation would simply be: <br><br>\n",
"`BOW = {\"This\": 1, \"is\": 2, \"a\": 2, \"cat\" : 1, \"That\" : 1, \"dog\" : 1}`\n",
"<br><br>\n",
"Notice that the document shown above is clearly about a cat and a dog. However, our BOW model (also called count vectorizer) shows that the most frequent words present in the document are \"is\" and \"a\". These common words are also known as [\"stop words\"](https://en.wikipedia.org/wiki/Stop_words) and are usually filtered out of the BOW model during the pre-processing phase to prevent overpowering the words that have actual importance. There are many different little tricks and techniques for choosing the most suitable bag of words to represent your documents and most can be implemented simply through a line (or two) of code using [regular expressions](https://docs.python.org/2/library/re.html), which is a great way to filter texts and I highly recommend getting comfortable with using them.<br><br>\n",
"How does this link back to the goal of having numerical features as our inputs? Imagine having a thousand text documents and extracting all (a subset) of the unique tokens that we think best represents them. Now, we can assign each unique token to a column in a dataframe and populate the rows with each document’s count of the respective words. Following the example above, our single document would produce a dataframe that looks like: <br><br>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-16T08:14:48.026977Z",
"start_time": "2018-11-16T08:14:48.010973Z"
},
"id": "xZ4rtFb1dhYp",
"outputId": "b3dd4a54-1b83-47f1-8f23-391c8b1d11f1",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 80
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" This is a cat That dog\n",
"0 1 2 2 1 1 1"
],
"text/html": [
"\n",
" <div id=\"df-68c2e618-65d3-43ff-990d-df5f0c17665c\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>This</th>\n",
" <th>is</th>\n",
" <th>a</th>\n",
" <th>cat</th>\n",
" <th>That</th>\n",
" <th>dog</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-68c2e618-65d3-43ff-990d-df5f0c17665c')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-68c2e618-65d3-43ff-990d-df5f0c17665c button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-68c2e618-65d3-43ff-990d-df5f0c17665c');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" </div>\n",
" </div>\n"
]
},
"metadata": {},
"execution_count": 10
}
],
"source": [
"pd.DataFrame({\"This\": 1, \"is\": 2, \"a\": 2, \"cat\" : 1,\n",
" \"That\" : 1, \"dog\" : 1}, index = range(1))"
]
},
{
"cell_type": "markdown",
"source": [
"We can of course imagine multiple sentences to create a database. A second sentence could be. `\"This dog acts like a human\"`"
],
"metadata": {
"id": "cTmNRtSZyb0H"
}
},
{
"cell_type": "code",
"source": [
"pd.DataFrame([{\"This\": 1, \"is\": 2, \"a\": 2, \"cat\" : 1,\n",
" \"That\" : 1, \"dog\" : 1, \"acts\":0,\"like\":0, \"human\":0},\n",
" {\"This\": 1, \"is\": 0, \"a\": 1, \"cat\" : 0,\n",
" \"That\" : 0, \"dog\" : 1, \"acts\":1,\"like\":1, \"human\":1}], index = range(2))"
],
"metadata": {
"id": "8Ezxw62Wyouw",
"outputId": "8ed6a136-1136-410c-cb82-ff358426ef7f",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 112
}
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" This is a cat That dog acts like human\n",
"0 1 2 2 1 1 1 0 0 0\n",
"1 1 0 1 0 0 1 1 1 1"
],
"text/html": [
"\n",
" <div id=\"df-80833b55-9c52-470b-a5fe-9d89fff1c26b\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>This</th>\n",
" <th>is</th>\n",
" <th>a</th>\n",
" <th>cat</th>\n",
" <th>That</th>\n",
" <th>dog</th>\n",
" <th>acts</th>\n",
" <th>like</th>\n",
" <th>human</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-80833b55-9c52-470b-a5fe-9d89fff1c26b')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-80833b55-9c52-470b-a5fe-9d89fff1c26b button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-80833b55-9c52-470b-a5fe-9d89fff1c26b');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-e7b1cfe9-468d-40ea-bb02-2a234a66971d\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-e7b1cfe9-468d-40ea-bb02-2a234a66971d')\"\n",
" title=\"Suggest charts.\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-e7b1cfe9-468d-40ea-bb02-2a234a66971d button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" </div>\n",
" </div>\n"
]
},
"metadata": {},
"execution_count": 11
}
]
},
{
"cell_type": "markdown",
"source": [
"Then finally we would want to predict what the sentence is about, and the columns become important features."
],
"metadata": {
"id": "fX3bBIP6zhZt"
}
},
{
"cell_type": "code",
"source": [
"pd.DataFrame([{\"This\": 1, \"is\": 2, \"a\": 2, \"cat\" : 1,\n",
" \"That\" : 1, \"dog\" : 1, \"acts\":0,\"like\":0, \"human\":0, \"PREDICT CAT-DOG 0/1\": 0},\n",
" {\"This\": 1, \"is\": 0, \"a\": 1, \"cat\" : 0,\n",
" \"That\" : 0, \"dog\" : 1, \"acts\":1,\"like\":1, \"human\":1, \"PREDICT CAT-DOG 0/1\": 1}], index = range(2))"
],
"metadata": {
"id": "3FLAZopN0Mlt",
"outputId": "57ac9669-bea3-4ea5-c609-b45abb443207",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 112
}
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" This is a cat That dog acts like human PREDICT CAT-DOG 0/1\n",
"0 1 2 2 1 1 1 0 0 0 0\n",
"1 1 0 1 0 0 1 1 1 1 1"
],
"text/html": [
"\n",
" <div id=\"df-0937b0a7-3760-4670-bcf6-ae49e6ad093c\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>This</th>\n",
" <th>is</th>\n",
" <th>a</th>\n",
" <th>cat</th>\n",
" <th>That</th>\n",
" <th>dog</th>\n",
" <th>acts</th>\n",
" <th>like</th>\n",
" <th>human</th>\n",
" <th>PREDICT CAT-DOG 0/1</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-0937b0a7-3760-4670-bcf6-ae49e6ad093c')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-0937b0a7-3760-4670-bcf6-ae49e6ad093c button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-0937b0a7-3760-4670-bcf6-ae49e6ad093c');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-acb4e7e7-7d2b-4dfa-88d8-40db76a9a175\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-acb4e7e7-7d2b-4dfa-88d8-40db76a9a175')\"\n",
" title=\"Suggest charts.\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-acb4e7e7-7d2b-4dfa-88d8-40db76a9a175 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" </div>\n",
" </div>\n"
]
},
"metadata": {},
"execution_count": 12
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Z4tyPK7ldhYq"
},
"source": [
"Realistically, if we had chosen 15,000 unique tokens from the 1000 documents, our input matrix would then have 15,000 columns! You can start to imagine how sparse (full of zeros) our resulting input matrix will be! This technique is also commonly known as count vectorizing. <br><br>\n",
"In this article however, we will be using a more robust model than count vectorizing called (TF-IDF) Term Frequency - Inverse Document Frequency, and it is defined as:\n",
"\n",
"$w_{i,j} = tf_{i,j} * log(\\dfrac{N}{df_i})$\n",
"<br><br>\n",
"$w_{i,j}$ = Weight for word(i) in document(j) <br>\n",
"$tf_{i,j}$ = Count of word(i) in document(j) <br>\n",
"$N$ = Total number of documents <br>\n",
"$df_i$ = How many documents word(i) appears in<br><br>\n",
"\n",
"We can see that, the first term of the TF-IDF model is just the count of the word in the document as before. The magic happens in the second term where the model imposes an additional condition for a word to be deemed \"important\". Just as an example, if the word \"bank\" appears in every single document, it wouldn't be of much use in differentiating the documents, and the second term of the TF-IDF model expresses this by reducing the whole weight down to 0."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "FqruSCMBdhYq"
},
"source": [
"There are a variety of packages that help to automate the vectorizing process, but we have chosen to use the Sci-kit learn API due to its easy of usage and interpretability. Here, we instantiate a TfidfVectorizer model, with a few note-worthy details: <br>\n",
"* Sublinear_tf uses a logarithmic form of frequency as 20 occurrences of a word does not imply 20 times the importance in most cases <br>\n",
"* The model will ignore words that appear in less than 5 documents, as well as more than 70% of the total documents <br>\n",
"* Normalization is set to L2 (Not to be confused with L2 regularisation) so that all vectors are scaled to have a magnitude of 1 (The equivalent of standardizing your features) <br>\n",
"* There is a layer of pre-processing to remove numerical characters and symbols within the documents using a regular expression (REGEX)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-16T08:14:48.039968Z",
"start_time": "2018-11-16T08:14:48.032969Z"
},
"id": "3s82QYuVdhYq"
},
"outputs": [],
"source": [
"tfidf_vectorizer = TfidfVectorizer(sublinear_tf = True,\n",
" stop_words = 'english',\n",
" min_df = 5,\n",
" max_df = 0.7,\n",
" norm = 'l2',\n",
" token_pattern = r'\\b[^_\\d\\W]+\\b')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "zX7OoSKNdhYr"
},
"source": [
"We then use the model to fit our original description data, and convert all that sweet text information into something numerical!"
]
},
{
"cell_type": "code",
"source": [
"x_train.shape"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "WANhNNjygqKU",
"outputId": "49d84113-6063-4c11-af81-576fa310e74d"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(4469,)"
]
},
"metadata": {},
"execution_count": 14
}
]
},
{
"cell_type": "code",
"source": [
"x_train"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "EaTAu472374e",
"outputId": "ea5eda11-e6fa-4853-88b6-61d38b6a5401"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"14714 I did not authorize the following inquiries : Transunion- XXXX XXXXXXXX-XX/XX/2017 XXXX XXXX XX/XX/2017 XXXX- XXXX XXXX XX/XX/2017XX/XX/2017\n",
"5004 I am banking with Capital one bank for about 5 years. I have checking as well as savings account with them. On XXXX XXXX a person to person money transfer was made from my account of {$600.00} to a person named XXXX XXXX by XXXX money transfer co...\n",
"5734 On XX/XX/2021 I called Navient to get some information about the co-signer release program on my loan. At one point in the conversation, I was told incorrectly that my loans were in an interest-only payment status, which was news to me and I have...\n",
"1119 I reviewed my Consumer Reports and noticed that I had One late payment on an account that I was never late for. Consumer Reporting Agencies have assumed a vital role and have a responsibility to report Consumer information to the best of their ab...\n",
"8926 There is a debt on my credit report that does not belong to me, the credit report had removed it as they can not validate the debt, but to my surprise two weeks ago they added the debt back to my account without given me a written warning nothing...\n",
" ... \n",
"3230 CFPB, I have been the victim of Identity Theft, someone opened a payday loan account with Check N Go with my information. I have escalated this to FTD and the DOJ. The requirement of the Bank to respond to credit bureau disputes is outlined by th...\n",
"14181 I am billed from collection agency for bill on XX/XX/16 paid by my insurance companies which was primary XXXX paid XXXX, the secondary insurance XXXX would covered XXXX any balances should have been billed to XXXX as a secondary insurance in time...\n",
"11181 Attempting to collect a debt I don't know. Tried to get resolved previously.\n",
"776 On XX/XX/XXXX I applied for a VA home loan through USAA. This would be the second time I would have a VA loan. My first home was through a VA loan. I receive a pre-approval on the same day and immediately started submitting my required paperwork....\n",
"14008 On XX/XX/XXXX XXXX XXXX XXXX XXXX XXXX XXXX charged me for liability insurance ( {$270.00} ) on a HELOC ( acct # XXXX originated by BB & T bank XXXX now Truist ) that has had a XXXX balance since it was paid in full in XX/XX/XXXX. This is on a pr...\n",
"Name: description, Length: 4469, dtype: object"
]
},
"metadata": {},
"execution_count": 15
}
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-16T08:15:46.665241Z",
"start_time": "2018-11-16T08:14:48.044968Z"
},
"id": "ASdzl-IudhYr"
},
"outputs": [],
"source": [
"tfidf_train = tfidf_vectorizer.fit_transform(x_train.values)\n",
"tfidf_test = tfidf_vectorizer.transform(x_test.values)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-16T08:15:46.711749Z",
"start_time": "2018-11-16T08:15:46.669249Z"
},
"id": "xWrLGFLedhYs",
"outputId": "4300d68f-16e5-44aa-fc23-d8fd6c96c947",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"4500\n"
]
}
],
"source": [
"print(len(tfidf_vectorizer.get_feature_names_out()))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "3vGvUd0pdhYs"
},
"source": [
"We can see that our resulting dictionary consists of 4249 different unique words!"
]
},
{
"cell_type": "code",
"source": [
"tfidf_train"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ugERkn7cixuB",
"outputId": "49f1e416-037a-4c27-f9ff-5c2d8aad9b53"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<4469x4500 sparse matrix of type '<class 'numpy.float64'>'\n",
"\twith 242740 stored elements in Compressed Sparse Row format>"
]
},
"metadata": {},
"execution_count": 18
}
]
},
{
"cell_type": "code",
"source": [
"tfidf_df = pd.DataFrame.sparse.from_spmatrix(tfidf_train,\n",
" columns = tfidf_vectorizer.get_feature_names_out())"
],
"metadata": {
"id": "OGCVn85_jUwy"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-16T08:16:17.160179Z",
"start_time": "2018-11-16T08:16:01.463243Z"
},
"id": "xuh-T7WWdhYt",
"outputId": "9b852578-7f08-4fcd-e2f7-069d75f612cb",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 235
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" abandoned abide ability able abruptly ... yrs z zero zip \\\n",
"4464 0.0 0.0 0.0 0.000000 0.0 ... 0.0 0.0 0.0 0.0 \n",
"4465 0.0 0.0 0.0 0.000000 0.0 ... 0.0 0.0 0.0 0.0 \n",
"4466 0.0 0.0 0.0 0.000000 0.0 ... 0.0 0.0 0.0 0.0 \n",
"4467 0.0 0.0 0.0 0.000000 0.0 ... 0.0 0.0 0.0 0.0 \n",
"4468 0.0 0.0 0.0 0.080909 0.0 ... 0.0 0.0 0.0 0.0 \n",
"\n",
" zombie \n",
"4464 0.0 \n",
"4465 0.0 \n",
"4466 0.0 \n",
"4467 0.0 \n",
"4468 0.0 \n",
"\n",
"[5 rows x 4500 columns]"
],
"text/html": [
"\n",
" <div id=\"df-d01f4729-c5a8-4511-a5d9-230e7b3c8b52\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>abandoned</th>\n",
" <th>abide</th>\n",
" <th>ability</th>\n",
" <th>able</th>\n",
" <th>abruptly</th>\n",
" <th>...</th>\n",
" <th>yrs</th>\n",
" <th>z</th>\n",
" <th>zero</th>\n",
" <th>zip</th>\n",
" <th>zombie</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4464</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4465</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4466</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4467</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4468</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.080909</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 4500 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-d01f4729-c5a8-4511-a5d9-230e7b3c8b52')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-d01f4729-c5a8-4511-a5d9-230e7b3c8b52 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-d01f4729-c5a8-4511-a5d9-230e7b3c8b52');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-42ee2788-2803-4cc0-8dd0-d3944fe15455\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-42ee2788-2803-4cc0-8dd0-d3944fe15455')\"\n",
" title=\"Suggest charts.\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-42ee2788-2803-4cc0-8dd0-d3944fe15455 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" </div>\n",
" </div>\n"
]
},
"metadata": {},
"execution_count": 20
}
],
"source": [
"pd.options.display.max_columns = 10\n",
"tfidf_df.tail()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "_aYorEkTdhYu"
},
"source": [
"As mentioned above, the 4000+ words chosen to be in our \"dictionary\" become the columns of our input matrix and just to reiterate, since we have so many columns and each row only consists of words within 1 document, the resulting matrix will be extremely sparse! (Consisting mostly of zeros) <br><br>\n",
"Now that we have extracted some numerical features from our dataset, it is time to use them to train a classifier!"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BPofAO55dhYu"
},
"source": [
"## Logistic Regression Classifier"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "0y8vjXUodhYu"
},
"source": [
"In this example, we have chosen to use a basic [logistic regression model](http://www.appstate.edu/~whiteheadjc/service/logit/intro.htm) to classify the documents due to tractability and convention. However, more complex models such as neural networks, decision trees, naive bayesian classifiers or other relevant models can also be used to do the following classification and the reader is encouraged to try different machine learning models to see which ones give the most accurate results! <br><br>\n",
"Firstly, we instantiate a logistic regression classifier from the sklearn package and proceed to fit our TF-IDF vectorized matrix and our encoded training labels."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-16T08:17:48.728778Z",
"start_time": "2018-11-16T08:16:17.165234Z"
},
"id": "GrEhMG42dhYu",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 213
},
"outputId": "e8b54664-acb7-4734-bb3a-663f350b1ae5"
},
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"/usr/local/lib/python3.10/dist-packages/sklearn/linear_model/_logistic.py:458: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" n_iter_i = _check_optimize_result(\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"LogisticRegression()"
],
"text/html": [
"<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">LogisticRegression</label><div class=\"sk-toggleable__content\"><pre>LogisticRegression()</pre></div></div></div></div></div>"
]
},
"metadata": {},
"execution_count": 21
}
],
"source": [
"lr_classifier = LogisticRegression()\n",
"lr_classifier.fit(tfidf_train, y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "a8phPYCJdhYu"
},
"source": [
"We can observe that amongst the model parameters, sklearn has automatically set 'penalty' to L2. This is a form of regularization, which weighs the benefits of a better fit against using more features by adding an extra term to the objective function. Recall that when using the BOW model, we ended up creating thousands of features. Adding regularization to our model would then help to prevent using too many of them!"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-16T08:24:09.833368Z",
"start_time": "2018-11-16T08:24:08.330375Z"
},
"scrolled": true,
"id": "hdcPh3PQdhYv",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 363
},
"outputId": "5e770b2c-e04a-435f-f402-b62707c3fb2c"
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" features coefficients\n",
"393 bank 3.810558\n",
"2806 overdraft 1.935661\n",
"1592 fees 1.887826\n",
"1728 funds 1.557623\n",
"2589 money 1.518259\n",
"1020 debit 1.501463\n",
"32 account 1.491159\n",
"2620 n 1.410070\n",
"1586 fee 1.409157\n",
"649 checking 1.365648"
],
"text/html": [
"\n",
" <div id=\"df-372219ff-da30-47c8-a227-32c867b9ebc6\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>features</th>\n",
" <th>coefficients</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>393</th>\n",
" <td>bank</td>\n",
" <td>3.810558</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2806</th>\n",
" <td>overdraft</td>\n",
" <td>1.935661</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1592</th>\n",
" <td>fees</td>\n",
" <td>1.887826</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1728</th>\n",
" <td>funds</td>\n",
" <td>1.557623</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2589</th>\n",
" <td>money</td>\n",
" <td>1.518259</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1020</th>\n",
" <td>debit</td>\n",
" <td>1.501463</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>account</td>\n",
" <td>1.491159</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2620</th>\n",
" <td>n</td>\n",
" <td>1.410070</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1586</th>\n",
" <td>fee</td>\n",
" <td>1.409157</td>\n",
" </tr>\n",
" <tr>\n",
" <th>649</th>\n",
" <td>checking</td>\n",
" <td>1.365648</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-372219ff-da30-47c8-a227-32c867b9ebc6')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-372219ff-da30-47c8-a227-32c867b9ebc6 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-372219ff-da30-47c8-a227-32c867b9ebc6');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-21c6b4a4-9828-4fe1-91ba-3446eef14f60\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-21c6b4a4-9828-4fe1-91ba-3446eef14f60')\"\n",
" title=\"Suggest charts.\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-21c6b4a4-9828-4fe1-91ba-3446eef14f60 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" </div>\n",
" </div>\n"
]
},
"metadata": {},
"execution_count": 22
}
],
"source": [
"coefficients = pd.DataFrame(dict(zip(tfidf_df.columns,lr_classifier.coef_[0])),index = [0]).T.reset_index()\n",
"coefficients.columns = ['features', 'coefficients']\n",
"coefficients.sort_values(\"coefficients\",ascending=False).head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "0yUbmmcXdhYv"
},
"source": [
"Since we have converted all our \"text\" data into numerical features, we can view the weights and features just as we would be able to for any other logisitic regression model on numerical data."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-16T08:17:50.395323Z",
"start_time": "2018-11-16T08:17:50.316787Z"
},
"id": "sp-D4SBydhYv",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "421c7c15-2ddc-479a-cfe2-ab68aa8d9a57"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0.817531305903399\n"
]
}
],
"source": [
"pred = lr_classifier.predict(tfidf_test)\n",
"score = metrics.accuracy_score(y_test, pred)\n",
"print(score)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "r7ZVpEQSdhYv"
},
"source": [
"After running the model on the validation set, we can see that we attained some pretty decent results with an overall accuracy of ~80% with just a simple logistic regression classifier. We can drill down into this result by evaluating the [confusion matrix](https://www.dataschool.io/simple-guide-to-confusion-matrix-terminology)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-16T08:17:50.488780Z",
"start_time": "2018-11-16T08:17:50.401773Z"
},
"id": "1aqtlmmedhYv"
},
"outputs": [],
"source": [
"cm = metrics.confusion_matrix(y_test, pred)\n",
"cm = cm.astype('float') / cm.sum(axis = 1)[:, np.newaxis]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "C-UnxLHxdhYw"
},
"source": [
"Due to the huge imbalance of data points between the different categories, the resulting figures in the confusion matrix are normalized to produce clearer distinctions between “good” and “poor” performance."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-16T08:17:52.986277Z",
"start_time": "2018-11-16T08:17:50.494831Z"
},
"scrolled": false,
"id": "RzwooLNwdhYw",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"outputId": "56d16d49-7981-4d1a-f249-e394f3b82a23"
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Accuracy Score: 0.817531305903399')"
]
},
"metadata": {},
"execution_count": 25
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1500x1500 with 2 Axes>"
],
"image/png": "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ggULys3NTXfv3tWff/6p8PBwDR482OxM7Rw5cuj7779Xr169VLp0aX3yySdKliyZ/vjjDz19+lSTJk2Sp6enyTELFixQhw4dlDt3buXMmVPW1ta6du2aDh8+rPDwcHl7e8f61c7Bgwc1fPhwZciQQfnz55eTk5Nu374tf39/3b9/X05OTlq2bJnJwquStGjRIn377bcqUqSIMmTIoJCQEO3atUuhoaFq3bq1yd8NMe7du6fcuXPL29tb2bNnl7W1tQ4fPqxLly7Jw8ND69evf+eFbAEASAgk0AEAAPBRxMwEjs/ilk2bNtX48eO1ePFijR07VlZWVmrSpIly586t77//Xtu2bdOKFSuUKlUqZc+eXT179jRJ+Dg4OGjbtm364YcftHDhQu3atUsRERFKnz69mjdvrpYtW5qcb9iwYXJwcNCPP/6orVu3Km3atGrbtq2+/vrrWPV+4ytmRuaECRO0e/du2dnZqVSpUvr666/jrKX9ruOOUbp0aVlbW8vKykrNmzd/57FOnTpVNWvW1MaNG3X69Glt2bJFoaGhSpUqlcqXL6+GDRuqbdu2sra2NjkuT548OnbsmL7//nutWbNGv//+u2xsbJQpUyb169fPJAlqaWmpNWvWaNq0aZozZ442btwoScqdO7fatGmjTp06xVpQ820sLCw0b948NWjQQD/99JMOHjyoI0eOKFWqVHJ3d1efPn3UuHHjd74e5tja2mrbtm0aPXq0Fi1apNWrV8vZ2VmtW7fWiBEjYs2+fRODwaClS5eqatWqmjt3ro4fPy5/f3+lTJlS1atXV/fu3WPNAJaiE5LmfoXw6ra4aoy/Wr7lbXr37q0//vhDp06d0unTp/XixQu5ubnps88+0xdffKEiRYrEOqZ9+/ZKnjy5du/erd27d+vhw4dKkSKF8uTJo1q1aqlr165ma76/a0xp0qTRd999p+3bt+vUqVM6dOiQsVxSkyZN1KlTpzhrcdevX187d+7UN998o3379un58+fKnTu3unXrZjap3bhxY718+VKHDx/Wtm3bFBoaKmdnZ1WrVk1t27Y1+UXGq+rUqaPbt2/r2LFj2r17t1KlSqWqVauqZ8+ecY5Nik78e3p66vvvv9euXbskSYULF1bfvn1Vs2bNWO379OmjbNmyad++fdq2bZseP34sJycnFS9eXPXr11fHjh1jJajr1aun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+w96DlD8eg8QSWF7cuZL7Sq8FFWuXHxyoVSmIVxERERERERERERERGxQAl1ERERERERERERExAaNgS4iIiIiIiIiIiKShhgMGgU9rVAPdBERERERERERERERG5RAFxERERERERERERGxQQl0EREREREREREREREblEAXEREREREREREREbFBk4iKiIiIiIiIiIiIpCGaQjTtUA90EREREREREREREREblEAXEREREREREREREbFBCXQRERERERERERERERs0BrqIiIiIiIiIiIhIGqIx0NMO9UAXEREREREREREREbFBCXQRERERERERERERERuUQBcRERERERERERERsUEJdBERERERERERERERGzSJqIiIiIiIiIiIiEgaYjBoGtG0Qj3QRURERERERERERERsUAJdRERERERERERERMQGJdBFRERERERERERERGzQGOgiIiIiIiIiIiIiaYhRQ6CnGeqBLiIiIiIiIiIiIiJigxLoIiIiIiIiIiIiIiI2KIEuIiIiIiIiIiIiImKDEugiIiIiIiIiIiIiIjZoElERERERERERERGRNMSgWUTTDPVAFxERERERERERERGxwWA2m82pXQkRERERERERERERSeCfzyu1q/BSlL0YnNpVeCIN4SIiIs/ndlRq1yD1uGTBfD4gtWuRagwFfO37/gO4ZCFu6HupXYtUk27sUvtuAy5Z4Mb11K5F6nHNRvy341K7FqnG4YNP1f7DL6d2LVKPe277vv+Q0Abs+Roofrv/DBQR+6EEuoiIiIiIiIiIiEgaYtAQ6GmGxkAXEREREREREREREbFBCXQRERERERERERERERuUQBcRERERERERERERsUEJdBERERERERERERERGzSJqIiIiIiIiIiIiEgaoklE0w71QBcRERERERERERERsUEJdBERERERERERERERG5RAFxERERERERERERGxQWOgi4iIiIiIiIiIiKQhBg2CnmaoB7qIiIiIiIiIiIiIiA1KoIuIiIiIiIiIiIiI2KAEuoiIiIiIiIiIiIiIDUqgi4iIiIiIiIiIiIjYoElERURERERERERERNIQzSGadqgHuoiIiIiIiIiIiIiIDUqgi4iIiIiIiIiIiIjYoAS6iIiIiIiIiIiIiIgNGgNdREREREREREREJA0xaBD0NEM90EVEREREREREREREbFAC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49fqER4ZyYyvFnA9LJziPoVZMGOK5efoIVeuYnzoPaB8GV8mfzaSaXPmM/XLeXjly8vsyePxKZyQQL567Tp//vU3AM3e62h1riVzZ1ClQnkcHdOzftMfzJq/kHux98ibOzcd3n2Hju+985KiTvR6yYKE377LzG3+hN66Q7Ec7nz1bn3LEC4hUbcwPvS/qTv3Yhn9226u3ryNUzoHvD2zMLFZLV4vWRCAazdvs+XkRQBazP/F6lyL329IZa+cODo4sP74OWb/5c+9eBN5smaiXZUSdKhS4iVFncje2z9A4/p1CY+IYsaCxQmvgSKFWPDFRMtEiSFXr1lfg9KlmOw3jGnzFjJ17gK88uVh9sQx+BRKaAMORiMnz5xhzW8buXkzmuyeHtSoUpHeH3ayGtt48qihjJkynfa9+mE0GHmtdi2G9e31coNHbUDx23n8dv4ZKCL/TQbzs86uJyIi8rDbL2/s5DTHJQvm8wFPLvc/ylDA177vP4BLFuKGvpfatUg16cYute824JIFblxP7VqkHtdsxH87LrVrkWocPvhU7T/8cmrXIvW457bv+w8JbcCer4Hit/vPQJGUFlSk0JML/Q8oeupMalfhiTSEi4iIiIiIiIiIiIiIDRrCRURERERERERERCQNMfxXBgi3A+qBLiIiIiIiIiIiIiJigxLoIiIiIiIiIiIiIiI2KIEuIiIiIiIiIiIiImKDEugiIiIiIiIiIiIiIjZoElERERERERERERGRNMSgbs9phm6FiIiIiIiIiIiIiIgNSqCLiIiIiIiIiIiIiNigBLqIiIiIiIiIiIiIiA0aA11EREREREREREQkDTEYDKldBblPPdBFRERERERERERERGxQAl1ERERERERERERExAYl0EVEREREREREREREbFACXURERERERERERETEBk0iKiIiIiIiIiIiIpKGaA7RtEM90EVEREREREREREREbFACXURERERERERERETEBiXQRURERERERERERERs0BjoIiIiIiIiIiIiImmIQYOgpxnqgS4iIiIiIiIiIiIiYoMS6CIiIiIiIiIiIiIiNiiBLiIiIiIiIiIiIiJigxLoIiIiIiIiIiIiIiI2aBJRERERERERERERkTREc4imHeqBLiIiIiIiIiIiIiJigxLoIiIiIiIiIiIiIiI2GMxmszm1KyEiIiIiIiIiIiIiCc6V8kntKrwUBY+eTO0qPJHGQBcRkedzOyq1a5B6XLLAzbDUrkXqyexh3/cfEtqAPV8DlyzEDW6T2rVINekmLLf7+x8/pnNq1yLVOAz/2u7vP2GXUrsWqccjj33ff9BnoEsWiLqa2rVIPVly6DlYJIUZNQh6mqEhXEREREREREREREREbFACXURERERERERERETEBiXQRURERERERERERERsUAJdRERERERERERERMQGTSIqIiIiIiIiIiIikoZoDtG0Qz3QRURERERERERERERsUAJdRERERERERERERMQGJdBFRERERERERERERGzQGOgiIiIiIiIiIiIiaYhBg6CnGeqBLiIiIiIiIiIiIiJigxLoIiIiIiIiIiIiIiI2KIEuIiIiIiIiIiIiImKDEugiIiIiIiIiIiIiIjZoElERERERERERERGRNERziKYd6oEuIiIiIiIiIiIiImKDEugiIiIiIiIiIiIiIjYogS4iIiIiIiIiIiIiYoPGQBcRERERERERERFJQzQGetqhHugiIiIiIiIiIiIiIjYogS4iIiIiIiIiIiIiYoMS6CIiIiIiIiIiIiIiNiiBLiIiIiIiIiIiIiJigyYRFREREREREREREUlDDEbNIppWqAe6iIiIiIiIiIiIiIgNSqCLyP8kg8HAmjVrAAgODsZgMODv75+qdUpJtWvXpk+fPqldDRERERERERGR/ylKoIvIS3HlyhV69uyJt7c3Tk5O5MuXj6ZNm7J58+YUP3e+fPkICQmhVKlSAGzduhWDwUBkZGSKn/tFS67uq1atYsyYMalTqX9p6Q8/UrdxM3yr1KTVBx05cvTYY8v/tukPGr3VCt8qNWna6l22bd9htd1sNjP9y6+o2eB1SletRYePehB8/oJVmcioKPp9OpzyNetQsVZdPh01hlu3b7/w2J7G0hUrqdu0Bb7Va9OqfReOHD3+2PK//fEnjVq2wbd6bZq+8z7b/t5ptf33P7fSqUdvqtRrRNGK1QkMOmm1/Z/LIRStWN3m8tsff77w+J6G3bcBO4/fUPU1HAbNxGHMEhy6fwZ5Cz3dfqWrkW7Ccowf9LNab2zVjXQTllstxo6DrXf2zIWxXX8chs/DYdRCHP5vFAbvEi8qpGdi9/e/Yh2MPSdiHDIXY6ehkLvg0+1XsjIOw7/G2PrjxJVGBwz13sb4kR/GQV9i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O3bsk3cUEREREREREbETmkRUROQF69Chw39i+JaBAwcSHBzM3bt3OXfuHF988QUuLi6pXS0RERERERERkTRDCXQRERERERERERERERs0hIuIiIiIiIiIiIhIGmIwGFK7CnKfeqCLiIiIiIiIiIiIiNigBLqIiIiIiIiIiIiIiA1KoIuIiIiIiIiIiIiI2KAx0EVERERERERERETSEA2BnnaoB7qIiIiIiIiIiIiIiA1KoIuIiIiIiIiIiIiI2KAEuoiIiIiIiIiIiIiIDUqgi4iIiIiIiIiIiIjYoElERURERERERERERNIQg2YRTTPUA11ERERERERERERExAYl0EVEREREREREREREbFACXURERERERERERETEBo2BLiIiIiIiIiIiIpKGaAj0tEM90EVEREREREREREREbFACXURERERERERERETEBiXQRURERERERERERERsUAJdRERERERERERERMQGTSIqIiIiIiIiIiIikoYYNItomqEe6CIiIiIiIiIiIiIiNiiBLiIiIiIiIiIiIiJigxLoIiIiIiIiIiIiIiI2aAx0ERERERERERERkTTEoG7PaYbBbDabU7sSIiIiIiIiIiIiIpIgspZvalfhpci6PSC1q/BE6oEuIiLP53ZUatcg9bhkUfz2HD/oGrhkwXTw99SuRaoxln/N7u//vlz5U7sWqaZSyAW7v//m6xdSuxapxpAtv33ff9BnoOJX/CJiN/RjABERERERERERERERG5RAFxERERERERERERGxQUO4iIiIiIiIiIiIiKQhBoMhtasg96kHuoiIiIiIiIiIiIiIDUqgi4iIiIiIiIiIiIjYoAS6iIiIiIiIiIiIiIgNGgNdREREREREREREJC0xagz0tEI90EVEREREREREREREbFACXURERERERERERETEBiXQRURERERERERERERsUAJdRERERERERERERMQGTSIqIiIiIiIiIiIikpYYNIloWqEe6CIiIiIiIiIiIiIiNiiBLiIiIiIiIiIiIiJigxLoIiIiIiIiIiIiIiI2KIEuIiIiIiIiIiIiImKDJhEVERERERERERERSUMMmkQ0zVAPdBERERERERERERERG5RAFxERERERERERERGxQQl0EREREREREREREREbNAa6iIiIiIiIiIiISFpi1BjoaYV6oIuIiIiIiIiIiIiI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RERERERExAYl0EVEREREREREREREbNAkoiIiIiIiIiIiIiJpiMGgSUTTCvVAFxERERERERERERGxQQl0EREREREREREREREblEAXEREREREREREREbFBY6CLiIiIiIiIiIiIpCVGjYGeVqgHuoiIiIiIiIiIiIiIDUqgi4iIiIiIiIiIiIjYoAS6iIiIiIiIiIiIiIgNSqCLiIiIiIiIiIiIiNigSURFRERERERERERE0hKDJhFNKwxms9mc2pUQERERERERERERkQS33qqR2lV4KTKu3pHaVXgi9UAXEZHnczsqtWuQelyywK2I1K5F6snoZt/3HxLagD1fA5cscCsytWuRejJmtfv7P9LJLbVrkWr8YiLs/v5zMzS1a5F6Mnva9/0HfQYqfj0DiIjd0BjoIiIiIiIiIiIiIiI2qAe6iIiIiIiIiIiISBpiULfnNEO3QkRERERERERERETEBiXQRURERERERERERERsUAJdRERERERERERERMQGJdBFRERERERERERERGzQJKIiIiIiIiIiIiIiaYnBkNo1kPvUA11ERERERERERERExAYl0EVEREREREREREREbFACXURERERERERERETEBo2BLiIiIiIiIiIiIpKGGIwaAz2tUA90EREREREREREREREblEAXEREREREREREREbFBCXQRERERERERERERERuUQBcRERERERERERERsUGTiIqIiIiIiIiIiIikJQZNIppWqAe6iIiIiIiIiIiIiIgNSqCLiIiIiIiIiIiIiNigBLqIiIiIiIiIiIiIiA0aA11EREREREREREQkLTFqDPS0Qj3QRURERERERERERERsUAJdRERERERERERERMQGJdBFRERERERERERERGxQAl1E/ieMGjWKsmXLpnY1AOjQoQPNmze3/F27dm369OmToufcunUrBoOByMjIFD2PiIiIiIiIiIg9UQJdRFJNhw4dMBgMGAwG0qdPT44cOWjQoAELFy7EZDKlyPkeTmz/V9lKyFevXp2QkBCyZMmSOpX6F5b+8CN1GzfDt0pNWn3QkSNHjz22/G+b/qDRW63wrVKTpq3eZdv2HVbbzWYz07/8ipoNXqd01Vp0+KgHwecvWJWJjIqi36fDKV+zDhVr1eXTUWO4dfv2C4/taSz94SfqvtEc36qv0Kpdp6eIfzONWryDb9VXaNr6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vAQA6D5IdmLCzg1r0bBeXenXh46fRF1nR1S3tFD0MD9L3b8H1H38KceOQ6tcOdSY8QO0TCvgbfQdhPd1R+6LwqtFdatWkRbGASBh5WpIJBLUmDkdOpXMkJuWjuenz+DewiXSYyw8hwIAGh0/IvNckeMn4cn+gzCs7QQT13oAgFbXZa+gvVC3Pt49eqyIocql7u8/EZVMIolEIhE6BBFRcbJr1y5MmTIFT58+hZaWlsKex8vLCy9evMDx48cV9hxKkf3668eoKj0jjl+dxw/wNeD41X78krhwoVMIRlSjgdq//3gtv2ezWjAyVe/3H+DPQD0jBJavJHQKwXR6maL27z+RoolPbxc6glJouv2zq/KFwBnoRER/yc7ORkpKCpYsWYJRo0YprHj++vVr3L59G3v37i35xXMiIiIiIiIiIhVWMhrNEBEpwbJly1CzZk2YmZlh5syZCnue7t27o3379hg9ejS+++47hT0PERERERERERH9O5yBTkT0l7lz52Lu3LkKf56LFy8q/DmIiIiIiIiIqAT7aE0YEhZnoBMRERERERERERERycECOhERERERERERERGRHCygExERERERERERERHJwR7oRERERERERERERMWJBuc9Fxd8J4iIiIiIiIiIiIiI5GABnYiIiIiIiIiIiIhIDhbQiYiIiIiIiIiIiIjkYAGdiIiIiIiIiIiIiEgOLiJKREREREREREREVJyIREInoL9wBjoRERERERERERERkRwsoBMRERERERERERERycECOhERERERERERERGRHOyBTkRERERERERERFSciDjvubjgO0FEREREREREREREJAcL6EREREREREREREREcrCATkREREREREREREQkBwvoRERERERERERERERycBFRIiIiIiIiIiIiouJEJBI6Af2FM9CJiIiIiIiIiIiIiORgAZ2IiIiIiIiIiIiISA4W0ImIiIiIiIiIiIiI5GAPdCIiIiIiIiIiIqLiRMR5z8UF3wkiIiIiIiIiIiIiIjlYQCciIiIiIiIiIiIikkMkkUgkQocgIiIiIiIiIiIiokLii/uFjqAUmq36Cx3hq9gDnYiI/p3s10InEI6eEcevzuMH+BroGQFv04ROIRyDcmr//ov3LBY6hWA0B85U+/df8jhW6BSCEVW1V+/3H+DvQI4f7wa0FDqFYHT3BQsdgYiU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nm/69OmoXLmyTBH+a0p985FEREREREREREREpHgikdAJlGLmzJnw9vaW2aatra2Q51qyZAn279+PixcvQkdH55vvxwI6ERERERERERERESmdtrb2NxfMy5cvD01NTaSmpspsT01NhZmZ2Rfvu2LFCixZsgTnzp2Ds7PzP8rIFi5EREREREREREREVKxpaWmhXr16MguAflgQtHHjxp+937JlyzB//nycOnUKrq6u//h5OQOdiIiIiIiIiIiIiIo9b29vDBkyBK6urmjQoAFWr16NrKwsDBs2DADg4eGBKlWqSPuoL126FL6+vti7dy8sLS2lvdL19fWhr6//Tc/JAjoRERERERERERERFXv9+vXDixcv4Ovri2fPnqFOnTo4deqUdGHR5ORkaGj83XRlw4YNyM3Nxffffy/zOHPmzMHcuXO/6TlZQCciIiIiIiIiIiIqTkTsvP0548ePx/jx4+Xuu3jxoszXDx48+NfPx3eCiIiIiIiIiIiIiEgOFtCJiIiIiIiIiIiIiORgAZ2IiIiIiIiIiIiISA72QCciIiIiIiIiIiIqTkQioRPQXzgDnYiIiIiIiIiIiIhIDhbQiYiIiIiIiIiIiIjkYAGdiIiIiIiIiIiIiEgOFtCJiIiIiIiIiIiIiOTgIqJERERERERERERExYmI856LC74TRERERERERERERERysIBORERERERERERERCQHC+hERERERERERERERHKwBzoRERERERERERFRcaIhEjoB/YUz0ImIiIiIiIiIiIiI5GABnYiIiIiIiIiIiIhIDhbQiYiIiIiIiIiIiIjkEEkkEonQIYiIiIiIiIiIiIioUEFkkNARlEKjdluhI3wVFxElIiIiIiIiIiIiKk5EbBxSXPCdICIiIiIiIiIiIiKSgwV0IiIiIiIiIiIiIiI5WEAnIiIiIiIiIiIiIpKDPdCJiIiIiIiIiIiIihORSOgE9BfOQCciIiIiIiIiIiIikoMFdCIiIiIiIiIiIiIiOVhAJyIiIiIiIiIiIiKSgwV0IiIiIiIiIiIiIiI5uIgoERERERERERERUXEi4rzn4oLvBBERERERERERERGRHCygExERERERERERERHJwQI6EREREREREREREZEc7IFOREREREREREREVJyIREInoL9wBjoRERERERERERERkRwsoBMRERERERERERER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dOnSBY0bN4ZEIkFgYKC0JcusWbPg4uICNzc3tGrVCmZmZujRo8c35yIiIiIiIiIiIkAkUUYzXiIiIiIiIiIiIiL6JpK4cKEjKIWoRgOhI3wVFxElIiIiIiIiIiIiKk5EIqET0F/YwoWIiIiIiIiIiIiISA4W0ImIiIiIiIiIiIiI5GABnYiIiIiIiIiIiIhIDvZAJyIiIiIiIiIiIipORJz3XFzwnSAiIiIiIiIiIiIikoMFdCIiIiIiIiIiIiIiOVhAJyIiIiIiIiIiIiKSgwV0IiIiIiIiIiIiIiI5uIgoERERERERERERUXEiEgmdgP7CGehERERERERERERERHKwgE5EREREREREREREJAcL6EREREREREREREREcrAHOhEREREREREREVFxosF5z8UF3wkiIiIiIiIiIiIiIjlYQCciIiIiIiIiIiIikoMFdCIiIiIiIiIiIiIiOVhAJyIiIiIiIiIiIiKSg4uIEhERERERERERERUnIpHQCegvnIFORERERERERERERCQHC+hERERERERERERERHKwgE5EREREREREREREJAd7oBMREREREREREREVJyLOey4u+E4QEREREREREREREcnBAjoRERERERERERERkRwsoBMRERERERERERERycECOhERERERERERERGRHFxElIiIiIiIiIiIiKg4EYmETkB/4Qx0IiIiIiIiIiIiIiI5WEAnIiIiIiIiIiIiIpKDBXQiIiIiIiIiIiIiIjnYA52IiIiIiIiIiIioWGEP9OKCM9CJiIiIiIiIiIiIiORgAZ2IiIiIiIiIiIiISA4W0ImIiIiIiIiIiIiI5GABnYiIiIiIiIiIiIhIDi4iSkRERERERERERFSciLiIaHHBGehERERERERERERERHKwgE5EREREREREREREJAcL6EREREREREREREREcrCATkREREREREREREQkBxcRJSIiIiIiIiIiIipOuIhoscEZ6EREREREREREREREcrCATkREREREREREREQkBwvoRERERERERERERERysAc6ERERERERERERUbHCHujFBWegExERERERERERERHJwQI6EREREREREREREZEcLKATEREREREREREREcnBAjoRERERERERERERkRxcRJSIiIiIiIiIiIioOBFxEdHigjPQiYiIiIiIiIiIiIjkYAGd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VkZGhul4dnXhwgV16tRJW7duVdGiRSVJqampatKkiRYvXuwSK1BdXWhoqLZv367AwMBs40uXLnWJGylnz56VxWJRuXLlJEm//PKLvv32W4WGhur11183nM7+pkyZoueff14BAQG6efOmGjVqpKSkJNWrV88pD0/7q7lz56pw4cKKjo7OUUy2WCxOX0CnQA5/f39du3ZN0t3WTYcOHVJYWJhSU1N148YNw+kAAM6OAjoAIF9YuXJltuf3+v/OnDlTDRo0MJTKjDt37mjv3r36+eefderUKZfoiTtgwABdu3ZNv/76q6pVqyZJOnz4sCIjIzVw4EAtWrTIcELY2+jRoxUZGalz584pKytLy5Yt09GjR7VgwQKtXr3adDy769y5s15//XW9+uqrSkpKUvPmzVW9enV98803SkpK0ujRo01HtCs/Pz9t2LBBO3bsUFxcnNLS0hQeHm5r7eHs6AV796bpF198kW0XUvfu3e/bGxjOpWHDhtqwYYPCwsL0wgsvaNCgQdq8ebM2bNiQo7UPADgPeqDnFbRwAQDkC25ubtmeWywWlShRQk2bNtWUKVNcov/lli1b9O233+qHH35QVlaWOnTooC5duqhp06ayOPkBM35+ftq4caMee+yxbOO//PKLWrRoodTUVDPB4FDbt2/X+PHjFRsbayugjh492iV6gPv7+2v37t2qUqWKZsyYoe+++047d+7U+vXr1adPH504ccJ0RMBu9u7dq5YtW8rb21t169aVdPdg2Zs3b2r9+vUKDw83nBD2lpKSovT0dJUpU0ZZWVmaPHmydu3apZCQEI0cOVL+/nl/+z8A/J9dTzWdwDF8ippO8LdYgQ4AyBeysrJMRzCqbNmySklJUatWrTRnzhw988wz8vLyMh3LYbKysnL0/JUkDw8Pl//ecAUZGRmaMGGCunfvrg0bNpiOY8SdO3ds/+Y3btyoiIgISVLVqlWdvvdvVlaW5s+fr2XLlunUqVOyWCyqVKmSnn/+eb366qtOfwMR0uDBgxUREaHPP/9cBQrcfQubkZGhnj176s0339S2bdsMJ4S9FStWzPbYzc1NUVFRBtMAcLTt27frs88+U2JiopYuXaqyZctq4cKFqlSpkp588knT8eACWIEOAMh37v3qcqWiyeeff64XXnjB1v/b1Tz77LNKTU3VokWLVKZMGUnSuXPn1KVLF/n7+2v58uWGE8LeChcurEOHDrnMgbl/9fjjj6tJkyZq27atWrRood27d6tmzZravXu3nn/+ef3222+mI9qF1WrVM888o7Vr16pmzZqqWrWqrFar4uPjdfDgQUVERGjFihWmY8LOvL29tX//flWtWjXb+OHDh1WnTh16YLuIrKwsJSQk6MKFCzlunjds2NBQKgD29sMPP+jVV19Vly5dtHDhQh0+fFhBQUGaOXOm1q5dq7Vr15qOaD+sQM8z3P7+EgAA8oYFCxYoLCxM3t7e8vb2Vo0aNbRw4ULTsRyiV69eLls8l6SZM2fq6tWrqlixoipXrqzKlSurUqVKunr1qj755BPT8eAAzZo1y3F4oiuZNGmSPvvsMzVu3Fgvv/yyatasKenu+RD3Wlo4o/nz52vbtm3atGmT9u/fr0WLFmnx4sWKjY3Vxo0btXnzZi1YsMB0TNhZkSJFdObMmRzjZ8+ela+vr4FEcLTdu3crODhY1apVU8OGDdW4cWPbR5MmTUzHA2BH7733nmbPnq3PP/88247UBg0aKCYmxmAyuBJauAAA8oWPP/5Yo0aN0htvvGE7NHTHjh3q06ePLl68qMGDBxtOaH979+7VkiVLdObMGd2+fTvb3LJlywylcozy5csrJiZGGzdu1JEjRyRJ1apVc5kDBCG1bt1aUVFROnjwoGrXri0fH59s8/damjirxo0b6+LFi7p69Wq2Xr+vv/66ChUqZDCZfS1atEj/+te/ci2QNW3aVFFRUfrmm2/UtWtXA+kc58yZMypfvnyOnVdWq1Vnz55VhQoVDCVzjJdeekk9evTQRx99pPr160uSdu7cqeHDh+vll182nA6O0KdPH9WpU0dr1qxR6dKlXWoXIuDqjh49musuEz8/P+c/B4mfdfc1a9Ysffjhh0pKSlLNmjX1ySefPHBRyffff69Ro0bp1KlTCgkJ0aRJk9SmTZt//PVo4QIAyBcqVaqkcePG5SiSfPXVVxo7dqxOnjxpKJljLF68WF27dlXLli21fv16tWjRQseOHVNycrKee+45zZs3z3REwK7+epDwn1ksFmVmZjowDRylVKlS+vHHH/Xoo4/mOr9//361bt1aSUlJjg3mYO7u7jp//rwCAgKyjV+6dEkBAQFO//1/+/ZtDR8+XLNnz1ZGRoaku2dg9O3bVxMnTnSpM0FclY+Pj2JjYxUcHGw6CgAHCwoK0pw5c9S8eXP5+voqNjZWQUFBWrBggSZOnKjDhw+bjmg/N66YTuAYhfz+T5d/99136tq1q2bPnq3HH39c06ZN0/fff6+jR4/meK0kSbt27VLDhg31wQcfqF27dvr22281adIkxcTEqHr16v/oa9LCBQCQL5w/f9626uzP6tev7/QH6EnShAkTNHXqVK1atUqenp6aPn26jhw5ohdffNGpVx5u3rxZoaGhunr1ao65K1eu6JFHHtH27dsNJIOjZWVl3ffD2YuHkpScnKxXX31VZcqUUYECBeTu7p7tw1mlpKSoZMmS950vWbKkLl++7MBEZlit1lxX3KalpalgwYIGEjnWvd97ly9f1oEDB3TgwAGlpKRo6tSpFM9dxOOPP66EhATTMQAY0KtXLw0aNEg///yzLBaLfv/9d33zzTcaNmyY+vbtazoeDPj444/Vq1cvvfbaawoNDdXs2bNVqFAhffnll7leP336dLVq1UrDhw9XtWrV9O677yo8PFwzZ878x1+TFi4AgHwhODhYS5Ys0b/+9a9s4999951CQkIMpXKcxMREtW3bVtLdQsL169dlsVg0ePBgNW3aVOPGjTOc0D6mTZumXr16qUiRIjnm/Pz81Lt3b3388cd66qmnDKQDHKdbt246c+aMRo0a5VLtCzIzM1WgwP3fsri7u9tWJDujIUOGSLq7y2LUqFHZ2vVkZmbq559/vu/qfGdUqFAhhYWFmY4BAwYMGKChQ4cqKSlJYWFh2fogS1KNGjUMJQNgb1FRUcrKylKzZs1048YNNWzYUF5eXho2bJgGDBhgOh7+B27duqVbt25lG/Py8sr1Jvnt27e1b98+vf3227YxNzc3NW/eXD/99FOun/+nn36yvaa6p2XLlv+ng+gpoAMA8oVx48bppZde0rZt22w90Hfu3KlNmzZpyZIlhtPZn7+/v65duyZJKlu2rA4dOqSwsDClpqbqxo0bhtPZT2xsrCZNmnTf+RYtWuijjz5yYCI42ubNm/XGG29o9+7dOW6kXLlyRfXr19enn36aa29MZ7Jjxw5t377dpYql0t2V1926dbvvKuO/vtlyNvv375d09+/h4MGD8vT0tM15enqqZs2aGjZsmKl4dte9e/d/dN39VpzBeXTs2FFS9u8Ji8Vi253hCjuRAFdlsVj0zjvvaPjw4UpISFBaWppCQ0NVuHBh09Hs7//Y2iS/+mDs2BwLwsaMGaOxY8fmuPbixYvKzMzMsUOxZMmStrOy/iopKSnX6/8vLQApoAMA8oWOHTvq559/1tSpU213iqtVq6ZffvlFtWrVMhvOARo2bKgNGzYoLCxML7zwggYNGqTNmzdrw4YNatasmel4dpOcnJxjldmfFShQQH/88YcDE8HR/skuhKlTpzp9Ab18+fJyxaOLIiMj//YaZz5AdMuWLZKk1157TdOnT8/134Ezmz9/vgIDA1WrVi2X/P7H/+PsZ90A+Huenp4KDQ01HQN28Pbbb+dYIZ7XWrRRQAcA5Bu1a9fW119/bTqGETNnzlR6erok6Z133pGHh4d27dqljh07auTIkYbT2c+91fb3OzQsLi5OpUuXdnAqOBK7EO6aNm2aoqKi9Nlnn6lixYqm4zgMByTf5ap/D3379tWiRYt08uRJvfbaa3rllVdUrFgx07FgQGBgoOkIAByoQ4cO//jaZcuW2TEJHOF+7VpyU7x4cbm7uys5OTnbeHJyskqVKpXrnylVqtT/6frcWKzcygcA5ANr166Vu7u7WrZsmW183bp1ysrKUuvWrQ0lgz0NGDBAW7du1Z49e3IclHfz5k3VrVtXTZo00YwZMwwlhL0VLFjwgTdREhISFBYWpps3bzo4mWP5+/vrxo0bysjIUKFChXLszEhJSTGUDPbSoUMHzZ8/X0WKFPnbQoIzFw9u3bqlZcuW6csvv9SuXbvUtm1b9ejRQy1atHCZswBc1cqVK9W6dWt5eHho5cqVD7w2IiLCQakAOMJrr732j6911ZvMruzxxx9X3bp19cknn0iSsrKyVKFCBb3xxhuKiorKcf1LL72kGzduaNWqVbax+vXrq0aNGpo9e/Y/+pqsQAcA5AtRUVGaOHFijnGr1aqoqCinL6DHxMTIw8PDdnjaf/7zH82bN0+hoaEaO3Zstr64zmTkyJFatmyZHn74Yb3xxhuqUqWKJOnIkSOaNWuWMjMz9c477xhOCXtiF8Jd06ZNMx0BDubn52crEPv5uUYP1Nx4eXnp5Zdf1ssvv6zTp09r/vz56tevnzIyMvTrr7+6Rg9cF9W+fXslJSUpICBA7du3v+919EAHnA9FcTzIkCFDFBkZqTp16qhu3bqaNm2arl+/brvx0rVrV5UtW1YffPCBJGnQoEFq1KiRpkyZorZt22rx4sXau3ev5syZ84+/JivQAQD5gre3t+Lj43O0Ljh16pQeeeQRXb9+3UwwB3nssccUFRWljh076sSJEwoNDVWHDh20Z88etW3b1qmLa6dPn1bfvn21bt06Ww9ci8Wili1batasWapUqZLhhLAndiEAuOfs2bOaN2+e5s+fr9u3b+vIkSMU0AHAyZ08eVIZGRkKCQnJNn78+HF5eHi4VGs7/D8zZ87Uhx9+qKSkJD366KOaMWOGHn/8cUlS48aNVbFiRc2fP992/ffff6+RI0fq1KlTCgkJ0eTJk9WmTZt//PUooAMA8oVSpUrp22+/VdOmTbONb9y4UZ07d9aFCxcMJXMMPz8/xcTEqHLlypo0aZI2b96sdevWaefOnerUqZPOnj1rOqLdXb58WQkJCbJarQoJCZG/v7/pSHCA5ORkhYeHy93d/b67EGJiYlSyZEnDSe0vMzNTK1asUHx8vCTpkUceUUREhNzd3Q0nA+znzy1cduzYoXbt2um1115Tq1at5ObmZjoe7KhYsWI6duyYihcvru7du2v69Ony9fU1HQuAgzVq1Ejdu3fPcbD4119/rblz52rr1q1mgsGlUEAHAOQLvXv31k8//aTly5ercuXKku72Pu7YsaMee+wxzZ0713BC+ypSpIj27dunkJAQPf3002rXrp0GDRqkM2fOqEqVKk7f/xmujV0Id3/etWnTRufOnbPdRDh69KjKly+vNWvW2H4uwnnUqlXrH/f4jomJsXMaM/r166fFixerfPny6t69u7p06aLixYubjgUHKVy4sOLi4hQUFCR3d3clJSWpRIkSpmMBcLAiRYooJiYmRzu/hIQE1alTR6mpqWaCwaVQQAcA5AtXrlxRq1attHfvXpUrV06S9Ntvv+mpp57SsmXLVLRoUbMB7axp06YqX768mjdvrh49eujw4cMKDg5WdHS0IiMjderUKdMRAbtz5V0Ibdq0kdVq1TfffKNixYpJki5duqRXXnlFbm5uWrNmjeGE+F8bN26c7XF6err+/e9/KzQ0VPXq1ZMk7d69W7/++qv69etn6/HpbNzc3FShQoW/vZngzIeourKnn35aycnJql27tr766iu99NJL8vb2zvXaL7/80sHpADiKn5+ftm7dqlq1amUb37dvnxo3bqxr164ZSgZXQgEdAJBvWK1WbdiwQbGxsfL29laNGjXUsGFD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9zgbAABgd7RwAQDkC+3btzcdwajjx49r6dKltG8AXNS9NgZwTRTI4apSUlJUr149nTt3Tl26dFG1atUkSYcPH9b8+fO1adMm7dq1i9YuAAC7YgU6AAD5QNOmTfXWW2+pVatWpqMAAAxITU3VF198ofj4eEnSI488ou7du7MDCU7tzTff1KZNm7Rx40aVLFky21xSUpJatGihZs2aaerUqYYSAgBcAQV0AADyAfofA0hMTNS0adNsBdTQ0FANGjRIlStXNpwM9rZ37161bNlS3t7eqlu3riRpz549unnzptavX6/w8HDDCQH7qFixoj777DO1bNky1/kff/xRffr00alTpxwbDADgUiigAwDyhczMTE2dOlVLlizRmTNndPv27WzzKSkphpI5Bv2PAde2bt06RURE6NFHH1WDBg0kSTt37lRsbKxWrVqlp59+2nBC2NNTTz2l4OBgff755ypQ4G4XzoyMDPXs2VMnTpzQtm3bDCcE7MPLy0uJiYkqV65crvO//fabgoODlZ6e7uBkAABXQg90AEC+MG7cOM2dO1dDhw7VyJEj9c477+jUqVNasWKFRo8ebTqe3dH/GHBtUVFRGjx4sCZOnJhjfMSIERTQndzevXuzFc8lqUCBAnrrrbdUp04dg8kA+ypevLhOnTp13wL6yZMnVaxYMQenAgC4GlagAwDyhcqVK2vGjBlq27atfH19deDAAdvY7t279e2335qOCAB2U7BgQR08eFAhISHZxo8dO6YaNWqw+tLJlSxZUgsXLlSLFi2yja9bt05du3ZVcnKyoWSAfXXv3l2JiYnasGGDPD09s83dunVLLVu2VFBQkL788ktDCQEAroAV6ACAfCEpKUlhYWGSpMKFC+vKlSuSpHbt2mnUqFEmo9nNypUr1bp1a3l4eGjlypUPvDYiIsJBqQCYUKJECR04cCBHAf3AgQMKCAgwlAqO8tJLL6lHjx766KOPVL9+fUl3W/gMHz5cL7/8suF0gP2MHz9ederUUUhIiPr376+qVavKarUqPj5e//73v3Xr1i0tXLjQdEwAgJOjgA4AyBfKlSun8+fPq0KFCqpcubLt0LQ9e/bIy8vLdDy7aN++vZKSkhQQEKD27dvf9zp6oAPOr1evXnr99dd14sSJbAXUSZMmaciQIYbTwd4++ugjWSwWde3aVRkZGZIkDw8P9e3bN0db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27dv18mTJ7V161YNHDhQv/32myRp0KBBmjhxolasWKEjR46oX79+Sk1Nve/nrFixoiIjI9W9e3etWLHC9jmXLFkiSQoMDJTFYtHq1av1xx9/KC0tTb6+vho2bJgGDx6sr776SomJiYqJidEnn3yir776SpLUp08fHT9+XMOHD9fRo0f17bffav78+fb+KwIAAHA6FNABAAAA4B8oVKiQtm3bpgoVKqhDhw6qVq2aevToofT0dNuK9KFDh+rVV19VZGSk6tWrJ19fXz333HMP/Lyffvqpnn/+efXr109Vq1ZVr169dP36dUlS2bJlNW7cOEVFRalkyZJ64403JEnvvvuuRo0apQ8++EDVqlVTq1attGbNGlWqVEmSVKFCBf3www9asWKFatasqdmzZ2vChAl2/NsBAABwThbr/U6zAQAAAAAAAADAhbECHQAAAAAAAACAXFBABwAAAAAAAAAgFxTQAQAAAAAAAADIBQV0AAAAAAAAAAByQQEdAAAAAAAAAIBcUEAHAAAAAAAAACAXFNABAAAAAAAAAMgFBXQAAAAAAAAAAHJBAR0AAAAAAAAAgFxQQAcAAAAAAAAAIBcU0AEAAAAAAAAAyAUFdAAAAAAAAAAAcvH/AwSRXMManojTAAAAAElFTkSuQmCC\n"
},
"metadata": {}
}
],
"source": [
"plt.figure(figsize = (15,15))\n",
"sns.heatmap(cm,\n",
" annot = True,\n",
" fmt = \".3f\",\n",
" linewidths = 0.5,\n",
" square = True,\n",
" cmap = 'Reds',\n",
" xticklabels = encoder.classes_,\n",
" yticklabels = encoder.classes_)\n",
"plt.ylabel('Actual')\n",
"plt.xlabel('Predicted')\n",
"all_sample_title = 'Accuracy Score: {}'.format(score)\n",
"plt.title(all_sample_title, size = 15)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "LP-8enUbdhYw"
},
"source": [
"One of the more obvious results we can observe just from diagonals of the matrix is that many categories like 'consumer loan' and Bank account of service' has almost no correct predictions. We must note however, that the number of data points we had for each of these categories were insignificant compared to the others and the model probably treated those instances as errors instead of a distinct category. This bias however, can be corrected by techniques such as [over and undersampling](https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis). Let's investigate further to see if the model does indeed treat the documents within these categories as errors."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "o37kEaVWdhYx"
},
"source": [
"Categories with more data points generally had a better score, and the reasons for misclassifications in these categories seem to follow the trend of overlapping categories. (For example, 320 descriptions that were supposed to be \"Bank account and service\" were wrongly classified as \"Checking and savings account\"."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-16T08:17:53.123272Z",
"start_time": "2018-11-16T08:17:53.113269Z"
},
"id": "haDB530cdhYx"
},
"outputs": [],
"source": [
"def observe_errors(actual_response, wrongly_predicted_response):\n",
" warnings.filterwarnings(action = 'ignore', category = DeprecationWarning)\n",
" compare = pd.DataFrame(list(zip(x_test, y_test, pred)), columns = ['description', 'actual', 'predicted'])\n",
" compare = compare.assign(actual_product = encoder.inverse_transform(compare.actual),\n",
" predicted_product = encoder.inverse_transform(compare.predicted)) \\\n",
" .loc[(compare.actual == actual_response) & (compare.predicted == wrongly_predicted_response),\n",
" ['description', 'actual_product', 'predicted_product']]\n",
" return compare"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-16T08:17:53.548054Z",
"start_time": "2018-11-16T08:17:53.181781Z"
},
"id": "MP2BHfgHdhYx",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 310
},
"outputId": "788ad62a-8814-4956-b4a3-3e955aeb367d"
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" description \\\n",
"897 I opened a business merchant account about two months ago with bank of America in XXXX, WA. on XXXX XXXX. at zip code XXXX. I felt I was misrepresented about all the fees included in the merchant account service. I was informed that I would recei... \n",
"900 My grandfather XXXX XXXX opened a Certificate of Deposit at XXXX in my name XXXX XXXX on XXXX XXXX, XXXX. XXXX XXXX merged with Capitol One Bank on XXXX XXXX, XXXX. My grandfather recently passed on XXXX XXXX, XXXX and I found the certificate. On... \n",
"984 Premise : I ordered book of checks via US Bank web-portal service. \\nFew weeks went by, still not having received the checks, I called in to find out that they have sent it to some random address. The rep then proceeded to cancel the incorrectly ... \n",
"1007 On XX/XX/2016, at XXXX, I went to an outside ATM machine at BMO Harris Bank, XXXX, IL., to withdraw {$640.00} from my XXXX card. However, the ATM never dispensed the money, money never came out, though it gave me a receipt as if it had given me m... \n",
"1051 Chase has withdrawn money from my personal checking account ( non chase account ) for over four years. When I called Chase ( five times on XX/XX/2016 ), to inquire about the Chase account where the money is going, they were unable to provide the ... \n",
"\n",
" actual_product predicted_product \n",
"897 Bank account or service Checking or savings account \n",
"900 Bank account or service Checking or savings account \n",
"984 Bank account or service Checking or savings account \n",
"1007 Bank account or service Checking or savings account \n",
"1051 Bank account or service Checking or savings account "
],
"text/html": [
"\n",
" <div id=\"df-d1311162-5686-455a-8fc0-33af548d1b98\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>description</th>\n",
" <th>actual_product</th>\n",
" <th>predicted_product</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>897</th>\n",
" <td>I opened a business merchant account about two months ago with bank of America in XXXX, WA. on XXXX XXXX. at zip code XXXX. I felt I was misrepresented about all the fees included in the merchant account service. I was informed that I would recei...</td>\n",
" <td>Bank account or service</td>\n",
" <td>Checking or savings account</td>\n",
" </tr>\n",
" <tr>\n",
" <th>900</th>\n",
" <td>My grandfather XXXX XXXX opened a Certificate of Deposit at XXXX in my name XXXX XXXX on XXXX XXXX, XXXX. XXXX XXXX merged with Capitol One Bank on XXXX XXXX, XXXX. My grandfather recently passed on XXXX XXXX, XXXX and I found the certificate. On...</td>\n",
" <td>Bank account or service</td>\n",
" <td>Checking or savings account</td>\n",
" </tr>\n",
" <tr>\n",
" <th>984</th>\n",
" <td>Premise : I ordered book of checks via US Bank web-portal service. \\nFew weeks went by, still not having received the checks, I called in to find out that they have sent it to some random address. The rep then proceeded to cancel the incorrectly ...</td>\n",
" <td>Bank account or service</td>\n",
" <td>Checking or savings account</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1007</th>\n",
" <td>On XX/XX/2016, at XXXX, I went to an outside ATM machine at BMO Harris Bank, XXXX, IL., to withdraw {$640.00} from my XXXX card. However, the ATM never dispensed the money, money never came out, though it gave me a receipt as if it had given me m...</td>\n",
" <td>Bank account or service</td>\n",
" <td>Checking or savings account</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1051</th>\n",
" <td>Chase has withdrawn money from my personal checking account ( non chase account ) for over four years. When I called Chase ( five times on XX/XX/2016 ), to inquire about the Chase account where the money is going, they were unable to provide the ...</td>\n",
" <td>Bank account or service</td>\n",
" <td>Checking or savings account</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-d1311162-5686-455a-8fc0-33af548d1b98')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-d1311162-5686-455a-8fc0-33af548d1b98 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-d1311162-5686-455a-8fc0-33af548d1b98');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-9f610db4-9956-47b5-8117-e28cbe229bac\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-9f610db4-9956-47b5-8117-e28cbe229bac')\"\n",
" title=\"Suggest charts.\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-9f610db4-9956-47b5-8117-e28cbe229bac button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" </div>\n",
" </div>\n"
]
},
"metadata": {},
"execution_count": 31
}
],
"source": [
"observe_errors(actual_response = 0, wrongly_predicted_response = 1).tail(5)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "klaYGeoKdhYy"
},
"source": [
"We can see that the misclassified complaints shown above is quite ambiguous and contain ideas and keywords within the narrative related to both categories, which is presumably why the model would have misclassified them."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "btJWAMxPdhYy"
},
"source": [
"Because of the how text data is converted into numerical features, data pre-processing is an extremely important step when it comes to NLP problems and the \"garbage-in, garbage-out\" property can be very prevalent compared to other machine learning techniques. Also note that, in this problem that there are existing labels in the dataset, and we could have just as easily used any other supervised learning techniques to classify the documents. If, however, no labels are available, we would then have to turn towards unsupervised learning algorithms such as SVM, K-means or LDA to try and cluster the documents into sensible categories."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "_qaejjybdhYy"
},
"source": [
"We have essentially just taught the computer how to \"understand\" a small selected group of documents in a very human way with approximately 50 lines of code (ignoring the functions for visualisation)!"
]
}
],
"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.1"
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
},
"colab": {
"name": "Financial Complaints Classification.ipynb",
"provenance": [],
"include_colab_link": true
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment