Created
November 13, 2017 08:24
-
-
Save Keerthivasan-A/8d7c8de1bbad27190cc026a466aef9b8 to your computer and use it in GitHub Desktop.
Classifying spam
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## SPAM EMAIL DATASET\n", | |
"\n", | |
"The last column of 'spambase.data' denotes whether the e-mail was considered spam (1) or not (0), i.e. unsolicited commercial e-mail. Most of the attributes indicate whether a particular word or character was frequently occuring in the e-mail. The run-length attributes (55-57) measure the length of sequences of consecutive capital letters. For the statistical measures of each attribute, see the end of this file. Here are the definitions of the attributes: \n", | |
"\n", | |
"48 continuous real [0,100] attributes of type word_freq_WORD \n", | |
"= percentage of words in the e-mail that match WORD, i.e. 100 * (number of times the WORD appears in the e-mail) / total number of words in e-mail. A \"word\" in this case is any string of alphanumeric characters bounded by non-alphanumeric characters or end-of-string. \n", | |
"\n", | |
"6 continuous real [0,100] attributes of type char_freq_CHAR] \n", | |
"= percentage of characters in the e-mail that match CHAR, i.e. 100 * (number of CHAR occurences) / total characters in e-mail \n", | |
"\n", | |
"1 continuous real [1,...] attribute of type capital_run_length_average \n", | |
"= average length of uninterrupted sequences of capital letters \n", | |
"\n", | |
"1 continuous integer [1,...] attribute of type capital_run_length_longest \n", | |
"= length of longest uninterrupted sequence of capital letters \n", | |
"\n", | |
"1 continuous integer [1,...] attribute of type capital_run_length_total \n", | |
"= sum of length of uninterrupted sequences of capital letters \n", | |
"= total number of capital letters in the e-mail \n", | |
"\n", | |
"1 nominal {0,1} class attribute of type spam \n", | |
"= denotes whether the e-mail was considered spam (1) or not (0), i.e. unsolicited commercial e-mail. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import numpy as np\n", | |
"import pandas as pd\n", | |
"import matplotlib.pyplot as plt\n", | |
"import seaborn as sns\n", | |
"\n", | |
"%matplotlib inline" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 37, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"columns = ['word_freq_make','word_freq_address','word_freq_all','word_freq_3d','word_freq_our','word_freq_over','word_freq_remove','word_freq_internet','word_freq_order','word_freq_mail','word_freq_receive','word_freq_will','word_freq_people','word_freq_report','word_freq_addresses','word_freq_free','word_freq_business','word_freq_email','word_freq_you','word_freq_credit','word_freq_your','word_freq_font','word_freq_000','word_freq_money','word_freq_hp','word_freq_hpl','word_freq_george','word_freq_650','word_freq_lab','word_freq_labs','word_freq_telnet','word_freq_857','word_freq_data','word_freq_415','word_freq_85','word_freq_technology','word_freq_1999','word_freq_parts','word_freq_pm','word_freq_direct','word_freq_cs','word_freq_meeting','word_freq_original','word_freq_project','word_freq_re','word_freq_edu','word_freq_table','word_freq_conference','char_freq_;','char_freq_(','char_freq_[','char_freq_!','char_freq_$','char_freq_#','capital_run_length_average','capital_run_length_longest','capital_run_length_total','Target']" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 38, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"df = pd.read_csv('spambase.data.csv', names =columns)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 39, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"<class 'pandas.core.frame.DataFrame'>\n", | |
"RangeIndex: 4601 entries, 0 to 4600\n", | |
"Data columns (total 58 columns):\n", | |
"word_freq_make 4601 non-null float64\n", | |
"word_freq_address 4601 non-null float64\n", | |
"word_freq_all 4601 non-null float64\n", | |
"word_freq_3d 4601 non-null float64\n", | |
"word_freq_our 4601 non-null float64\n", | |
"word_freq_over 4601 non-null float64\n", | |
"word_freq_remove 4601 non-null float64\n", | |
"word_freq_internet 4601 non-null float64\n", | |
"word_freq_order 4601 non-null float64\n", | |
"word_freq_mail 4601 non-null float64\n", | |
"word_freq_receive 4601 non-null float64\n", | |
"word_freq_will 4601 non-null float64\n", | |
"word_freq_people 4601 non-null float64\n", | |
"word_freq_report 4601 non-null float64\n", | |
"word_freq_addresses 4601 non-null float64\n", | |
"word_freq_free 4601 non-null float64\n", | |
"word_freq_business 4601 non-null float64\n", | |
"word_freq_email 4601 non-null float64\n", | |
"word_freq_you 4601 non-null float64\n", | |
"word_freq_credit 4601 non-null float64\n", | |
"word_freq_your 4601 non-null float64\n", | |
"word_freq_font 4601 non-null float64\n", | |
"word_freq_000 4601 non-null float64\n", | |
"word_freq_money 4601 non-null float64\n", | |
"word_freq_hp 4601 non-null float64\n", | |
"word_freq_hpl 4601 non-null float64\n", | |
"word_freq_george 4601 non-null float64\n", | |
"word_freq_650 4601 non-null float64\n", | |
"word_freq_lab 4601 non-null float64\n", | |
"word_freq_labs 4601 non-null float64\n", | |
"word_freq_telnet 4601 non-null float64\n", | |
"word_freq_857 4601 non-null float64\n", | |
"word_freq_data 4601 non-null float64\n", | |
"word_freq_415 4601 non-null float64\n", | |
"word_freq_85 4601 non-null float64\n", | |
"word_freq_technology 4601 non-null float64\n", | |
"word_freq_1999 4601 non-null float64\n", | |
"word_freq_parts 4601 non-null float64\n", | |
"word_freq_pm 4601 non-null float64\n", | |
"word_freq_direct 4601 non-null float64\n", | |
"word_freq_cs 4601 non-null float64\n", | |
"word_freq_meeting 4601 non-null float64\n", | |
"word_freq_original 4601 non-null float64\n", | |
"word_freq_project 4601 non-null float64\n", | |
"word_freq_re 4601 non-null float64\n", | |
"word_freq_edu 4601 non-null float64\n", | |
"word_freq_table 4601 non-null float64\n", | |
"word_freq_conference 4601 non-null float64\n", | |
"char_freq_; 4601 non-null float64\n", | |
"char_freq_( 4601 non-null float64\n", | |
"char_freq_[ 4601 non-null float64\n", | |
"char_freq_! 4601 non-null float64\n", | |
"char_freq_$ 4601 non-null float64\n", | |
"char_freq_# 4601 non-null float64\n", | |
"capital_run_length_average 4601 non-null float64\n", | |
"capital_run_length_longest 4601 non-null int64\n", | |
"capital_run_length_total 4601 non-null int64\n", | |
"Target 4601 non-null int64\n", | |
"dtypes: float64(55), int64(3)\n", | |
"memory usage: 2.0 MB\n" | |
] | |
} | |
], | |
"source": [ | |
"df.info()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style>\n", | |
" .dataframe thead tr:only-child th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: left;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>word_freq_make</th>\n", | |
" <th>word_freq_address</th>\n", | |
" <th>word_freq_all</th>\n", | |
" <th>word_freq_3d</th>\n", | |
" <th>word_freq_our</th>\n", | |
" <th>word_freq_over</th>\n", | |
" <th>word_freq_remove</th>\n", | |
" <th>word_freq_internet</th>\n", | |
" <th>word_freq_order</th>\n", | |
" <th>word_freq_mail</th>\n", | |
" <th>...</th>\n", | |
" <th>char_freq_;</th>\n", | |
" <th>char_freq_(</th>\n", | |
" <th>char_freq_[</th>\n", | |
" <th>char_freq_!</th>\n", | |
" <th>char_freq_$</th>\n", | |
" <th>char_freq_#</th>\n", | |
" <th>capital_run_length_average</th>\n", | |
" <th>capital_run_length_longest</th>\n", | |
" <th>capital_run_length_total</th>\n", | |
" <th>Target</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>count</th>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>...</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" <td>4601.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>mean</th>\n", | |
" <td>0.104553</td>\n", | |
" <td>0.213015</td>\n", | |
" <td>0.280656</td>\n", | |
" <td>0.065425</td>\n", | |
" <td>0.312223</td>\n", | |
" <td>0.095901</td>\n", | |
" <td>0.114208</td>\n", | |
" <td>0.105295</td>\n", | |
" <td>0.090067</td>\n", | |
" <td>0.239413</td>\n", | |
" <td>...</td>\n", | |
" <td>0.038575</td>\n", | |
" <td>0.139030</td>\n", | |
" <td>0.016976</td>\n", | |
" <td>0.269071</td>\n", | |
" <td>0.075811</td>\n", | |
" <td>0.044238</td>\n", | |
" <td>5.191515</td>\n", | |
" <td>52.172789</td>\n", | |
" <td>283.289285</td>\n", | |
" <td>0.394045</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>std</th>\n", | |
" <td>0.305358</td>\n", | |
" <td>1.290575</td>\n", | |
" <td>0.504143</td>\n", | |
" <td>1.395151</td>\n", | |
" <td>0.672513</td>\n", | |
" <td>0.273824</td>\n", | |
" <td>0.391441</td>\n", | |
" <td>0.401071</td>\n", | |
" <td>0.278616</td>\n", | |
" <td>0.644755</td>\n", | |
" <td>...</td>\n", | |
" <td>0.243471</td>\n", | |
" <td>0.270355</td>\n", | |
" <td>0.109394</td>\n", | |
" <td>0.815672</td>\n", | |
" <td>0.245882</td>\n", | |
" <td>0.429342</td>\n", | |
" <td>31.729449</td>\n", | |
" <td>194.891310</td>\n", | |
" <td>606.347851</td>\n", | |
" <td>0.488698</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>min</th>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>...</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>25%</th>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>...</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>1.588000</td>\n", | |
" <td>6.000000</td>\n", | |
" <td>35.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>50%</th>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>...</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.065000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>2.276000</td>\n", | |
" <td>15.000000</td>\n", | |
" <td>95.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>75%</th>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.420000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.380000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.160000</td>\n", | |
" <td>...</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.188000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>0.315000</td>\n", | |
" <td>0.052000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>3.706000</td>\n", | |
" <td>43.000000</td>\n", | |
" <td>266.000000</td>\n", | |
" <td>1.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>max</th>\n", | |
" <td>4.540000</td>\n", | |
" <td>14.280000</td>\n", | |
" <td>5.100000</td>\n", | |
" <td>42.810000</td>\n", | |
" <td>10.000000</td>\n", | |
" <td>5.880000</td>\n", | |
" <td>7.270000</td>\n", | |
" <td>11.110000</td>\n", | |
" <td>5.260000</td>\n", | |
" <td>18.180000</td>\n", | |
" <td>...</td>\n", | |
" <td>4.385000</td>\n", | |
" <td>9.752000</td>\n", | |
" <td>4.081000</td>\n", | |
" <td>32.478000</td>\n", | |
" <td>6.003000</td>\n", | |
" <td>19.829000</td>\n", | |
" <td>1102.500000</td>\n", | |
" <td>9989.000000</td>\n", | |
" <td>15841.000000</td>\n", | |
" <td>1.000000</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"<p>8 rows × 58 columns</p>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" word_freq_make word_freq_address word_freq_all word_freq_3d \\\n", | |
"count 4601.000000 4601.000000 4601.000000 4601.000000 \n", | |
"mean 0.104553 0.213015 0.280656 0.065425 \n", | |
"std 0.305358 1.290575 0.504143 1.395151 \n", | |
"min 0.000000 0.000000 0.000000 0.000000 \n", | |
"25% 0.000000 0.000000 0.000000 0.000000 \n", | |
"50% 0.000000 0.000000 0.000000 0.000000 \n", | |
"75% 0.000000 0.000000 0.420000 0.000000 \n", | |
"max 4.540000 14.280000 5.100000 42.810000 \n", | |
"\n", | |
" word_freq_our word_freq_over word_freq_remove word_freq_internet \\\n", | |
"count 4601.000000 4601.000000 4601.000000 4601.000000 \n", | |
"mean 0.312223 0.095901 0.114208 0.105295 \n", | |
"std 0.672513 0.273824 0.391441 0.401071 \n", | |
"min 0.000000 0.000000 0.000000 0.000000 \n", | |
"25% 0.000000 0.000000 0.000000 0.000000 \n", | |
"50% 0.000000 0.000000 0.000000 0.000000 \n", | |
"75% 0.380000 0.000000 0.000000 0.000000 \n", | |
"max 10.000000 5.880000 7.270000 11.110000 \n", | |
"\n", | |
" word_freq_order word_freq_mail ... char_freq_; char_freq_( \\\n", | |
"count 4601.000000 4601.000000 ... 4601.000000 4601.000000 \n", | |
"mean 0.090067 0.239413 ... 0.038575 0.139030 \n", | |
"std 0.278616 0.644755 ... 0.243471 0.270355 \n", | |
"min 0.000000 0.000000 ... 0.000000 0.000000 \n", | |
"25% 0.000000 0.000000 ... 0.000000 0.000000 \n", | |
"50% 0.000000 0.000000 ... 0.000000 0.065000 \n", | |
"75% 0.000000 0.160000 ... 0.000000 0.188000 \n", | |
"max 5.260000 18.180000 ... 4.385000 9.752000 \n", | |
"\n", | |
" char_freq_[ char_freq_! char_freq_$ char_freq_# \\\n", | |
"count 4601.000000 4601.000000 4601.000000 4601.000000 \n", | |
"mean 0.016976 0.269071 0.075811 0.044238 \n", | |
"std 0.109394 0.815672 0.245882 0.429342 \n", | |
"min 0.000000 0.000000 0.000000 0.000000 \n", | |
"25% 0.000000 0.000000 0.000000 0.000000 \n", | |
"50% 0.000000 0.000000 0.000000 0.000000 \n", | |
"75% 0.000000 0.315000 0.052000 0.000000 \n", | |
"max 4.081000 32.478000 6.003000 19.829000 \n", | |
"\n", | |
" capital_run_length_average capital_run_length_longest \\\n", | |
"count 4601.000000 4601.000000 \n", | |
"mean 5.191515 52.172789 \n", | |
"std 31.729449 194.891310 \n", | |
"min 1.000000 1.000000 \n", | |
"25% 1.588000 6.000000 \n", | |
"50% 2.276000 15.000000 \n", | |
"75% 3.706000 43.000000 \n", | |
"max 1102.500000 9989.000000 \n", | |
"\n", | |
" capital_run_length_total Target \n", | |
"count 4601.000000 4601.000000 \n", | |
"mean 283.289285 0.394045 \n", | |
"std 606.347851 0.488698 \n", | |
"min 1.000000 0.000000 \n", | |
"25% 35.000000 0.000000 \n", | |
"50% 95.000000 0.000000 \n", | |
"75% 266.000000 1.000000 \n", | |
"max 15841.000000 1.000000 \n", | |
"\n", | |
"[8 rows x 58 columns]" | |
] | |
}, | |
"execution_count": 15, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.describe()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 50, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style>\n", | |
" .dataframe thead tr:only-child th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: left;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>word_freq_make</th>\n", | |
" <th>word_freq_address</th>\n", | |
" <th>word_freq_all</th>\n", | |
" <th>word_freq_3d</th>\n", | |
" <th>word_freq_our</th>\n", | |
" <th>word_freq_over</th>\n", | |
" <th>word_freq_remove</th>\n", | |
" <th>word_freq_internet</th>\n", | |
" <th>word_freq_order</th>\n", | |
" <th>word_freq_mail</th>\n", | |
" <th>...</th>\n", | |
" <th>word_freq_pm</th>\n", | |
" <th>word_freq_direct</th>\n", | |
" <th>word_freq_cs</th>\n", | |
" <th>word_freq_meeting</th>\n", | |
" <th>word_freq_original</th>\n", | |
" <th>word_freq_project</th>\n", | |
" <th>word_freq_re</th>\n", | |
" <th>word_freq_edu</th>\n", | |
" <th>word_freq_table</th>\n", | |
" <th>word_freq_conference</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>0.00</td>\n", | |
" <td>0.64</td>\n", | |
" <td>0.64</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.32</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.00</td>\n", | |
" <td>...</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>0.21</td>\n", | |
" <td>0.28</td>\n", | |
" <td>0.50</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.14</td>\n", | |
" <td>0.28</td>\n", | |
" <td>0.21</td>\n", | |
" <td>0.07</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.94</td>\n", | |
" <td>...</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>0.06</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.71</td>\n", | |
" <td>0.0</td>\n", | |
" <td>1.23</td>\n", | |
" <td>0.19</td>\n", | |
" <td>0.19</td>\n", | |
" <td>0.12</td>\n", | |
" <td>0.64</td>\n", | |
" <td>0.25</td>\n", | |
" <td>...</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.06</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.12</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.06</td>\n", | |
" <td>0.06</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>0.00</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.63</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.31</td>\n", | |
" <td>0.63</td>\n", | |
" <td>0.31</td>\n", | |
" <td>0.63</td>\n", | |
" <td>...</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>0.00</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.63</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.31</td>\n", | |
" <td>0.63</td>\n", | |
" <td>0.31</td>\n", | |
" <td>0.63</td>\n", | |
" <td>...</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.00</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"<p>5 rows × 48 columns</p>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" word_freq_make word_freq_address word_freq_all word_freq_3d \\\n", | |
"0 0.00 0.64 0.64 0.0 \n", | |
"1 0.21 0.28 0.50 0.0 \n", | |
"2 0.06 0.00 0.71 0.0 \n", | |
"3 0.00 0.00 0.00 0.0 \n", | |
"4 0.00 0.00 0.00 0.0 \n", | |
"\n", | |
" word_freq_our word_freq_over word_freq_remove word_freq_internet \\\n", | |
"0 0.32 0.00 0.00 0.00 \n", | |
"1 0.14 0.28 0.21 0.07 \n", | |
"2 1.23 0.19 0.19 0.12 \n", | |
"3 0.63 0.00 0.31 0.63 \n", | |
"4 0.63 0.00 0.31 0.63 \n", | |
"\n", | |
" word_freq_order word_freq_mail ... word_freq_pm \\\n", | |
"0 0.00 0.00 ... 0.0 \n", | |
"1 0.00 0.94 ... 0.0 \n", | |
"2 0.64 0.25 ... 0.0 \n", | |
"3 0.31 0.63 ... 0.0 \n", | |
"4 0.31 0.63 ... 0.0 \n", | |
"\n", | |
" word_freq_direct word_freq_cs word_freq_meeting word_freq_original \\\n", | |
"0 0.00 0.0 0.0 0.00 \n", | |
"1 0.00 0.0 0.0 0.00 \n", | |
"2 0.06 0.0 0.0 0.12 \n", | |
"3 0.00 0.0 0.0 0.00 \n", | |
"4 0.00 0.0 0.0 0.00 \n", | |
"\n", | |
" word_freq_project word_freq_re word_freq_edu word_freq_table \\\n", | |
"0 0.0 0.00 0.00 0.0 \n", | |
"1 0.0 0.00 0.00 0.0 \n", | |
"2 0.0 0.06 0.06 0.0 \n", | |
"3 0.0 0.00 0.00 0.0 \n", | |
"4 0.0 0.00 0.00 0.0 \n", | |
"\n", | |
" word_freq_conference \n", | |
"0 0.0 \n", | |
"1 0.0 \n", | |
"2 0.0 \n", | |
"3 0.0 \n", | |
"4 0.0 \n", | |
"\n", | |
"[5 rows x 48 columns]" | |
] | |
}, | |
"execution_count": 50, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.loc[:,'word_freq_make':'word_freq_conference'].head()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Machine Learning section" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 71, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"from sklearn.model_selection import train_test_split\n", | |
"from sklearn.naive_bayes import MultinomialNB\n", | |
"from sklearn.model_selection import cross_val_score,ShuffleSplit,learning_curve" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 53, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Predictor size: (4601, 48) \n", | |
"Classification size: (4601,)\n" | |
] | |
} | |
], | |
"source": [ | |
"# Preparing predictor and output variables\n", | |
"\n", | |
"X = df.loc[:,'word_freq_make':'word_freq_conference']\n", | |
"y = df['Target']\n", | |
"print(\"Predictor size: \",X.shape,\"\\nClassification size:\", y.shape)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 56, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Predictor shape: (3220, 48) \n", | |
"Classification size: (3220,)\n" | |
] | |
} | |
], | |
"source": [ | |
"# Splitting prepared dataset to train and test sets\n", | |
"\n", | |
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)\n", | |
"print(\"Predictor shape: \",X_train.shape,\"\\nClassification size:\", y_train.shape)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 63, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Model object creation\n", | |
"\n", | |
"nb = MultinomialNB( )" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 64, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)" | |
] | |
}, | |
"execution_count": 64, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Training our model with \"*_train\" datasets\n", | |
"\n", | |
"nb.fit(X_train, y_train)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 61, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"0.87834902244750179" | |
] | |
}, | |
"execution_count": 61, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"#Model accuracy\n", | |
"\n", | |
"nb.score(X_test, y_test)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Learning Curve" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 70, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def plot_learning_curve(estimator, title, X, y, ylim=None, cv=None,\n", | |
" n_jobs=1, train_sizes=np.linspace(.1, 1.0, 5)):\n", | |
" \"\"\"\n", | |
" Generate a simple plot of the test and training learning curve.\n", | |
"\n", | |
" Parameters\n", | |
" ----------\n", | |
" estimator : object type that implements the \"fit\" and \"predict\" methods\n", | |
" An object of that type which is cloned for each validation.\n", | |
"\n", | |
" title : string\n", | |
" Title for the chart.\n", | |
"\n", | |
" X : array-like, shape (n_samples, n_features)\n", | |
" Training vector, where n_samples is the number of samples and\n", | |
" n_features is the number of features.\n", | |
"\n", | |
" y : array-like, shape (n_samples) or (n_samples, n_features), optional\n", | |
" Target relative to X for classification or regression;\n", | |
" None for unsupervised learning.\n", | |
"\n", | |
" ylim : tuple, shape (ymin, ymax), optional\n", | |
" Defines minimum and maximum yvalues plotted.\n", | |
"\n", | |
" cv : int, cross-validation generator or an iterable, optional\n", | |
" Determines the cross-validation splitting strategy.\n", | |
" Possible inputs for cv are:\n", | |
" - None, to use the default 3-fold cross-validation,\n", | |
" - integer, to specify the number of folds.\n", | |
" - An object to be used as a cross-validation generator.\n", | |
" - An iterable yielding train/test splits.\n", | |
"\n", | |
" For integer/None inputs, if ``y`` is binary or multiclass,\n", | |
" :class:`StratifiedKFold` used. If the estimator is not a classifier\n", | |
" or if ``y`` is neither binary nor multiclass, :class:`KFold` is used.\n", | |
"\n", | |
" Refer :ref:`User Guide <cross_validation>` for the various\n", | |
" cross-validators that can be used here.\n", | |
"\n", | |
" n_jobs : integer, optional\n", | |
" Number of jobs to run in parallel (default 1).\n", | |
" \"\"\"\n", | |
" plt.figure()\n", | |
" plt.title(title)\n", | |
" if ylim is not None:\n", | |
" plt.ylim(*ylim)\n", | |
" plt.xlabel(\"Training examples\")\n", | |
" plt.ylabel(\"Score\")\n", | |
" train_sizes, train_scores, test_scores = learning_curve(\n", | |
" estimator, X, y, cv=cv, n_jobs=n_jobs, train_sizes=train_sizes)\n", | |
" train_scores_mean = np.mean(train_scores, axis=1)\n", | |
" train_scores_std = np.std(train_scores, axis=1)\n", | |
" test_scores_mean = np.mean(test_scores, axis=1)\n", | |
" test_scores_std = np.std(test_scores, axis=1)\n", | |
" plt.grid()\n", | |
"\n", | |
" plt.fill_between(train_sizes, train_scores_mean - train_scores_std,\n", | |
" train_scores_mean + train_scores_std, alpha=0.1,\n", | |
" color=\"r\")\n", | |
" plt.fill_between(train_sizes, test_scores_mean - test_scores_std,\n", | |
" test_scores_mean + test_scores_std, alpha=0.1, color=\"g\")\n", | |
" plt.plot(train_sizes, train_scores_mean, 'o-', color=\"r\",\n", | |
" label=\"Training score\")\n", | |
" plt.plot(train_sizes, test_scores_mean, 'o-', color=\"g\",\n", | |
" label=\"Cross-validation score\")\n", | |
"\n", | |
" plt.legend(loc=\"best\")\n", | |
" return plt" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 73, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nl1QREYkoKYiISERJQUREIkoKIiISUVIQEZGIkoKIiESUFEREJKKkICIiESUFERGJKCmIiEhESUFE\nRCJKCiIiElFSEBGRiJKCiIhElBRERCSipCAiIhElBRERiSgpiIhIRElBREQiu1ZS2LgRvv02eK1d\nC+vXB6+SkuC1YUNQZuNG2LQJ3GHzZtiyJXht3QrbtgWv0tLgVVYG5eXByz14iUj1pkyBggKIxYK/\nU6Y0dESNWxb3V27Gam5MpkyBa6+Fzz6DvfeGn/8cTjyx8gHcHcwqL7d1a7BMOqmWiU+Lhfk2/jd5\nmlntpqWqJ77OxL+Jw+5B7OnmJ09L3l13/YRrP5rMZ63K2HdDDhP3G8fYC/+Yfj/s4uY8P4mz//GD\nGveX19MJg1N/Jx5l5WU7XMf2xmN/mcq0Sedy7chtfNYW9l37KRNvOYfTvBw/fUyt6igtL623/Zkt\njrOtbNt2L2d/mcojt55XZX+NBRg7tt7jtJ1txxYVFfncuXNrv8CUKTBuXHD2H9eiBdx4I5xySrWL\nzl60iOIePeoWaHy/Jl49pJjm5eXhpOBKI/5+OB6Viw9XzKNSmUrjwOufLefgffcO6/WK+s0oD8fL\nvbzibyyG47gZTz75O3628XE25lVsSsttcEvLUZxwyvhoPVUOBGmSjFMRd5V9ESZQ92B8ySdfs39B\nh6iMuSdsbMK2xveJBTvDUu7fcNTLE/ZYWDaeOBPqdi8P9ycYleupVDfg5R7WC/+cdS+X+ww25ifs\nr61wE8MYXnxexTqj9cTXkbiTEtaXMKNiuarl4u+9xbfFDKtSLjn2yvtpxaer2Hvf3YN4rJrl0vy1\neNGE+g1LXz6M84W7ruKCIzdW2Wd3v9CSI//7hkr7INXh6avPV7HXvh2qzqjEgliqL5JafKVpTppq\nXD5NgZWffEXHgr2SitS8jhfuuIILjtxQZX9NfrUDY2d9U1MQCauyee5eVGO5Jp8UCgqYstunXHsU\nYZaFic/D6YtiePt2FeVS7IfSsjJyYzmQfACMlqk8EB0ok4tXu49r2P81vT0p6i4vd2IxC2eXUxqD\nrTmwNfy7JcfZmgPbYp4w3dmSA2OP38rXrauupsNGuPGFHMotCMkBt2CbywG3YOsr5jvl4ec9mmap\nh8stXlfNwzXVtT311kdd/94HtiQk0LhmpdBvRcVbGC9PmmG3ymXTDde1jsa07s25pD6gOjTbgQuX\n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\nifx/W/1r0aXbko8AAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x24c300ade10>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# Parameters for the function\n", | |
"title = \"Learning Curves (Naive Bayes)\"\n", | |
"cv = ShuffleSplit(n_splits=50, test_size=0.2, random_state=42)\n", | |
"estimator = MultinomialNB()\n", | |
"\n", | |
"# Calling the function\n", | |
"plot_learning_curve(estimator, title, X, y, ylim=(0.0, 1.01), cv=cv, n_jobs=4)\n", | |
"\n", | |
"plt.show()" | |
] | |
} | |
], | |
"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.6.3" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment