Skip to content

Instantly share code, notes, and snippets.

@decisionstats
Created December 30, 2016 15:20
Show Gist options
  • Save decisionstats/47a2324b14ebfd22657b40ec1ae5b480 to your computer and use it in GitHub Desktop.
Save decisionstats/47a2324b14ebfd22657b40ec1ae5b480 to your computer and use it in GitHub Desktop.
{
"cells": [
{
"cell_type": "code",
"execution_count": 258,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# rattle package in R has weather dataset\n",
"#(see help at http://artax.karlin.mff.cuni.cz/r-help/library/rattle/html/weather.html)"
]
},
{
"cell_type": "code",
"execution_count": 259,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import os as os"
]
},
{
"cell_type": "code",
"execution_count": 260,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd\n"
]
},
{
"cell_type": "code",
"execution_count": 261,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"'/home/ajayohri'"
]
},
"execution_count": 261,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"os.getcwd()"
]
},
{
"cell_type": "code",
"execution_count": 262,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"['.hplip',\n",
" '.xsession-errors.old',\n",
" 'VirtualBox VMs',\n",
" 'filename.pkl_04.npy',\n",
" '.thunderbird',\n",
" 'SVM.R',\n",
" 'R',\n",
" 'Desktop',\n",
" 'filename.pkl_07.npy',\n",
" '.cache',\n",
" '.webex',\n",
" 'file.R',\n",
" '.ipython',\n",
" 'unique_ids_for_list.html',\n",
" 'filename.pkl_11.npy',\n",
" '.Xauthority',\n",
" 'Dropbox',\n",
" 'examples.desktop',\n",
" 'machine learning-plot and bagged pima indians.ipynb',\n",
" 'date time.ipynb',\n",
" 'Untitled.ipynb',\n",
" '.rstudio-desktop',\n",
" 'filename.pkl_01.npy',\n",
" 'anaconda3',\n",
" '.dropbox',\n",
" 'Music',\n",
" '.pki',\n",
" 'rsconnect',\n",
" 'GoodReads.ipynb',\n",
" '.config',\n",
" 'diamsum.html',\n",
" 'filename.pkl_06.npy',\n",
" 'data inspection .ipynb',\n",
" '.sudo_as_admin_successful',\n",
" '.continuum',\n",
" '.java',\n",
" 'unique ids for list.R',\n",
" '.bashrc-anaconda3.bak',\n",
" '.texmf-var',\n",
" 'numpy scipy pandas.ipynb',\n",
" 'mozilla.pdf',\n",
" '.dropbox-dist',\n",
" '.bash_logout',\n",
" '.jupyter',\n",
" '.ecryptfs',\n",
" '.dbus',\n",
" '.local',\n",
" '.lyx',\n",
" '.xsession-errors',\n",
" 'hebrew',\n",
" 'RCommanderMarkdown.Rmd',\n",
" '.bash_history',\n",
" 'SAS',\n",
" 'nbr2mp4.sh',\n",
" '.adobe',\n",
" '.Skype',\n",
" 'filename.pkl_05.npy',\n",
" '.wajig',\n",
" 'ajay ohri.odt',\n",
" '.macromedia',\n",
" '.gphoto',\n",
" '.oracle_jre_usage',\n",
" 'machine learning-rattle dataset from R.ipynb',\n",
" '.profile',\n",
" 'file operations.ipynb',\n",
" 'Documents',\n",
" 'filename.pkl_09.npy',\n",
" 'Videos',\n",
" 'RCommander.R',\n",
" 'filename.pkl_08.npy',\n",
" '.gstreamer-0.10',\n",
" 'SVM.html',\n",
" '.Private',\n",
" 'RCommander.txt',\n",
" 're for searching strings.ipynb',\n",
" '.Rhistory',\n",
" 'filename.pkl_02.npy',\n",
" 'RcmdrMarkdown.Rmd',\n",
" 'Scikit Tutorial',\n",
" 'machine learning.ipynb',\n",
" '.ivy2',\n",
" 'assignment2.R',\n",
" 'assignment2.html',\n",
" 'filename.pkl_03.npy',\n",
" 'Public',\n",
" 'nbr2mp4.tar',\n",
" 'RcmdrMarkdown.md',\n",
" '.bashrc',\n",
" '.mozilla',\n",
" 'Pictures',\n",
" 'Data Viz Tutorial.ipynb',\n",
" 'filename.pkl_10.npy',\n",
" '.RData',\n",
" '.gconf',\n",
" 'data transformations.ipynb',\n",
" 'RcmdrMarkdown.html',\n",
" 'file.html',\n",
" 'Scikit Tutorial.ipynb',\n",
" 'Strings, Lists and Maps.ipynb',\n",
" 'filename.pkl',\n",
" 'weather.csv',\n",
" 'Downloads',\n",
" '.gnupg',\n",
" '.nano',\n",
" 'variables in strings.ipynb',\n",
" 'Templates',\n",
" '.ICEauthority',\n",
" '.ipynb_checkpoints']"
]
},
"execution_count": 262,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"os.listdir()"
]
},
{
"cell_type": "code",
"execution_count": 263,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['weather.csv']\n"
]
}
],
"source": [
"#Finding only csv files in a directory using os and glob packages\n",
"import glob\n",
"\n",
"path = os.getcwd()\n",
"extension = 'csv'\n",
"os.chdir(path)\n",
"result = [i for i in glob.glob('*.{}'.format(extension))]\n",
"print(result)"
]
},
{
"cell_type": "code",
"execution_count": 264,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"dataframe=pd.read_csv(\"weather.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 265,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unnamed: 0</th>\n",
" <th>Date</th>\n",
" <th>Location</th>\n",
" <th>MinTemp</th>\n",
" <th>MaxTemp</th>\n",
" <th>Rainfall</th>\n",
" <th>Evaporation</th>\n",
" <th>Sunshine</th>\n",
" <th>WindGustDir</th>\n",
" <th>WindGustSpeed</th>\n",
" <th>...</th>\n",
" <th>Humidity3pm</th>\n",
" <th>Pressure9am</th>\n",
" <th>Pressure3pm</th>\n",
" <th>Cloud9am</th>\n",
" <th>Cloud3pm</th>\n",
" <th>Temp9am</th>\n",
" <th>Temp3pm</th>\n",
" <th>RainToday</th>\n",
" <th>RISK_MM</th>\n",
" <th>RainTomorrow</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2007-11-01</td>\n",
" <td>Canberra</td>\n",
" <td>8.0</td>\n",
" <td>24.3</td>\n",
" <td>0.0</td>\n",
" <td>3.4</td>\n",
" <td>6.3</td>\n",
" <td>NW</td>\n",
" <td>30.0</td>\n",
" <td>...</td>\n",
" <td>29</td>\n",
" <td>1019.7</td>\n",
" <td>1015.0</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>14.4</td>\n",
" <td>23.6</td>\n",
" <td>No</td>\n",
" <td>3.6</td>\n",
" <td>Yes</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>2007-11-02</td>\n",
" <td>Canberra</td>\n",
" <td>14.0</td>\n",
" <td>26.9</td>\n",
" <td>3.6</td>\n",
" <td>4.4</td>\n",
" <td>9.7</td>\n",
" <td>ENE</td>\n",
" <td>39.0</td>\n",
" <td>...</td>\n",
" <td>36</td>\n",
" <td>1012.4</td>\n",
" <td>1008.4</td>\n",
" <td>5</td>\n",
" <td>3</td>\n",
" <td>17.5</td>\n",
" <td>25.7</td>\n",
" <td>Yes</td>\n",
" <td>3.6</td>\n",
" <td>Yes</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>2007-11-03</td>\n",
" <td>Canberra</td>\n",
" <td>13.7</td>\n",
" <td>23.4</td>\n",
" <td>3.6</td>\n",
" <td>5.8</td>\n",
" <td>3.3</td>\n",
" <td>NW</td>\n",
" <td>85.0</td>\n",
" <td>...</td>\n",
" <td>69</td>\n",
" <td>1009.5</td>\n",
" <td>1007.2</td>\n",
" <td>8</td>\n",
" <td>7</td>\n",
" <td>15.4</td>\n",
" <td>20.2</td>\n",
" <td>Yes</td>\n",
" <td>39.8</td>\n",
" <td>Yes</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>2007-11-04</td>\n",
" <td>Canberra</td>\n",
" <td>13.3</td>\n",
" <td>15.5</td>\n",
" <td>39.8</td>\n",
" <td>7.2</td>\n",
" <td>9.1</td>\n",
" <td>NW</td>\n",
" <td>54.0</td>\n",
" <td>...</td>\n",
" <td>56</td>\n",
" <td>1005.5</td>\n",
" <td>1007.0</td>\n",
" <td>2</td>\n",
" <td>7</td>\n",
" <td>13.5</td>\n",
" <td>14.1</td>\n",
" <td>Yes</td>\n",
" <td>2.8</td>\n",
" <td>Yes</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>2007-11-05</td>\n",
" <td>Canberra</td>\n",
" <td>7.6</td>\n",
" <td>16.1</td>\n",
" <td>2.8</td>\n",
" <td>5.6</td>\n",
" <td>10.6</td>\n",
" <td>SSE</td>\n",
" <td>50.0</td>\n",
" <td>...</td>\n",
" <td>49</td>\n",
" <td>1018.3</td>\n",
" <td>1018.5</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>11.1</td>\n",
" <td>15.4</td>\n",
" <td>Yes</td>\n",
" <td>0.0</td>\n",
" <td>No</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 25 columns</p>\n",
"</div>"
],
"text/plain": [
" Unnamed: 0 Date Location MinTemp MaxTemp Rainfall Evaporation \\\n",
"0 1 2007-11-01 Canberra 8.0 24.3 0.0 3.4 \n",
"1 2 2007-11-02 Canberra 14.0 26.9 3.6 4.4 \n",
"2 3 2007-11-03 Canberra 13.7 23.4 3.6 5.8 \n",
"3 4 2007-11-04 Canberra 13.3 15.5 39.8 7.2 \n",
"4 5 2007-11-05 Canberra 7.6 16.1 2.8 5.6 \n",
"\n",
" Sunshine WindGustDir WindGustSpeed ... Humidity3pm Pressure9am \\\n",
"0 6.3 NW 30.0 ... 29 1019.7 \n",
"1 9.7 ENE 39.0 ... 36 1012.4 \n",
"2 3.3 NW 85.0 ... 69 1009.5 \n",
"3 9.1 NW 54.0 ... 56 1005.5 \n",
"4 10.6 SSE 50.0 ... 49 1018.3 \n",
"\n",
" Pressure3pm Cloud9am Cloud3pm Temp9am Temp3pm RainToday RISK_MM \\\n",
"0 1015.0 7 7 14.4 23.6 No 3.6 \n",
"1 1008.4 5 3 17.5 25.7 Yes 3.6 \n",
"2 1007.2 8 7 15.4 20.2 Yes 39.8 \n",
"3 1007.0 2 7 13.5 14.1 Yes 2.8 \n",
"4 1018.5 7 7 11.1 15.4 Yes 0.0 \n",
"\n",
" RainTomorrow \n",
"0 Yes \n",
"1 Yes \n",
"2 Yes \n",
"3 Yes \n",
"4 No \n",
"\n",
"[5 rows x 25 columns]"
]
},
"execution_count": 265,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataframe.head()"
]
},
{
"cell_type": "code",
"execution_count": 266,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 366 entries, 0 to 365\n",
"Data columns (total 25 columns):\n",
"Unnamed: 0 366 non-null int64\n",
"Date 366 non-null object\n",
"Location 366 non-null object\n",
"MinTemp 366 non-null float64\n",
"MaxTemp 366 non-null float64\n",
"Rainfall 366 non-null float64\n",
"Evaporation 366 non-null float64\n",
"Sunshine 363 non-null float64\n",
"WindGustDir 363 non-null object\n",
"WindGustSpeed 364 non-null float64\n",
"WindDir9am 335 non-null object\n",
"WindDir3pm 365 non-null object\n",
"WindSpeed9am 359 non-null float64\n",
"WindSpeed3pm 366 non-null int64\n",
"Humidity9am 366 non-null int64\n",
"Humidity3pm 366 non-null int64\n",
"Pressure9am 366 non-null float64\n",
"Pressure3pm 366 non-null float64\n",
"Cloud9am 366 non-null int64\n",
"Cloud3pm 366 non-null int64\n",
"Temp9am 366 non-null float64\n",
"Temp3pm 366 non-null float64\n",
"RainToday 366 non-null object\n",
"RISK_MM 366 non-null float64\n",
"RainTomorrow 366 non-null object\n",
"dtypes: float64(12), int64(6), object(7)\n",
"memory usage: 71.6+ KB\n"
]
}
],
"source": [
"dataframe.info()"
]
},
{
"cell_type": "code",
"execution_count": 267,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"dataframe=dataframe.drop('Unnamed: 0', 1)"
]
},
{
"cell_type": "code",
"execution_count": 268,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/ajayohri/anaconda3/lib/python3.5/site-packages/numpy/lib/function_base.py:3834: RuntimeWarning: Invalid value encountered in percentile\n",
" RuntimeWarning)\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>MinTemp</th>\n",
" <th>MaxTemp</th>\n",
" <th>Rainfall</th>\n",
" <th>Evaporation</th>\n",
" <th>Sunshine</th>\n",
" <th>WindGustSpeed</th>\n",
" <th>WindSpeed9am</th>\n",
" <th>WindSpeed3pm</th>\n",
" <th>Humidity9am</th>\n",
" <th>Humidity3pm</th>\n",
" <th>Pressure9am</th>\n",
" <th>Pressure3pm</th>\n",
" <th>Cloud9am</th>\n",
" <th>Cloud3pm</th>\n",
" <th>Temp9am</th>\n",
" <th>Temp3pm</th>\n",
" <th>RISK_MM</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>366.000000</td>\n",
" <td>366.000000</td>\n",
" <td>366.000000</td>\n",
" <td>366.000000</td>\n",
" <td>363.000000</td>\n",
" <td>364.000000</td>\n",
" <td>359.000000</td>\n",
" <td>366.000000</td>\n",
" <td>366.000000</td>\n",
" <td>366.000000</td>\n",
" <td>366.000000</td>\n",
" <td>366.000000</td>\n",
" <td>366.000000</td>\n",
" <td>366.000000</td>\n",
" <td>366.000000</td>\n",
" <td>366.000000</td>\n",
" <td>366.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>7.265574</td>\n",
" <td>20.550273</td>\n",
" <td>1.428415</td>\n",
" <td>4.521858</td>\n",
" <td>7.909366</td>\n",
" <td>39.840659</td>\n",
" <td>9.651811</td>\n",
" <td>17.986339</td>\n",
" <td>72.035519</td>\n",
" <td>44.519126</td>\n",
" <td>1019.709016</td>\n",
" <td>1016.810383</td>\n",
" <td>3.890710</td>\n",
" <td>4.024590</td>\n",
" <td>12.358470</td>\n",
" <td>19.230874</td>\n",
" <td>1.428415</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>6.025800</td>\n",
" <td>6.690516</td>\n",
" <td>4.225800</td>\n",
" <td>2.669383</td>\n",
" <td>3.481517</td>\n",
" <td>13.059807</td>\n",
" <td>7.951929</td>\n",
" <td>8.856997</td>\n",
" <td>13.137058</td>\n",
" <td>16.850947</td>\n",
" <td>6.686212</td>\n",
" <td>6.469422</td>\n",
" <td>2.956131</td>\n",
" <td>2.666268</td>\n",
" <td>5.630832</td>\n",
" <td>6.640346</td>\n",
" <td>4.225800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-5.300000</td>\n",
" <td>7.600000</td>\n",
" <td>0.000000</td>\n",
" <td>0.200000</td>\n",
" <td>0.000000</td>\n",
" <td>13.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>36.000000</td>\n",
" <td>13.000000</td>\n",
" <td>996.500000</td>\n",
" <td>996.800000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.100000</td>\n",
" <td>5.100000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>2.300000</td>\n",
" <td>15.025000</td>\n",
" <td>0.000000</td>\n",
" <td>2.200000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>11.000000</td>\n",
" <td>64.000000</td>\n",
" <td>32.250000</td>\n",
" <td>1015.350000</td>\n",
" <td>1012.800000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>7.625000</td>\n",
" <td>14.150000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>7.450000</td>\n",
" <td>19.650000</td>\n",
" <td>0.000000</td>\n",
" <td>4.200000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>17.000000</td>\n",
" <td>72.000000</td>\n",
" <td>43.000000</td>\n",
" <td>1020.150000</td>\n",
" <td>1017.400000</td>\n",
" <td>3.500000</td>\n",
" <td>4.000000</td>\n",
" <td>12.550000</td>\n",
" <td>18.550000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>12.500000</td>\n",
" <td>25.500000</td>\n",
" <td>0.200000</td>\n",
" <td>6.400000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>24.000000</td>\n",
" <td>81.000000</td>\n",
" <td>55.000000</td>\n",
" <td>1024.475000</td>\n",
" <td>1021.475000</td>\n",
" <td>7.000000</td>\n",
" <td>7.000000</td>\n",
" <td>17.000000</td>\n",
" <td>24.000000</td>\n",
" <td>0.200000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>20.900000</td>\n",
" <td>35.800000</td>\n",
" <td>39.800000</td>\n",
" <td>13.800000</td>\n",
" <td>13.600000</td>\n",
" <td>98.000000</td>\n",
" <td>41.000000</td>\n",
" <td>52.000000</td>\n",
" <td>99.000000</td>\n",
" <td>96.000000</td>\n",
" <td>1035.700000</td>\n",
" <td>1033.200000</td>\n",
" <td>8.000000</td>\n",
" <td>8.000000</td>\n",
" <td>24.700000</td>\n",
" <td>34.500000</td>\n",
" <td>39.800000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" MinTemp MaxTemp Rainfall Evaporation Sunshine \\\n",
"count 366.000000 366.000000 366.000000 366.000000 363.000000 \n",
"mean 7.265574 20.550273 1.428415 4.521858 7.909366 \n",
"std 6.025800 6.690516 4.225800 2.669383 3.481517 \n",
"min -5.300000 7.600000 0.000000 0.200000 0.000000 \n",
"25% 2.300000 15.025000 0.000000 2.200000 NaN \n",
"50% 7.450000 19.650000 0.000000 4.200000 NaN \n",
"75% 12.500000 25.500000 0.200000 6.400000 NaN \n",
"max 20.900000 35.800000 39.800000 13.800000 13.600000 \n",
"\n",
" WindGustSpeed WindSpeed9am WindSpeed3pm Humidity9am Humidity3pm \\\n",
"count 364.000000 359.000000 366.000000 366.000000 366.000000 \n",
"mean 39.840659 9.651811 17.986339 72.035519 44.519126 \n",
"std 13.059807 7.951929 8.856997 13.137058 16.850947 \n",
"min 13.000000 0.000000 0.000000 36.000000 13.000000 \n",
"25% NaN NaN 11.000000 64.000000 32.250000 \n",
"50% NaN NaN 17.000000 72.000000 43.000000 \n",
"75% NaN NaN 24.000000 81.000000 55.000000 \n",
"max 98.000000 41.000000 52.000000 99.000000 96.000000 \n",
"\n",
" Pressure9am Pressure3pm Cloud9am Cloud3pm Temp9am \\\n",
"count 366.000000 366.000000 366.000000 366.000000 366.000000 \n",
"mean 1019.709016 1016.810383 3.890710 4.024590 12.358470 \n",
"std 6.686212 6.469422 2.956131 2.666268 5.630832 \n",
"min 996.500000 996.800000 0.000000 0.000000 0.100000 \n",
"25% 1015.350000 1012.800000 1.000000 1.000000 7.625000 \n",
"50% 1020.150000 1017.400000 3.500000 4.000000 12.550000 \n",
"75% 1024.475000 1021.475000 7.000000 7.000000 17.000000 \n",
"max 1035.700000 1033.200000 8.000000 8.000000 24.700000 \n",
"\n",
" Temp3pm RISK_MM \n",
"count 366.000000 366.000000 \n",
"mean 19.230874 1.428415 \n",
"std 6.640346 4.225800 \n",
"min 5.100000 0.000000 \n",
"25% 14.150000 0.000000 \n",
"50% 18.550000 0.000000 \n",
"75% 24.000000 0.200000 \n",
"max 34.500000 39.800000 "
]
},
"execution_count": 268,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataframe.describe()"
]
},
{
"cell_type": "code",
"execution_count": 269,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array(['Yes', 'No'], dtype=object)"
]
},
"execution_count": 269,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataframe['RainTomorrow'].unique()"
]
},
{
"cell_type": "code",
"execution_count": 270,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array(['No', 'Yes'], dtype=object)"
]
},
"execution_count": 270,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataframe['RainToday'].unique()"
]
},
{
"cell_type": "code",
"execution_count": 271,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array(['Canberra'], dtype=object)"
]
},
"execution_count": 271,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataframe['Location'].unique()"
]
},
{
"cell_type": "code",
"execution_count": 272,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array(['2007-11-01', '2007-11-02', '2007-11-03', '2007-11-04',\n",
" '2007-11-05', '2007-11-06', '2007-11-07', '2007-11-08',\n",
" '2007-11-09', '2007-11-10', '2007-11-11', '2007-11-12',\n",
" '2007-11-13', '2007-11-14', '2007-11-15', '2007-11-16',\n",
" '2007-11-17', '2007-11-18', '2007-11-19', '2007-11-20',\n",
" '2007-11-21', '2007-11-22', '2007-11-23', '2007-11-24',\n",
" '2007-11-25', '2007-11-26', '2007-11-27', '2007-11-28',\n",
" '2007-11-29', '2007-11-30', '2007-12-01', '2007-12-02',\n",
" '2007-12-03', '2007-12-04', '2007-12-05', '2007-12-06',\n",
" '2007-12-07', '2007-12-08', '2007-12-09', '2007-12-10',\n",
" '2007-12-11', '2007-12-12', '2007-12-13', '2007-12-14',\n",
" '2007-12-15', '2007-12-16', '2007-12-17', '2007-12-18',\n",
" '2007-12-19', '2007-12-20', '2007-12-21', '2007-12-22',\n",
" '2007-12-23', '2007-12-24', '2007-12-25', '2007-12-26',\n",
" '2007-12-27', '2007-12-28', '2007-12-29', '2007-12-30',\n",
" '2007-12-31', '2008-01-01', '2008-01-02', '2008-01-03',\n",
" '2008-01-04', '2008-01-05', '2008-01-06', '2008-01-07',\n",
" '2008-01-08', '2008-01-09', '2008-01-10', '2008-01-11',\n",
" '2008-01-12', '2008-01-13', '2008-01-14', '2008-01-15',\n",
" '2008-01-16', '2008-01-17', '2008-01-18', '2008-01-19',\n",
" '2008-01-20', '2008-01-21', '2008-01-22', '2008-01-23',\n",
" '2008-01-24', '2008-01-25', '2008-01-26', '2008-01-27',\n",
" '2008-01-28', '2008-01-29', '2008-01-30', '2008-01-31',\n",
" '2008-02-01', '2008-02-02', '2008-02-03', '2008-02-04',\n",
" '2008-02-05', '2008-02-06', '2008-02-07', '2008-02-08',\n",
" '2008-02-09', '2008-02-10', '2008-02-11', '2008-02-12',\n",
" '2008-02-13', '2008-02-14', '2008-02-15', '2008-02-16',\n",
" '2008-02-17', '2008-02-18', '2008-02-19', '2008-02-20',\n",
" '2008-02-21', '2008-02-22', '2008-02-23', '2008-02-24',\n",
" '2008-02-25', '2008-02-26', '2008-02-27', '2008-02-28',\n",
" '2008-02-29', '2008-03-01', '2008-03-02', '2008-03-03',\n",
" '2008-03-04', '2008-03-05', '2008-03-06', '2008-03-07',\n",
" '2008-03-08', '2008-03-09', '2008-03-10', '2008-03-11',\n",
" '2008-03-12', '2008-03-13', '2008-03-14', '2008-03-15',\n",
" '2008-03-16', '2008-03-17', '2008-03-18', '2008-03-19',\n",
" '2008-03-20', '2008-03-21', '2008-03-22', '2008-03-23',\n",
" '2008-03-24', '2008-03-25', '2008-03-26', '2008-03-27',\n",
" '2008-03-28', '2008-03-29', '2008-03-30', '2008-03-31',\n",
" '2008-04-01', '2008-04-02', '2008-04-03', '2008-04-04',\n",
" '2008-04-05', '2008-04-06', '2008-04-07', '2008-04-08',\n",
" '2008-04-09', '2008-04-10', '2008-04-11', '2008-04-12',\n",
" '2008-04-13', '2008-04-14', '2008-04-15', '2008-04-16',\n",
" '2008-04-17', '2008-04-18', '2008-04-19', '2008-04-20',\n",
" '2008-04-21', '2008-04-22', '2008-04-23', '2008-04-24',\n",
" '2008-04-25', '2008-04-26', '2008-04-27', '2008-04-28',\n",
" '2008-04-29', '2008-04-30', '2008-05-01', '2008-05-02',\n",
" '2008-05-03', '2008-05-04', '2008-05-05', '2008-05-06',\n",
" '2008-05-07', '2008-05-08', '2008-05-09', '2008-05-10',\n",
" '2008-05-11', '2008-05-12', '2008-05-13', '2008-05-14',\n",
" '2008-05-15', '2008-05-16', '2008-05-17', '2008-05-18',\n",
" '2008-05-19', '2008-05-20', '2008-05-21', '2008-05-22',\n",
" '2008-05-23', '2008-05-24', '2008-05-25', '2008-05-26',\n",
" '2008-05-27', '2008-05-28', '2008-05-29', '2008-05-30',\n",
" '2008-05-31', '2008-06-01', '2008-06-02', '2008-06-03',\n",
" '2008-06-04', '2008-06-05', '2008-06-06', '2008-06-07',\n",
" '2008-06-08', '2008-06-09', '2008-06-10', '2008-06-11',\n",
" '2008-06-12', '2008-06-13', '2008-06-14', '2008-06-15',\n",
" '2008-06-16', '2008-06-17', '2008-06-18', '2008-06-19',\n",
" '2008-06-20', '2008-06-21', '2008-06-22', '2008-06-23',\n",
" '2008-06-24', '2008-06-25', '2008-06-26', '2008-06-27',\n",
" '2008-06-28', '2008-06-29', '2008-06-30', '2008-07-01',\n",
" '2008-07-02', '2008-07-03', '2008-07-04', '2008-07-05',\n",
" '2008-07-06', '2008-07-07', '2008-07-08', '2008-07-09',\n",
" '2008-07-10', '2008-07-11', '2008-07-12', '2008-07-13',\n",
" '2008-07-14', '2008-07-15', '2008-07-16', '2008-07-17',\n",
" '2008-07-18', '2008-07-19', '2008-07-20', '2008-07-21',\n",
" '2008-07-22', '2008-07-23', '2008-07-24', '2008-07-25',\n",
" '2008-07-26', '2008-07-27', '2008-07-28', '2008-07-29',\n",
" '2008-07-30', '2008-07-31', '2008-08-01', '2008-08-02',\n",
" '2008-08-03', '2008-08-04', '2008-08-05', '2008-08-06',\n",
" '2008-08-07', '2008-08-08', '2008-08-09', '2008-08-10',\n",
" '2008-08-11', '2008-08-12', '2008-08-13', '2008-08-14',\n",
" '2008-08-15', '2008-08-16', '2008-08-17', '2008-08-18',\n",
" '2008-08-19', '2008-08-20', '2008-08-21', '2008-08-22',\n",
" '2008-08-23', '2008-08-24', '2008-08-25', '2008-08-26',\n",
" '2008-08-27', '2008-08-28', '2008-08-29', '2008-08-30',\n",
" '2008-08-31', '2008-09-01', '2008-09-02', '2008-09-03',\n",
" '2008-09-04', '2008-09-05', '2008-09-06', '2008-09-07',\n",
" '2008-09-08', '2008-09-09', '2008-09-10', '2008-09-11',\n",
" '2008-09-12', '2008-09-13', '2008-09-14', '2008-09-15',\n",
" '2008-09-16', '2008-09-17', '2008-09-18', '2008-09-19',\n",
" '2008-09-20', '2008-09-21', '2008-09-22', '2008-09-23',\n",
" '2008-09-24', '2008-09-25', '2008-09-26', '2008-09-27',\n",
" '2008-09-28', '2008-09-29', '2008-09-30', '2008-10-01',\n",
" '2008-10-02', '2008-10-03', '2008-10-04', '2008-10-05',\n",
" '2008-10-06', '2008-10-07', '2008-10-08', '2008-10-09',\n",
" '2008-10-10', '2008-10-11', '2008-10-12', '2008-10-13',\n",
" '2008-10-14', '2008-10-15', '2008-10-16', '2008-10-17',\n",
" '2008-10-18', '2008-10-19', '2008-10-20', '2008-10-21',\n",
" '2008-10-22', '2008-10-23', '2008-10-24', '2008-10-25',\n",
" '2008-10-26', '2008-10-27', '2008-10-28', '2008-10-29',\n",
" '2008-10-30', '2008-10-31'], dtype=object)"
]
},
"execution_count": 272,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataframe['Date'].unique()"
]
},
{
"cell_type": "code",
"execution_count": 273,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Bagged Decision Trees for Classification\n",
"from sklearn import cross_validation\n",
"from sklearn.ensemble import BaggingClassifier\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"from sklearn import tree"
]
},
{
"cell_type": "code",
"execution_count": 274,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Index(['Date', 'Location', 'MinTemp', 'MaxTemp', 'Rainfall', 'Evaporation',\n",
" 'Sunshine', 'WindGustDir', 'WindGustSpeed', 'WindDir9am', 'WindDir3pm',\n",
" 'WindSpeed9am', 'WindSpeed3pm', 'Humidity9am', 'Humidity3pm',\n",
" 'Pressure9am', 'Pressure3pm', 'Cloud9am', 'Cloud3pm', 'Temp9am',\n",
" 'Temp3pm', 'RainToday', 'RISK_MM', 'RainTomorrow'],\n",
" dtype='object')"
]
},
"execution_count": 274,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataframe.columns"
]
},
{
"cell_type": "code",
"execution_count": 275,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"del dataframe['Date']"
]
},
{
"cell_type": "code",
"execution_count": 276,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"del dataframe['Location']"
]
},
{
"cell_type": "code",
"execution_count": 277,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"del dataframe['WindDir9am']"
]
},
{
"cell_type": "code",
"execution_count": 278,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"del dataframe['WindSpeed3pm']"
]
},
{
"cell_type": "code",
"execution_count": 279,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"del dataframe['WindGustDir']\n",
"del dataframe['WindDir3pm']\n",
"del dataframe['RISK_MM']"
]
},
{
"cell_type": "code",
"execution_count": 280,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"dataframe=dataframe.replace(['Yes', 'No'], [1, 0]) #using replace to change string to numeric values\n"
]
},
{
"cell_type": "code",
"execution_count": 281,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"dataframe=dataframe.dropna()"
]
},
{
"cell_type": "code",
"execution_count": 282,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>MinTemp</th>\n",
" <th>MaxTemp</th>\n",
" <th>Rainfall</th>\n",
" <th>Evaporation</th>\n",
" <th>Sunshine</th>\n",
" <th>WindGustSpeed</th>\n",
" <th>WindSpeed9am</th>\n",
" <th>Humidity9am</th>\n",
" <th>Humidity3pm</th>\n",
" <th>Pressure9am</th>\n",
" <th>Pressure3pm</th>\n",
" <th>Cloud9am</th>\n",
" <th>Cloud3pm</th>\n",
" <th>Temp9am</th>\n",
" <th>Temp3pm</th>\n",
" <th>RainToday</th>\n",
" <th>RainTomorrow</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>8.0</td>\n",
" <td>24.3</td>\n",
" <td>0.0</td>\n",
" <td>3.4</td>\n",
" <td>6.3</td>\n",
" <td>30.0</td>\n",
" <td>6.0</td>\n",
" <td>68</td>\n",
" <td>29</td>\n",
" <td>1019.7</td>\n",
" <td>1015.0</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>14.4</td>\n",
" <td>23.6</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>14.0</td>\n",
" <td>26.9</td>\n",
" <td>3.6</td>\n",
" <td>4.4</td>\n",
" <td>9.7</td>\n",
" <td>39.0</td>\n",
" <td>4.0</td>\n",
" <td>80</td>\n",
" <td>36</td>\n",
" <td>1012.4</td>\n",
" <td>1008.4</td>\n",
" <td>5</td>\n",
" <td>3</td>\n",
" <td>17.5</td>\n",
" <td>25.7</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>13.7</td>\n",
" <td>23.4</td>\n",
" <td>3.6</td>\n",
" <td>5.8</td>\n",
" <td>3.3</td>\n",
" <td>85.0</td>\n",
" <td>6.0</td>\n",
" <td>82</td>\n",
" <td>69</td>\n",
" <td>1009.5</td>\n",
" <td>1007.2</td>\n",
" <td>8</td>\n",
" <td>7</td>\n",
" <td>15.4</td>\n",
" <td>20.2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>13.3</td>\n",
" <td>15.5</td>\n",
" <td>39.8</td>\n",
" <td>7.2</td>\n",
" <td>9.1</td>\n",
" <td>54.0</td>\n",
" <td>30.0</td>\n",
" <td>62</td>\n",
" <td>56</td>\n",
" <td>1005.5</td>\n",
" <td>1007.0</td>\n",
" <td>2</td>\n",
" <td>7</td>\n",
" <td>13.5</td>\n",
" <td>14.1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>7.6</td>\n",
" <td>16.1</td>\n",
" <td>2.8</td>\n",
" <td>5.6</td>\n",
" <td>10.6</td>\n",
" <td>50.0</td>\n",
" <td>20.0</td>\n",
" <td>68</td>\n",
" <td>49</td>\n",
" <td>1018.3</td>\n",
" <td>1018.5</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>11.1</td>\n",
" <td>15.4</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" MinTemp MaxTemp Rainfall Evaporation Sunshine WindGustSpeed \\\n",
"0 8.0 24.3 0.0 3.4 6.3 30.0 \n",
"1 14.0 26.9 3.6 4.4 9.7 39.0 \n",
"2 13.7 23.4 3.6 5.8 3.3 85.0 \n",
"3 13.3 15.5 39.8 7.2 9.1 54.0 \n",
"4 7.6 16.1 2.8 5.6 10.6 50.0 \n",
"\n",
" WindSpeed9am Humidity9am Humidity3pm Pressure9am Pressure3pm Cloud9am \\\n",
"0 6.0 68 29 1019.7 1015.0 7 \n",
"1 4.0 80 36 1012.4 1008.4 5 \n",
"2 6.0 82 69 1009.5 1007.2 8 \n",
"3 30.0 62 56 1005.5 1007.0 2 \n",
"4 20.0 68 49 1018.3 1018.5 7 \n",
"\n",
" Cloud3pm Temp9am Temp3pm RainToday RainTomorrow \n",
"0 7 14.4 23.6 0 1 \n",
"1 3 17.5 25.7 1 1 \n",
"2 7 15.4 20.2 1 1 \n",
"3 7 13.5 14.1 1 1 \n",
"4 7 11.1 15.4 1 0 "
]
},
"execution_count": 282,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataframe.head()"
]
},
{
"cell_type": "code",
"execution_count": 283,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"354"
]
},
"execution_count": 283,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(dataframe)"
]
},
{
"cell_type": "code",
"execution_count": 284,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"17"
]
},
"execution_count": 284,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(dataframe.columns)"
]
},
{
"cell_type": "code",
"execution_count": 285,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Index(['MinTemp', 'MaxTemp', 'Rainfall', 'Evaporation', 'Sunshine',\n",
" 'WindGustSpeed', 'WindSpeed9am', 'Humidity9am', 'Humidity3pm',\n",
" 'Pressure9am', 'Pressure3pm', 'Cloud9am', 'Cloud3pm', 'Temp9am',\n",
" 'Temp3pm', 'RainToday', 'RainTomorrow'],\n",
" dtype='object')"
]
},
"execution_count": 285,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"names=dataframe.columns\n",
"names"
]
},
{
"cell_type": "code",
"execution_count": 286,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>MinTemp</th>\n",
" <th>MaxTemp</th>\n",
" <th>Rainfall</th>\n",
" <th>Evaporation</th>\n",
" <th>Sunshine</th>\n",
" <th>WindGustSpeed</th>\n",
" <th>WindSpeed9am</th>\n",
" <th>Humidity9am</th>\n",
" <th>Humidity3pm</th>\n",
" <th>Pressure9am</th>\n",
" <th>Pressure3pm</th>\n",
" <th>Cloud9am</th>\n",
" <th>Cloud3pm</th>\n",
" <th>Temp9am</th>\n",
" <th>Temp3pm</th>\n",
" <th>RainToday</th>\n",
" <th>RainTomorrow</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>354.000000</td>\n",
" <td>354.000000</td>\n",
" <td>354.000000</td>\n",
" <td>354.000000</td>\n",
" <td>354.000000</td>\n",
" <td>354.000000</td>\n",
" <td>354.000000</td>\n",
" <td>354.000000</td>\n",
" <td>354.000000</td>\n",
" <td>354.000000</td>\n",
" <td>354.000000</td>\n",
" <td>354.000000</td>\n",
" <td>354.000000</td>\n",
" <td>354.000000</td>\n",
" <td>354.000000</td>\n",
" <td>354.000000</td>\n",
" <td>354.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>7.362429</td>\n",
" <td>20.601412</td>\n",
" <td>1.420904</td>\n",
" <td>4.558192</td>\n",
" <td>7.925424</td>\n",
" <td>40.011299</td>\n",
" <td>9.666667</td>\n",
" <td>71.875706</td>\n",
" <td>44.454802</td>\n",
" <td>1019.562147</td>\n",
" <td>1016.692090</td>\n",
" <td>3.920904</td>\n",
" <td>4.019774</td>\n",
" <td>12.438701</td>\n",
" <td>19.271469</td>\n",
" <td>0.180791</td>\n",
" <td>0.180791</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>6.010927</td>\n",
" <td>6.708966</td>\n",
" <td>4.235358</td>\n",
" <td>2.667877</td>\n",
" <td>3.510039</td>\n",
" <td>13.034488</td>\n",
" <td>7.978489</td>\n",
" <td>13.161939</td>\n",
" <td>16.944316</td>\n",
" <td>6.602685</td>\n",
" <td>6.373679</td>\n",
" <td>2.962363</td>\n",
" <td>2.672312</td>\n",
" <td>5.630160</td>\n",
" <td>6.663681</td>\n",
" <td>0.385390</td>\n",
" <td>0.385390</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-5.300000</td>\n",
" <td>7.600000</td>\n",
" <td>0.000000</td>\n",
" <td>0.200000</td>\n",
" <td>0.000000</td>\n",
" <td>13.000000</td>\n",
" <td>0.000000</td>\n",
" <td>36.000000</td>\n",
" <td>13.000000</td>\n",
" <td>996.500000</td>\n",
" <td>996.800000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.100000</td>\n",
" <td>5.100000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>2.400000</td>\n",
" <td>15.100000</td>\n",
" <td>0.000000</td>\n",
" <td>2.400000</td>\n",
" <td>5.925000</td>\n",
" <td>31.000000</td>\n",
" <td>6.000000</td>\n",
" <td>64.000000</td>\n",
" <td>32.000000</td>\n",
" <td>1015.225000</td>\n",
" <td>1012.725000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>7.725000</td>\n",
" <td>14.300000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>7.500000</td>\n",
" <td>19.750000</td>\n",
" <td>0.000000</td>\n",
" <td>4.200000</td>\n",
" <td>8.650000</td>\n",
" <td>39.000000</td>\n",
" <td>7.000000</td>\n",
" <td>72.000000</td>\n",
" <td>43.000000</td>\n",
" <td>1020.000000</td>\n",
" <td>1017.200000</td>\n",
" <td>4.000000</td>\n",
" <td>4.000000</td>\n",
" <td>12.600000</td>\n",
" <td>18.600000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>12.500000</td>\n",
" <td>25.500000</td>\n",
" <td>0.200000</td>\n",
" <td>6.400000</td>\n",
" <td>10.600000</td>\n",
" <td>46.000000</td>\n",
" <td>13.000000</td>\n",
" <td>80.000000</td>\n",
" <td>54.750000</td>\n",
" <td>1024.400000</td>\n",
" <td>1021.350000</td>\n",
" <td>7.000000</td>\n",
" <td>7.000000</td>\n",
" <td>17.000000</td>\n",
" <td>24.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>20.900000</td>\n",
" <td>35.800000</td>\n",
" <td>39.800000</td>\n",
" <td>13.800000</td>\n",
" <td>13.600000</td>\n",
" <td>98.000000</td>\n",
" <td>41.000000</td>\n",
" <td>99.000000</td>\n",
" <td>96.000000</td>\n",
" <td>1035.700000</td>\n",
" <td>1033.200000</td>\n",
" <td>8.000000</td>\n",
" <td>8.000000</td>\n",
" <td>24.700000</td>\n",
" <td>34.500000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" MinTemp MaxTemp Rainfall Evaporation Sunshine \\\n",
"count 354.000000 354.000000 354.000000 354.000000 354.000000 \n",
"mean 7.362429 20.601412 1.420904 4.558192 7.925424 \n",
"std 6.010927 6.708966 4.235358 2.667877 3.510039 \n",
"min -5.300000 7.600000 0.000000 0.200000 0.000000 \n",
"25% 2.400000 15.100000 0.000000 2.400000 5.925000 \n",
"50% 7.500000 19.750000 0.000000 4.200000 8.650000 \n",
"75% 12.500000 25.500000 0.200000 6.400000 10.600000 \n",
"max 20.900000 35.800000 39.800000 13.800000 13.600000 \n",
"\n",
" WindGustSpeed WindSpeed9am Humidity9am Humidity3pm Pressure9am \\\n",
"count 354.000000 354.000000 354.000000 354.000000 354.000000 \n",
"mean 40.011299 9.666667 71.875706 44.454802 1019.562147 \n",
"std 13.034488 7.978489 13.161939 16.944316 6.602685 \n",
"min 13.000000 0.000000 36.000000 13.000000 996.500000 \n",
"25% 31.000000 6.000000 64.000000 32.000000 1015.225000 \n",
"50% 39.000000 7.000000 72.000000 43.000000 1020.000000 \n",
"75% 46.000000 13.000000 80.000000 54.750000 1024.400000 \n",
"max 98.000000 41.000000 99.000000 96.000000 1035.700000 \n",
"\n",
" Pressure3pm Cloud9am Cloud3pm Temp9am Temp3pm \\\n",
"count 354.000000 354.000000 354.000000 354.000000 354.000000 \n",
"mean 1016.692090 3.920904 4.019774 12.438701 19.271469 \n",
"std 6.373679 2.962363 2.672312 5.630160 6.663681 \n",
"min 996.800000 0.000000 0.000000 0.100000 5.100000 \n",
"25% 1012.725000 1.000000 1.000000 7.725000 14.300000 \n",
"50% 1017.200000 4.000000 4.000000 12.600000 18.600000 \n",
"75% 1021.350000 7.000000 7.000000 17.000000 24.000000 \n",
"max 1033.200000 8.000000 8.000000 24.700000 34.500000 \n",
"\n",
" RainToday RainTomorrow \n",
"count 354.000000 354.000000 \n",
"mean 0.180791 0.180791 \n",
"std 0.385390 0.385390 \n",
"min 0.000000 0.000000 \n",
"25% 0.000000 0.000000 \n",
"50% 0.000000 0.000000 \n",
"75% 0.000000 0.000000 \n",
"max 1.000000 1.000000 "
]
},
"execution_count": 286,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataframe.describe()"
]
},
{
"cell_type": "code",
"execution_count": 287,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"pandas.core.frame.DataFrame"
]
},
"execution_count": 287,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(dataframe)"
]
},
{
"cell_type": "code",
"execution_count": 288,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"\n",
"array = dataframe.values"
]
},
{
"cell_type": "code",
"execution_count": 289,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0 290\n",
"1 64\n",
"Name: RainTomorrow, dtype: int64"
]
},
"execution_count": 289,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.value_counts(dataframe[\"RainTomorrow\"])"
]
},
{
"cell_type": "code",
"execution_count": 290,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 8. , 24.3, 0. , ..., 23.6, 0. , 1. ],\n",
" [ 14. , 26.9, 3.6, ..., 25.7, 1. , 1. ],\n",
" [ 13.7, 23.4, 3.6, ..., 20.2, 1. , 1. ],\n",
" ..., \n",
" [ 12.5, 19.9, 0. , ..., 18.3, 0. , 0. ],\n",
" [ 12.5, 26.9, 0. , ..., 25.9, 0. , 0. ],\n",
" [ 12.3, 30.2, 0. , ..., 28.6, 0. , 0. ]])"
]
},
"execution_count": 290,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"array"
]
},
{
"cell_type": "code",
"execution_count": 291,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"\n",
"X = array[:,0:16]\n",
"Y = array[:,16]\n",
"num_folds = 10\n",
"num_instances = len(X)\n",
"seed = 7"
]
},
{
"cell_type": "code",
"execution_count": 292,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"numpy.ndarray"
]
},
"execution_count": 292,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(X)\n"
]
},
{
"cell_type": "code",
"execution_count": 293,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 8. , 24.3, 0. , ..., 14.4, 23.6, 0. ],\n",
" [ 14. , 26.9, 3.6, ..., 17.5, 25.7, 1. ],\n",
" [ 13.7, 23.4, 3.6, ..., 15.4, 20.2, 1. ],\n",
" ..., \n",
" [ 12.5, 19.9, 0. , ..., 14.5, 18.3, 0. ],\n",
" [ 12.5, 26.9, 0. , ..., 15.8, 25.9, 0. ],\n",
" [ 12.3, 30.2, 0. , ..., 23.8, 28.6, 0. ]])"
]
},
"execution_count": 293,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X"
]
},
{
"cell_type": "code",
"execution_count": 294,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1., 1., 1., 1., 0., 0., 0., 0., 1., 0., 0., 0., 0.,\n",
" 0., 0., 0., 1., 0., 0., 0., 0., 1., 0., 0., 0., 0.,\n",
" 0., 0., 0., 1., 1., 0., 1., 0., 0., 0., 1., 0., 0.,\n",
" 0., 0., 0., 0., 0., 1., 1., 0., 0., 1., 1., 1., 1.,\n",
" 0., 1., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 1., 0.,\n",
" 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,\n",
" 1., 0., 0., 1., 1., 0., 0., 1., 0., 0., 0., 1., 1.,\n",
" 0., 0., 0., 0., 0., 0., 0., 1., 1., 0., 0., 0., 0.,\n",
" 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1.,\n",
" 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 1., 1., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 1., 1., 0., 0., 0., 0.,\n",
" 0., 1., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 1., 0., 0., 0., 0., 0., 1., 0., 0., 1., 0., 0.,\n",
" 0., 0., 0., 0., 1., 0., 1., 0., 0., 0., 0., 0., 0.,\n",
" 1., 0., 0., 0., 1., 0., 0., 0., 1., 0., 1., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 1., 1., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 0., 0., 0.,\n",
" 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 1., 1., 0., 1., 0., 0., 0., 0., 0., 0., 1., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0.])"
]
},
"execution_count": 294,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Y[Y == \"Yes\"] = 1 An alternative way to make a NumPy arraye change values\n",
"#Y[Y == \"No\"] = 0\n",
"Y"
]
},
{
"cell_type": "code",
"execution_count": 295,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"DecisionTreeRegressor(criterion='mse', max_depth=3, max_features=None,\n",
" max_leaf_nodes=None, min_samples_leaf=1, min_samples_split=2,\n",
" min_weight_fraction_leaf=0.0, presort=False, random_state=None,\n",
" splitter='best')"
]
},
"execution_count": 295,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dtr = tree.DecisionTreeRegressor(max_depth=3)\n",
"dtr.fit(X, Y)"
]
},
{
"cell_type": "code",
"execution_count": 296,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# from sklearn.metrics import roc_curve, auc"
]
},
{
"cell_type": "code",
"execution_count": 297,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#!sudo pip install pydotplus\n",
"# http://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html\n",
"# http://machinelearningmastery.com/ensemble-machine-learning-algorithms-python-scikit-learn/\n",
"# http://machinelearningmastery.com/compare-machine-learning-algorithms-python-scikit-learn/"
]
},
{
"cell_type": "code",
"execution_count": 298,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#!pip freeze\n",
"#checking if we have the right packages"
]
},
{
"cell_type": "code",
"execution_count": 299,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#!pip install --upgrade pip"
]
},
{
"cell_type": "code",
"execution_count": 300,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#!pip install pydotplus"
]
},
{
"cell_type": "code",
"execution_count": 301,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import pydotplus as pydot\n",
"\n",
"from IPython.display import Image\n",
"\n",
"from sklearn.externals.six import StringIO"
]
},
{
"cell_type": "code",
"execution_count": 302,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Graphviz\n",
"#sudo add-apt-repository ppa:gviz-adm/graphviz-dev\n",
"# sudo apt-get update\n",
"# http://www.graphviz.org/Download_linux_ubuntu.php"
]
},
{
"cell_type": "code",
"execution_count": 303,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"\n",
"\n",
"dot_data = StringIO()"
]
},
{
"cell_type": "code",
"execution_count": 304,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"\n",
"\n",
"tree.export_graphviz(dtr, out_file=dot_data,feature_names=names[:-1])"
]
},
{
"cell_type": "code",
"execution_count": 305,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"\n",
"\n",
"graph = pydot.graph_from_dot_data(dot_data.getvalue())"
]
},
{
"cell_type": "code",
"execution_count": 306,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\ngdoBlABcrwMAAAAAAAAAxQb9OgAAAAAAAABQbDAOE0iqtrb26tWrpaWl4eHhVMcCgOxA5gOFoHyJ\n+uzZs5ycnK6uriVLllhbW/MtJQiitLTUxsamR2sBFaG41UHqiS1qg0ApwfU6IJHHjx/v2bPHx8fn\n22+/pSoGgiC++eYbb2/v8PDwwMDAjIwMUSVnzJhBE1BWVoY3kpycPG7cOD09PUdHx5SUFPK1KmLW\nQggVFRUtXrzY2NiYTqcvW7asurpaBocMKKdYmY8QqqqqSklJYTAYU6dO5Z0vPr1FrcUrPj6eRqNJ\n5YiA1ClWor6zZFtb26ZNmzw8PD744IOQkBDyLBYnIaampka+VFr8WkDVKFZ1QL1KbDEnM+/cIFBi\ncL0OSMTe3j4mJubEiRMUxrB3796UlJQ7d+4YGho2Nzc7OTnV19dv2bKFr1hRUVFra+uRI0fodDqe\nU1BQcO3aNUtLS4TQ9u3bX758uW7dupKSkqSkpICAgPb29qCgIPFrPXr0KCIiYvXq1bt27fryyy/T\n0tLq6+v/+OMPGR49oIYCZT42YsQId3f3gIAAW1tbcqb49Ba1Fq9bt26FhoZK9bCANClWooovWVdX\nN3fuXCaTeePGjcGDB5NrsViss2fPHjx4EE9qaGisXLmSXCpqLaCCFKs69C6xRZ3MvHODQMkRQI5l\nZmbK1f8RQsjW1paSXVdUVGhoaBw4cICcs2/fPh0dnYaGBr6SZ8+era+v552zevXqPXv2EATx/Plz\nPz8/cv7FixcRQpaWluLXIggiNja2vb0d/93d3W1gYKCrqyu1Y+OBEMrMzOyPLVPO29vb29ub6ih6\nSSEynxdfwOLTW9RapKampvDwcDyMpzfH0A9k0zbKWwv8TgqRqOJLcrncefPmqamp5efn862Ympp6\n/PhxoXsXs5aMKVzOSE7h2nCFqA5ErxJbzMmM+A3KnhLXCPkE4zCBYkhPT2ez2bNmzSLnzJw5s6Oj\nIzk5ma/ksmXLyIsSCKGurq6ffvpp6dKlCKHKysqYmBhy0ezZs+l0el1dnfi1EEJbtmzR0dEhl7LZ\n7ICAAGkeHgAiSJ75YohPb/GI/9fevQfElP6PA3+mmVJJNyGXyqaIdkU2ikKR3LqQoptb8uGzCvtZ\ny24k1xUiYt3SyrolZCuXhM8iJneWqCzJJWo1qVS6zJzfH+drfvOZaU7TNM1zzsz79dec2zPvmfd5\n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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 306,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"\n",
"Image(graph.create_png())"
]
},
{
"cell_type": "code",
"execution_count": 307,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"\n",
"kfold = cross_validation.KFold(n=num_instances, n_folds=num_folds, random_state=seed)\n",
"cart = DecisionTreeClassifier()\n",
"num_trees = 100\n",
"model = BaggingClassifier(base_estimator=cart, n_estimators=num_trees, random_state=seed)\n"
]
},
{
"cell_type": "code",
"execution_count": 308,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"BaggingClassifier(base_estimator=DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,\n",
" max_features=None, max_leaf_nodes=None, min_samples_leaf=1,\n",
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
" presort=False, random_state=None, splitter='best'),\n",
" bootstrap=True, bootstrap_features=False, max_features=1.0,\n",
" max_samples=1.0, n_estimators=100, n_jobs=1, oob_score=False,\n",
" random_state=7, verbose=0, warm_start=False)"
]
},
"execution_count": 308,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model"
]
},
{
"cell_type": "code",
"execution_count": 309,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"sklearn.cross_validation.KFold(n=354, n_folds=10, shuffle=False, random_state=7)"
]
},
"execution_count": 309,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kfold"
]
},
{
"cell_type": "code",
"execution_count": 310,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.850873015873\n"
]
}
],
"source": [
"results = cross_validation.cross_val_score(model, X, Y, cv=kfold)\n",
"print(results.mean())"
]
},
{
"cell_type": "code",
"execution_count": 311,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.75 , 0.86111111, 0.69444444, 0.88888889, 0.88571429,\n",
" 0.82857143, 0.91428571, 0.85714286, 0.94285714, 0.88571429])"
]
},
"execution_count": 311,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"results"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [Root]",
"language": "python",
"name": "Python [Root]"
},
"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.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment