Skip to content

Instantly share code, notes, and snippets.

@springcoil
Created December 6, 2015 13:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save springcoil/3520278a70eba70e2147 to your computer and use it in GitHub Desktop.
Save springcoil/3520278a70eba70e2147 to your computer and use it in GitHub Desktop.
Machine Learning on Inside Airbnb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Analysis of AirBnb data\n",
"* I used the data from [InsideAirbnb](http://insideairbnb.com/paris/#) to provide the data here - we picked Paris as a good example.\n",
"* The aim is to produce a few models of this phenomenoa."
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import itertools\n",
"import scipy as sp\n",
"import pymc3 as pm3\n",
"from scipy import stats\n",
"from IPython.core.pylabtools import figsize\n",
"import os\n",
"figsize(12, 12)\n",
"sns.set_style('darkgrid')"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"DATA_DIR = os.path.join(os.getcwd(), 'data/')\n",
"def p2f(x):\n",
" return float(x.strip('%'))/100"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Exception ignored in: <function WeakValueDictionary.__init__.<locals>.remove at 0x1061292f0>\n",
"Traceback (most recent call last):\n",
" File \"/Users/peadarcoyle/anaconda/envs/sea/lib/python3.4/weakref.py\", line 102, in remove\n",
" def remove(wr, selfref=ref(self)):\n",
"KeyboardInterrupt\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" <tr>\n",
" <th>listing_id</th>\n",
" <th>date</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"30\" valign=\"top\">2525</th>\n",
" <th>2009-06-30</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-07-03</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-07-08</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-08-14</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-08-27</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-09-05</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-09-06</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-09-10</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-09-13</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-09-28</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-10-05</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-11-20</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-11-27</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-11-29</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-12-02</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-12-18</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-12-20</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-12-26</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-01-01</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-01-02</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-01-03</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-01-04</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-01-11</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-01-13</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-01-18</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-01-20</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-01-24</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-01-26</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-02-07</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-02-09</th>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <th>...</th>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"30\" valign=\"top\">8113735</th>\n",
" <th>2015-08-05</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-06</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-07</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-08</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-09</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-10</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-11</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-12</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-13</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-14</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-15</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-16</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-17</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-18</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-19</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-20</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-21</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-22</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-23</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-24</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-25</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-26</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-27</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-28</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-29</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-30</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-08-31</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-09-01</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-09-02</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-09-03</th>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>50501639 rows × 0 columns</p>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: []\n",
"Index: [(2525, 2009-06-30 00:00:00), (2525, 2009-07-03 00:00:00), (2525, 2009-07-08 00:00:00), (2525, 2009-08-14 00:00:00), (2525, 2009-08-27 00:00:00), (2525, 2009-09-05 00:00:00), (2525, 2009-09-06 00:00:00), (2525, 2009-09-10 00:00:00), (2525, 2009-09-13 00:00:00), (2525, 2009-09-28 00:00:00), (2525, 2009-10-05 00:00:00), (2525, 2009-11-20 00:00:00), (2525, 2009-11-27 00:00:00), (2525, 2009-11-29 00:00:00), (2525, 2009-12-02 00:00:00), (2525, 2009-12-18 00:00:00), (2525, 2009-12-20 00:00:00), (2525, 2009-12-26 00:00:00), (2525, 2010-01-01 00:00:00), (2525, 2010-01-02 00:00:00), (2525, 2010-01-03 00:00:00), (2525, 2010-01-04 00:00:00), (2525, 2010-01-11 00:00:00), (2525, 2010-01-13 00:00:00), (2525, 2010-01-18 00:00:00), (2525, 2010-01-20 00:00:00), (2525, 2010-01-24 00:00:00), (2525, 2010-01-26 00:00:00), (2525, 2010-02-07 00:00:00), (2525, 2010-02-09 00:00:00), (2525, 2010-02-11 00:00:00), (2525, 2010-02-14 00:00:00), (2525, 2010-02-21 00:00:00), (2525, 2010-02-26 00:00:00), (2525, 2010-03-01 00:00:00), (2525, 2010-03-07 00:00:00), (2525, 2010-03-08 00:00:00), (2525, 2010-03-09 00:00:00), (2525, 2010-03-10 00:00:00), (2525, 2010-03-11 00:00:00), (2525, 2010-03-14 00:00:00), (2525, 2010-03-16 00:00:00), (2525, 2010-03-18 00:00:00), (2525, 2010-03-19 00:00:00), (2525, 2010-03-22 00:00:00), (2525, 2010-03-25 00:00:00), (2525, 2010-03-27 00:00:00), (2525, 2010-03-28 00:00:00), (2525, 2010-03-29 00:00:00), (2525, 2010-04-01 00:00:00), (2525, 2010-04-02 00:00:00), (2525, 2010-04-04 00:00:00), (2525, 2010-04-05 00:00:00), (2525, 2010-04-06 00:00:00), (2525, 2010-04-07 00:00:00), (2525, 2010-04-08 00:00:00), (2525, 2010-04-10 00:00:00), (2525, 2010-04-11 00:00:00), (2525, 2010-04-12 00:00:00), (2525, 2010-04-13 00:00:00), (2525, 2010-04-15 00:00:00), (2525, 2010-04-16 00:00:00), (2525, 2010-04-17 00:00:00), (2525, 2010-04-18 00:00:00), (2525, 2010-04-21 00:00:00), (2525, 2010-04-24 00:00:00), (2525, 2010-04-25 00:00:00), (2525, 2010-04-26 00:00:00), (2525, 2010-04-28 00:00:00), (2525, 2010-04-29 00:00:00), (2525, 2010-04-30 00:00:00), (2525, 2010-05-01 00:00:00), (2525, 2010-05-02 00:00:00), (2525, 2010-05-03 00:00:00), (2525, 2010-05-04 00:00:00), (2525, 2010-05-05 00:00:00), (2525, 2010-05-06 00:00:00), (2525, 2010-05-08 00:00:00), (2525, 2010-05-09 00:00:00), (2525, 2010-05-10 00:00:00), (2525, 2010-05-11 00:00:00), (2525, 2010-05-12 00:00:00), (2525, 2010-05-13 00:00:00), (2525, 2010-05-15 00:00:00), (2525, 2010-05-16 00:00:00), (2525, 2010-05-17 00:00:00), (2525, 2010-05-19 00:00:00), (2525, 2010-05-20 00:00:00), (2525, 2010-05-21 00:00:00), (2525, 2010-05-22 00:00:00), (2525, 2010-05-23 00:00:00), (2525, 2010-05-24 00:00:00), (2525, 2010-05-25 00:00:00), (2525, 2010-05-26 00:00:00), (2525, 2010-05-27 00:00:00), (2525, 2010-05-28 00:00:00), (2525, 2010-05-29 00:00:00), (2525, 2010-05-30 00:00:00), (2525, 2010-05-31 00:00:00), (2525, 2010-06-01 00:00:00), ...]\n",
"\n",
"[50501639 rows x 0 columns]"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data_file = DATA_DIR + 'reviews.csv'\n",
"df = pd.read_csv(data_file, sep=',', parse_dates=['date'])\n",
"df['listing_id'] = df['listing_id'].astype('category')\n",
"df.groupby(['listing_id', 'date']).count()"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"['id',\n",
" 'listing_url',\n",
" 'scrape_id',\n",
" 'last_scraped',\n",
" 'name',\n",
" 'summary',\n",
" 'space',\n",
" 'description',\n",
" 'experiences_offered',\n",
" 'neighborhood_overview',\n",
" 'notes',\n",
" 'transit',\n",
" 'thumbnail_url',\n",
" 'medium_url',\n",
" 'picture_url',\n",
" 'xl_picture_url',\n",
" 'host_id',\n",
" 'host_url',\n",
" 'host_name',\n",
" 'host_since',\n",
" 'host_location',\n",
" 'host_about',\n",
" 'host_response_time',\n",
" 'host_response_rate',\n",
" 'host_acceptance_rate',\n",
" 'host_is_superhost',\n",
" 'host_thumbnail_url',\n",
" 'host_picture_url',\n",
" 'host_neighbourhood',\n",
" 'host_listings_count',\n",
" 'host_total_listings_count',\n",
" 'host_verifications',\n",
" 'host_has_profile_pic',\n",
" 'host_identity_verified',\n",
" 'street',\n",
" 'neighbourhood',\n",
" 'neighbourhood_cleansed',\n",
" 'neighbourhood_group_cleansed',\n",
" 'city',\n",
" 'state',\n",
" 'zipcode',\n",
" 'market',\n",
" 'smart_location',\n",
" 'country_code',\n",
" 'country',\n",
" 'latitude',\n",
" 'longitude',\n",
" 'is_location_exact',\n",
" 'property_type',\n",
" 'room_type',\n",
" 'accommodates',\n",
" 'bathrooms',\n",
" 'bedrooms',\n",
" 'beds',\n",
" 'bed_type',\n",
" 'amenities',\n",
" 'square_feet',\n",
" 'price',\n",
" 'weekly_price',\n",
" 'monthly_price',\n",
" 'security_deposit',\n",
" 'cleaning_fee',\n",
" 'guests_included',\n",
" 'extra_people',\n",
" 'minimum_nights',\n",
" 'maximum_nights',\n",
" 'calendar_updated',\n",
" 'has_availability',\n",
" 'availability_30',\n",
" 'availability_60',\n",
" 'availability_90',\n",
" 'availability_365',\n",
" 'calendar_last_scraped',\n",
" 'number_of_reviews',\n",
" 'first_review',\n",
" 'last_review',\n",
" 'review_scores_rating',\n",
" 'review_scores_accuracy',\n",
" 'review_scores_cleanliness',\n",
" 'review_scores_checkin',\n",
" 'review_scores_communication',\n",
" 'review_scores_location',\n",
" 'review_scores_value',\n",
" 'requires_license',\n",
" 'license',\n",
" 'jurisdiction_names',\n",
" 'instant_bookable',\n",
" 'cancellation_policy',\n",
" 'require_guest_profile_picture',\n",
" 'require_guest_phone_verification',\n",
" 'calculated_host_listings_count',\n",
" 'reviews_per_month']"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data_file = DATA_DIR + 'listings.csv'\n",
"df_listing = pd.read_csv(data_file, sep=',', na_values='N/A')\n",
"df_listing.tail()\n",
"df_listing.columns.tolist()"
]
},
{
"cell_type": "code",
"execution_count": 171,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"df_to_model = df_listing[['reviews_per_month', 'cancellation_policy', 'number_of_reviews', 'host_response_rate', 'instant_bookable', 'review_scores_communication']]"
]
},
{
"cell_type": "code",
"execution_count": 172,
"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>reviews_per_month</th>\n",
" <th>cancellation_policy</th>\n",
" <th>number_of_reviews</th>\n",
" <th>host_response_rate</th>\n",
" <th>instant_bookable</th>\n",
" <th>review_scores_communication</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>8.00</td>\n",
" <td>moderate</td>\n",
" <td>52</td>\n",
" <td>100%</td>\n",
" <td>t</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>NaN</td>\n",
" <td>strict</td>\n",
" <td>0</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3.51</td>\n",
" <td>strict</td>\n",
" <td>28</td>\n",
" <td>96%</td>\n",
" <td>t</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>2.93</td>\n",
" <td>moderate</td>\n",
" <td>31</td>\n",
" <td>85%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.17</td>\n",
" <td>strict</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0.18</td>\n",
" <td>moderate</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>1.00</td>\n",
" <td>strict</td>\n",
" <td>1</td>\n",
" <td>91%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>1.11</td>\n",
" <td>flexible</td>\n",
" <td>4</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>1.04</td>\n",
" <td>strict</td>\n",
" <td>34</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>2.35</td>\n",
" <td>strict</td>\n",
" <td>14</td>\n",
" <td>57%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>NaN</td>\n",
" <td>strict</td>\n",
" <td>0</td>\n",
" <td>60%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>0.99</td>\n",
" <td>strict</td>\n",
" <td>28</td>\n",
" <td>80%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>60%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>NaN</td>\n",
" <td>moderate</td>\n",
" <td>0</td>\n",
" <td>89%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0.24</td>\n",
" <td>flexible</td>\n",
" <td>2</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>3.33</td>\n",
" <td>moderate</td>\n",
" <td>5</td>\n",
" <td>88%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>0.86</td>\n",
" <td>strict</td>\n",
" <td>4</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>NaN</td>\n",
" <td>strict</td>\n",
" <td>0</td>\n",
" <td>96%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>0.18</td>\n",
" <td>flexible</td>\n",
" <td>2</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0.60</td>\n",
" <td>moderate</td>\n",
" <td>1</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>3.84</td>\n",
" <td>strict</td>\n",
" <td>76</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35398</th>\n",
" <td>2.31</td>\n",
" <td>flexible</td>\n",
" <td>7</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35399</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35400</th>\n",
" <td>1.00</td>\n",
" <td>flexible</td>\n",
" <td>1</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35401</th>\n",
" <td>0.34</td>\n",
" <td>moderate</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35402</th>\n",
" <td>9.18</td>\n",
" <td>strict</td>\n",
" <td>15</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35403</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35404</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>33%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35405</th>\n",
" <td>NaN</td>\n",
" <td>moderate</td>\n",
" <td>0</td>\n",
" <td>100%</td>\n",
" <td>t</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35406</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35407</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>83%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35408</th>\n",
" <td>0.19</td>\n",
" <td>flexible</td>\n",
" <td>2</td>\n",
" <td>100%</td>\n",
" <td>t</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35409</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35410</th>\n",
" <td>NaN</td>\n",
" <td>moderate</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35411</th>\n",
" <td>0.25</td>\n",
" <td>moderate</td>\n",
" <td>6</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35412</th>\n",
" <td>1.19</td>\n",
" <td>strict</td>\n",
" <td>17</td>\n",
" <td>88%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35413</th>\n",
" <td>0.90</td>\n",
" <td>strict</td>\n",
" <td>3</td>\n",
" <td>89%</td>\n",
" <td>f</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35414</th>\n",
" <td>1.00</td>\n",
" <td>strict</td>\n",
" <td>1</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35415</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35416</th>\n",
" <td>0.23</td>\n",
" <td>strict</td>\n",
" <td>3</td>\n",
" <td>72%</td>\n",
" <td>f</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35417</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35418</th>\n",
" <td>1.00</td>\n",
" <td>flexible</td>\n",
" <td>1</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35419</th>\n",
" <td>1.00</td>\n",
" <td>flexible</td>\n",
" <td>1</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35420</th>\n",
" <td>1.43</td>\n",
" <td>strict</td>\n",
" <td>5</td>\n",
" <td>60%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35421</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35422</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35423</th>\n",
" <td>1.30</td>\n",
" <td>flexible</td>\n",
" <td>4</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35424</th>\n",
" <td>1.00</td>\n",
" <td>strict</td>\n",
" <td>1</td>\n",
" <td>72%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35425</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35426</th>\n",
" <td>NaN</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>100%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35427</th>\n",
" <td>NaN</td>\n",
" <td>strict</td>\n",
" <td>0</td>\n",
" <td>93%</td>\n",
" <td>f</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>35428 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
" reviews_per_month cancellation_policy number_of_reviews \\\n",
"0 8.00 moderate 52 \n",
"1 NaN strict 0 \n",
"2 3.51 strict 28 \n",
"3 NaN flexible 0 \n",
"4 NaN flexible 0 \n",
"5 2.93 moderate 31 \n",
"6 NaN flexible 0 \n",
"7 NaN flexible 0 \n",
"8 0.17 strict 2 \n",
"9 0.18 moderate 2 \n",
"10 1.00 strict 1 \n",
"11 1.11 flexible 4 \n",
"12 1.04 strict 34 \n",
"13 2.35 strict 14 \n",
"14 NaN flexible 0 \n",
"15 NaN strict 0 \n",
"16 0.99 strict 28 \n",
"17 NaN flexible 0 \n",
"18 NaN moderate 0 \n",
"19 0.24 flexible 2 \n",
"20 NaN flexible 0 \n",
"21 3.33 moderate 5 \n",
"22 0.86 strict 4 \n",
"23 NaN flexible 0 \n",
"24 NaN strict 0 \n",
"25 0.18 flexible 2 \n",
"26 0.60 moderate 1 \n",
"27 NaN flexible 0 \n",
"28 NaN flexible 0 \n",
"29 3.84 strict 76 \n",
"... ... ... ... \n",
"35398 2.31 flexible 7 \n",
"35399 NaN flexible 0 \n",
"35400 1.00 flexible 1 \n",
"35401 0.34 moderate 1 \n",
"35402 9.18 strict 15 \n",
"35403 NaN flexible 0 \n",
"35404 NaN flexible 0 \n",
"35405 NaN moderate 0 \n",
"35406 NaN flexible 0 \n",
"35407 NaN flexible 0 \n",
"35408 0.19 flexible 2 \n",
"35409 NaN flexible 0 \n",
"35410 NaN moderate 0 \n",
"35411 0.25 moderate 6 \n",
"35412 1.19 strict 17 \n",
"35413 0.90 strict 3 \n",
"35414 1.00 strict 1 \n",
"35415 NaN flexible 0 \n",
"35416 0.23 strict 3 \n",
"35417 NaN flexible 0 \n",
"35418 1.00 flexible 1 \n",
"35419 1.00 flexible 1 \n",
"35420 1.43 strict 5 \n",
"35421 NaN flexible 0 \n",
"35422 NaN flexible 0 \n",
"35423 1.30 flexible 4 \n",
"35424 1.00 strict 1 \n",
"35425 NaN flexible 0 \n",
"35426 NaN flexible 0 \n",
"35427 NaN strict 0 \n",
"\n",
" host_response_rate instant_bookable review_scores_communication \n",
"0 100% t 10 \n",
"1 100% f NaN \n",
"2 96% t 9 \n",
"3 NaN f NaN \n",
"4 100% f NaN \n",
"5 85% f 10 \n",
"6 NaN f NaN \n",
"7 NaN f NaN \n",
"8 NaN f 10 \n",
"9 NaN f 10 \n",
"10 91% f 10 \n",
"11 100% f 10 \n",
"12 100% f 10 \n",
"13 57% f 10 \n",
"14 NaN f NaN \n",
"15 60% f NaN \n",
"16 80% f 10 \n",
"17 60% f NaN \n",
"18 89% f NaN \n",
"19 100% f 10 \n",
"20 100% f NaN \n",
"21 88% f 10 \n",
"22 100% f 10 \n",
"23 NaN f NaN \n",
"24 96% f NaN \n",
"25 100% f 8 \n",
"26 100% f 10 \n",
"27 NaN f NaN \n",
"28 NaN f NaN \n",
"29 100% f 10 \n",
"... ... ... ... \n",
"35398 100% f 9 \n",
"35399 100% f NaN \n",
"35400 100% f 10 \n",
"35401 NaN f 10 \n",
"35402 100% f 9 \n",
"35403 NaN f NaN \n",
"35404 33% f NaN \n",
"35405 100% t NaN \n",
"35406 100% f NaN \n",
"35407 83% f NaN \n",
"35408 100% t 10 \n",
"35409 NaN f NaN \n",
"35410 NaN f NaN \n",
"35411 100% f 10 \n",
"35412 88% f 10 \n",
"35413 89% f 8 \n",
"35414 100% f 10 \n",
"35415 100% f NaN \n",
"35416 72% f 9 \n",
"35417 100% f NaN \n",
"35418 100% f 10 \n",
"35419 100% f 10 \n",
"35420 60% f 10 \n",
"35421 NaN f NaN \n",
"35422 100% f NaN \n",
"35423 100% f 10 \n",
"35424 72% f NaN \n",
"35425 100% f NaN \n",
"35426 100% f NaN \n",
"35427 93% f NaN \n",
"\n",
"[35428 rows x 6 columns]"
]
},
"execution_count": 172,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_to_model"
]
},
{
"cell_type": "code",
"execution_count": 173,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/peadarcoyle/anaconda/envs/sea/lib/python3.4/site-packages/ipykernel/__main__.py:1: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" if __name__ == '__main__':\n",
"/Users/peadarcoyle/anaconda/envs/sea/lib/python3.4/site-packages/ipykernel/__main__.py:2: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" from ipykernel import kernelapp as app\n",
"/Users/peadarcoyle/anaconda/envs/sea/lib/python3.4/site-packages/ipykernel/__main__.py:3: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" app.launch_new_instance()\n",
"/Users/peadarcoyle/anaconda/envs/sea/lib/python3.4/site-packages/ipykernel/__main__.py:4: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
"/Users/peadarcoyle/anaconda/envs/sea/lib/python3.4/site-packages/ipykernel/__main__.py:5: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
]
}
],
"source": [
"df_to_model['reviews_per_month'] = df_to_model['reviews_per_month'].fillna(0)\n",
"df_to_model['host_response_rate'] = df_to_model['host_response_rate'].fillna(0)\n",
"df_to_model['review_scores_communication'] = df_to_model['review_scores_communication'].fillna(0)\n",
"df_to_model['instant_bookable'] = df_to_model['instant_bookable'].astype('category')\n",
"df_to_model['reviews_per_month'] = df_to_model['reviews_per_month'].astype('int32')"
]
},
{
"cell_type": "code",
"execution_count": 174,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/peadarcoyle/anaconda/envs/sea/lib/python3.4/site-packages/ipykernel/__main__.py:1: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" if __name__ == '__main__':\n"
]
}
],
"source": [
"df_to_model['cancellation_policy'] = df_to_model['cancellation_policy'].astype('category')\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 175,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/peadarcoyle/anaconda/envs/sea/lib/python3.4/site-packages/ipykernel/__main__.py:1: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" if __name__ == '__main__':\n",
"/Users/peadarcoyle/anaconda/envs/sea/lib/python3.4/site-packages/ipykernel/__main__.py:2: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" from ipykernel import kernelapp as app\n"
]
}
],
"source": [
"df_to_model['host_response_rate'] = df_to_model['host_response_rate'].astype('str')\n",
"df_to_model['host_response_rate'] = df_to_model['host_response_rate'].apply(p2f)"
]
},
{
"cell_type": "code",
"execution_count": 176,
"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>reviews_per_month</th>\n",
" <th>cancellation_policy</th>\n",
" <th>number_of_reviews</th>\n",
" <th>host_response_rate</th>\n",
" <th>instant_bookable</th>\n",
" <th>review_scores_communication</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>8</td>\n",
" <td>moderate</td>\n",
" <td>52</td>\n",
" <td>1.00</td>\n",
" <td>t</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>strict</td>\n",
" <td>28</td>\n",
" <td>0.96</td>\n",
" <td>t</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>2</td>\n",
" <td>moderate</td>\n",
" <td>31</td>\n",
" <td>0.85</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>2</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0</td>\n",
" <td>moderate</td>\n",
" <td>2</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>1</td>\n",
" <td>strict</td>\n",
" <td>1</td>\n",
" <td>0.91</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>1</td>\n",
" <td>flexible</td>\n",
" <td>4</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>1</td>\n",
" <td>strict</td>\n",
" <td>34</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>2</td>\n",
" <td>strict</td>\n",
" <td>14</td>\n",
" <td>0.57</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>0</td>\n",
" <td>0.60</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>28</td>\n",
" <td>0.80</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.60</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>0</td>\n",
" <td>moderate</td>\n",
" <td>0</td>\n",
" <td>0.89</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>2</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>3</td>\n",
" <td>moderate</td>\n",
" <td>5</td>\n",
" <td>0.88</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>4</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>0</td>\n",
" <td>0.96</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>2</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0</td>\n",
" <td>moderate</td>\n",
" <td>1</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>3</td>\n",
" <td>strict</td>\n",
" <td>76</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35398</th>\n",
" <td>2</td>\n",
" <td>flexible</td>\n",
" <td>7</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35399</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35400</th>\n",
" <td>1</td>\n",
" <td>flexible</td>\n",
" <td>1</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35401</th>\n",
" <td>0</td>\n",
" <td>moderate</td>\n",
" <td>1</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35402</th>\n",
" <td>9</td>\n",
" <td>strict</td>\n",
" <td>15</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35403</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35404</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.33</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35405</th>\n",
" <td>0</td>\n",
" <td>moderate</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>t</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35406</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35407</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.83</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35408</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>2</td>\n",
" <td>1.00</td>\n",
" <td>t</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35409</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35410</th>\n",
" <td>0</td>\n",
" <td>moderate</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35411</th>\n",
" <td>0</td>\n",
" <td>moderate</td>\n",
" <td>6</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35412</th>\n",
" <td>1</td>\n",
" <td>strict</td>\n",
" <td>17</td>\n",
" <td>0.88</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35413</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>3</td>\n",
" <td>0.89</td>\n",
" <td>f</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35414</th>\n",
" <td>1</td>\n",
" <td>strict</td>\n",
" <td>1</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35415</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35416</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>3</td>\n",
" <td>0.72</td>\n",
" <td>f</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35417</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35418</th>\n",
" <td>1</td>\n",
" <td>flexible</td>\n",
" <td>1</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35419</th>\n",
" <td>1</td>\n",
" <td>flexible</td>\n",
" <td>1</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35420</th>\n",
" <td>1</td>\n",
" <td>strict</td>\n",
" <td>5</td>\n",
" <td>0.60</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35421</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35422</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35423</th>\n",
" <td>1</td>\n",
" <td>flexible</td>\n",
" <td>4</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35424</th>\n",
" <td>1</td>\n",
" <td>strict</td>\n",
" <td>1</td>\n",
" <td>0.72</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35425</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35426</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35427</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>0</td>\n",
" <td>0.93</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>35428 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
" reviews_per_month cancellation_policy number_of_reviews \\\n",
"0 8 moderate 52 \n",
"1 0 strict 0 \n",
"2 3 strict 28 \n",
"3 0 flexible 0 \n",
"4 0 flexible 0 \n",
"5 2 moderate 31 \n",
"6 0 flexible 0 \n",
"7 0 flexible 0 \n",
"8 0 strict 2 \n",
"9 0 moderate 2 \n",
"10 1 strict 1 \n",
"11 1 flexible 4 \n",
"12 1 strict 34 \n",
"13 2 strict 14 \n",
"14 0 flexible 0 \n",
"15 0 strict 0 \n",
"16 0 strict 28 \n",
"17 0 flexible 0 \n",
"18 0 moderate 0 \n",
"19 0 flexible 2 \n",
"20 0 flexible 0 \n",
"21 3 moderate 5 \n",
"22 0 strict 4 \n",
"23 0 flexible 0 \n",
"24 0 strict 0 \n",
"25 0 flexible 2 \n",
"26 0 moderate 1 \n",
"27 0 flexible 0 \n",
"28 0 flexible 0 \n",
"29 3 strict 76 \n",
"... ... ... ... \n",
"35398 2 flexible 7 \n",
"35399 0 flexible 0 \n",
"35400 1 flexible 1 \n",
"35401 0 moderate 1 \n",
"35402 9 strict 15 \n",
"35403 0 flexible 0 \n",
"35404 0 flexible 0 \n",
"35405 0 moderate 0 \n",
"35406 0 flexible 0 \n",
"35407 0 flexible 0 \n",
"35408 0 flexible 2 \n",
"35409 0 flexible 0 \n",
"35410 0 moderate 0 \n",
"35411 0 moderate 6 \n",
"35412 1 strict 17 \n",
"35413 0 strict 3 \n",
"35414 1 strict 1 \n",
"35415 0 flexible 0 \n",
"35416 0 strict 3 \n",
"35417 0 flexible 0 \n",
"35418 1 flexible 1 \n",
"35419 1 flexible 1 \n",
"35420 1 strict 5 \n",
"35421 0 flexible 0 \n",
"35422 0 flexible 0 \n",
"35423 1 flexible 4 \n",
"35424 1 strict 1 \n",
"35425 0 flexible 0 \n",
"35426 0 flexible 0 \n",
"35427 0 strict 0 \n",
"\n",
" host_response_rate instant_bookable review_scores_communication \n",
"0 1.00 t 10 \n",
"1 1.00 f 0 \n",
"2 0.96 t 9 \n",
"3 0.00 f 0 \n",
"4 1.00 f 0 \n",
"5 0.85 f 10 \n",
"6 0.00 f 0 \n",
"7 0.00 f 0 \n",
"8 0.00 f 10 \n",
"9 0.00 f 10 \n",
"10 0.91 f 10 \n",
"11 1.00 f 10 \n",
"12 1.00 f 10 \n",
"13 0.57 f 10 \n",
"14 0.00 f 0 \n",
"15 0.60 f 0 \n",
"16 0.80 f 10 \n",
"17 0.60 f 0 \n",
"18 0.89 f 0 \n",
"19 1.00 f 10 \n",
"20 1.00 f 0 \n",
"21 0.88 f 10 \n",
"22 1.00 f 10 \n",
"23 0.00 f 0 \n",
"24 0.96 f 0 \n",
"25 1.00 f 8 \n",
"26 1.00 f 10 \n",
"27 0.00 f 0 \n",
"28 0.00 f 0 \n",
"29 1.00 f 10 \n",
"... ... ... ... \n",
"35398 1.00 f 9 \n",
"35399 1.00 f 0 \n",
"35400 1.00 f 10 \n",
"35401 0.00 f 10 \n",
"35402 1.00 f 9 \n",
"35403 0.00 f 0 \n",
"35404 0.33 f 0 \n",
"35405 1.00 t 0 \n",
"35406 1.00 f 0 \n",
"35407 0.83 f 0 \n",
"35408 1.00 t 10 \n",
"35409 0.00 f 0 \n",
"35410 0.00 f 0 \n",
"35411 1.00 f 10 \n",
"35412 0.88 f 10 \n",
"35413 0.89 f 8 \n",
"35414 1.00 f 10 \n",
"35415 1.00 f 0 \n",
"35416 0.72 f 9 \n",
"35417 1.00 f 0 \n",
"35418 1.00 f 10 \n",
"35419 1.00 f 10 \n",
"35420 0.60 f 10 \n",
"35421 0.00 f 0 \n",
"35422 1.00 f 0 \n",
"35423 1.00 f 10 \n",
"35424 0.72 f 0 \n",
"35425 1.00 f 0 \n",
"35426 1.00 f 0 \n",
"35427 0.93 f 0 \n",
"\n",
"[35428 rows x 6 columns]"
]
},
"execution_count": 176,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_to_model"
]
},
{
"cell_type": "code",
"execution_count": 178,
"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>reviews_per_month</th>\n",
" <th>cancellation_policy</th>\n",
" <th>number_of_reviews</th>\n",
" <th>host_response_rate</th>\n",
" <th>instant_bookable</th>\n",
" <th>review_scores_communication</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>8</td>\n",
" <td>moderate</td>\n",
" <td>52</td>\n",
" <td>1.00</td>\n",
" <td>t</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>strict</td>\n",
" <td>28</td>\n",
" <td>0.96</td>\n",
" <td>t</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>2</td>\n",
" <td>moderate</td>\n",
" <td>31</td>\n",
" <td>0.85</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>2</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0</td>\n",
" <td>moderate</td>\n",
" <td>2</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>1</td>\n",
" <td>strict</td>\n",
" <td>1</td>\n",
" <td>0.91</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>1</td>\n",
" <td>flexible</td>\n",
" <td>4</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>1</td>\n",
" <td>strict</td>\n",
" <td>34</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>2</td>\n",
" <td>strict</td>\n",
" <td>14</td>\n",
" <td>0.57</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>0</td>\n",
" <td>0.60</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>28</td>\n",
" <td>0.80</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.60</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>0</td>\n",
" <td>moderate</td>\n",
" <td>0</td>\n",
" <td>0.89</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>2</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>3</td>\n",
" <td>moderate</td>\n",
" <td>5</td>\n",
" <td>0.88</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>4</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>0</td>\n",
" <td>0.96</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>2</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0</td>\n",
" <td>moderate</td>\n",
" <td>1</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>3</td>\n",
" <td>strict</td>\n",
" <td>76</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35398</th>\n",
" <td>2</td>\n",
" <td>flexible</td>\n",
" <td>7</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35399</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35400</th>\n",
" <td>1</td>\n",
" <td>flexible</td>\n",
" <td>1</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35401</th>\n",
" <td>0</td>\n",
" <td>moderate</td>\n",
" <td>1</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35402</th>\n",
" <td>9</td>\n",
" <td>strict</td>\n",
" <td>15</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35403</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35404</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.33</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35405</th>\n",
" <td>0</td>\n",
" <td>moderate</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>t</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35406</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35407</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.83</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35408</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>2</td>\n",
" <td>1.00</td>\n",
" <td>t</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35409</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35410</th>\n",
" <td>0</td>\n",
" <td>moderate</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35411</th>\n",
" <td>0</td>\n",
" <td>moderate</td>\n",
" <td>6</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35412</th>\n",
" <td>1</td>\n",
" <td>strict</td>\n",
" <td>17</td>\n",
" <td>0.88</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35413</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>3</td>\n",
" <td>0.89</td>\n",
" <td>f</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35414</th>\n",
" <td>1</td>\n",
" <td>strict</td>\n",
" <td>1</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35415</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35416</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>3</td>\n",
" <td>0.72</td>\n",
" <td>f</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35417</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35418</th>\n",
" <td>1</td>\n",
" <td>flexible</td>\n",
" <td>1</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35419</th>\n",
" <td>1</td>\n",
" <td>flexible</td>\n",
" <td>1</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35420</th>\n",
" <td>1</td>\n",
" <td>strict</td>\n",
" <td>5</td>\n",
" <td>0.60</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35421</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35422</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35423</th>\n",
" <td>1</td>\n",
" <td>flexible</td>\n",
" <td>4</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35424</th>\n",
" <td>1</td>\n",
" <td>strict</td>\n",
" <td>1</td>\n",
" <td>0.72</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35425</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35426</th>\n",
" <td>0</td>\n",
" <td>flexible</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35427</th>\n",
" <td>0</td>\n",
" <td>strict</td>\n",
" <td>0</td>\n",
" <td>0.93</td>\n",
" <td>f</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>35428 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
" reviews_per_month cancellation_policy number_of_reviews \\\n",
"0 8 moderate 52 \n",
"1 0 strict 0 \n",
"2 3 strict 28 \n",
"3 0 flexible 0 \n",
"4 0 flexible 0 \n",
"5 2 moderate 31 \n",
"6 0 flexible 0 \n",
"7 0 flexible 0 \n",
"8 0 strict 2 \n",
"9 0 moderate 2 \n",
"10 1 strict 1 \n",
"11 1 flexible 4 \n",
"12 1 strict 34 \n",
"13 2 strict 14 \n",
"14 0 flexible 0 \n",
"15 0 strict 0 \n",
"16 0 strict 28 \n",
"17 0 flexible 0 \n",
"18 0 moderate 0 \n",
"19 0 flexible 2 \n",
"20 0 flexible 0 \n",
"21 3 moderate 5 \n",
"22 0 strict 4 \n",
"23 0 flexible 0 \n",
"24 0 strict 0 \n",
"25 0 flexible 2 \n",
"26 0 moderate 1 \n",
"27 0 flexible 0 \n",
"28 0 flexible 0 \n",
"29 3 strict 76 \n",
"... ... ... ... \n",
"35398 2 flexible 7 \n",
"35399 0 flexible 0 \n",
"35400 1 flexible 1 \n",
"35401 0 moderate 1 \n",
"35402 9 strict 15 \n",
"35403 0 flexible 0 \n",
"35404 0 flexible 0 \n",
"35405 0 moderate 0 \n",
"35406 0 flexible 0 \n",
"35407 0 flexible 0 \n",
"35408 0 flexible 2 \n",
"35409 0 flexible 0 \n",
"35410 0 moderate 0 \n",
"35411 0 moderate 6 \n",
"35412 1 strict 17 \n",
"35413 0 strict 3 \n",
"35414 1 strict 1 \n",
"35415 0 flexible 0 \n",
"35416 0 strict 3 \n",
"35417 0 flexible 0 \n",
"35418 1 flexible 1 \n",
"35419 1 flexible 1 \n",
"35420 1 strict 5 \n",
"35421 0 flexible 0 \n",
"35422 0 flexible 0 \n",
"35423 1 flexible 4 \n",
"35424 1 strict 1 \n",
"35425 0 flexible 0 \n",
"35426 0 flexible 0 \n",
"35427 0 strict 0 \n",
"\n",
" host_response_rate instant_bookable review_scores_communication \n",
"0 1.00 t 10 \n",
"1 1.00 f 0 \n",
"2 0.96 t 9 \n",
"3 0.00 f 0 \n",
"4 1.00 f 0 \n",
"5 0.85 f 10 \n",
"6 0.00 f 0 \n",
"7 0.00 f 0 \n",
"8 0.00 f 10 \n",
"9 0.00 f 10 \n",
"10 0.91 f 10 \n",
"11 1.00 f 10 \n",
"12 1.00 f 10 \n",
"13 0.57 f 10 \n",
"14 0.00 f 0 \n",
"15 0.60 f 0 \n",
"16 0.80 f 10 \n",
"17 0.60 f 0 \n",
"18 0.89 f 0 \n",
"19 1.00 f 10 \n",
"20 1.00 f 0 \n",
"21 0.88 f 10 \n",
"22 1.00 f 10 \n",
"23 0.00 f 0 \n",
"24 0.96 f 0 \n",
"25 1.00 f 8 \n",
"26 1.00 f 10 \n",
"27 0.00 f 0 \n",
"28 0.00 f 0 \n",
"29 1.00 f 10 \n",
"... ... ... ... \n",
"35398 1.00 f 9 \n",
"35399 1.00 f 0 \n",
"35400 1.00 f 10 \n",
"35401 0.00 f 10 \n",
"35402 1.00 f 9 \n",
"35403 0.00 f 0 \n",
"35404 0.33 f 0 \n",
"35405 1.00 t 0 \n",
"35406 1.00 f 0 \n",
"35407 0.83 f 0 \n",
"35408 1.00 t 10 \n",
"35409 0.00 f 0 \n",
"35410 0.00 f 0 \n",
"35411 1.00 f 10 \n",
"35412 0.88 f 10 \n",
"35413 0.89 f 8 \n",
"35414 1.00 f 10 \n",
"35415 1.00 f 0 \n",
"35416 0.72 f 9 \n",
"35417 1.00 f 0 \n",
"35418 1.00 f 10 \n",
"35419 1.00 f 10 \n",
"35420 0.60 f 10 \n",
"35421 0.00 f 0 \n",
"35422 1.00 f 0 \n",
"35423 1.00 f 10 \n",
"35424 0.72 f 0 \n",
"35425 1.00 f 0 \n",
"35426 1.00 f 0 \n",
"35427 0.93 f 0 \n",
"\n",
"[35428 rows x 6 columns]"
]
},
"execution_count": 178,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y = df_listing['availability_365'].values\n",
"df_to_model"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"df_to_model = pd.get_dummies(df_to_model)"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"X = df_to_model.values"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Let us look at one of the columns. \n",
"* We see below that we have a very large variety of numbers, let us apply next a preprocessing step. "
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 52., 0., 28., ..., 0., 0., 0.])"
]
},
"execution_count": 119,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X[:,1]"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from sklearn import preprocessing\n",
"X[:,1] = preprocessing.scale(X[:,1])\n"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 8. , 1.78244273, 1. , ..., 0. ,\n",
" 0. , 0. ],\n",
" [ 0. , -0.52226535, 1. , ..., 1. ,\n",
" 0. , 0. ],\n",
" [ 3. , 0.71873131, 0.96 , ..., 1. ,\n",
" 0. , 0. ],\n",
" ..., \n",
" [ 0. , -0.52226535, 1. , ..., 0. ,\n",
" 0. , 0. ],\n",
" [ 0. , -0.52226535, 1. , ..., 0. ,\n",
" 0. , 0. ],\n",
" [ 0. , -0.52226535, 0.93 , ..., 1. ,\n",
" 0. , 0. ]])"
]
},
"execution_count": 121,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X"
]
},
{
"cell_type": "code",
"execution_count": 151,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.cross_validation import train_test_split\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
]
},
{
"cell_type": "code",
"execution_count": 152,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"names = df_to_model.columns.tolist()"
]
},
{
"cell_type": "code",
"execution_count": 153,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0. , -0.47794405, 0.3 , ..., 0. ,\n",
" 0. , 0. ],\n",
" [ 0. , -0.43362274, 1. , ..., 1. ,\n",
" 0. , 0. ],\n",
" [ 0. , -0.52226535, 1. , ..., 0. ,\n",
" 0. , 0. ],\n",
" ..., \n",
" [ 0. , -0.47794405, 0.1 , ..., 0. ,\n",
" 0. , 0. ],\n",
" [ 0. , -0.43362274, 1. , ..., 0. ,\n",
" 0. , 0. ],\n",
" [ 3. , 0.36416083, 0.97 , ..., 0. ,\n",
" 0. , 0. ]])"
]
},
"execution_count": 153,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train"
]
},
{
"cell_type": "code",
"execution_count": 154,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"features = df_to_model.columns\n",
"features = np.asarray(features)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 155,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Lasso(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=1000,\n",
" normalize=False, positive=False, precompute=False, random_state=None,\n",
" selection='cyclic', tol=0.0001, warm_start=False)\n",
"r^2 on test data : 0.036396\n",
"ElasticNet(alpha=0.1, copy_X=True, fit_intercept=True, l1_ratio=0.7,\n",
" max_iter=1000, normalize=False, positive=False, precompute=False,\n",
" random_state=None, selection='cyclic', tol=0.0001, warm_start=False)\n",
"r^2 on test data : 0.036488\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAF6CAYAAAAXoJOQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VGX2wPHvlPRKQgok1BSB0KsBQYrwswACwoIoUhWV\noqKoWEBlFcS2K+IKi4piwQa64rKrWNeCSEkIPSGQCklIn7Rp7++PYUYjJSGFmYTzeZ591ty5c++5\nk8vJnXPfe16NUkohhBCi2dI6OwAhhBCNSxK9EEI0c5LohRCimZNEL4QQzZwkeiGEaOYk0QshRDMn\niV4IIZo5SfS1kJWVRa9evZwdhsO0adMYMWIE48ePZ/z48YwZM4Zrr72WTz/9tNp6o0ePZv369Y6f\nq6qqeOSRRxgzZgxjxozh0UcfxWg01ri/7777jrFjx3Lddddx7733UlZWdlHrGQwGFi5cyJgxYxg9\nejT//Oc/He8pLi7mgQceYPz48Vx//fV89tlnjtdeeuklbrjhBkaPHs2SJUuoqqoCbL+POXPmcP31\n1zNp0iS2bdvmeM/Jkye58847GT9+PGPHjuXHH3+s8fi2bNlC3759GT9+POPGjXP87+GHHwZgyZIl\nvPnmmzVu51wMBgPTp093/Dx+/HgMBkOt3z98+HAWL15cbdn+/fsZPnx4je9NSkpi2bJl53xtyZIl\nDBkyxHEOjR07lpEjR1Y7XwDmzJnDE0884fhZKcWqVasYPXo0Y8eOZeHChRQWFtYYS2JiIjfddBM3\n3HADM2fO5PTp0xe1nslkYunSpY7z4dlnn8X+CFBVVRXLly9n/PjxXHvttbz++utnbXf79u306dPH\n8bPVauWJJ55wbG/VqlWO144dO8bUqVMZN24cEyZMqNU55PKUqFFmZqbq1auXs8NwuPXWW9WXX35Z\nbVlSUpLq2rWrKisrU0op9fXXX6tZs2apUaNGKZPJpJRS6qWXXlIPPfSQUkopq9WqFi1apF5++eUL\n7is/P1/Fx8er9PR0pZRSzz33nHriiScuar3ly5erZ555RimlVHl5uRo2bJhKSEhQSik1d+5c9cIL\nLyillDp16pTq37+/OnXqlPryyy/VpEmTlNlsVkoptXDhQrV27VrH8b/yyitKKaUMBoOaMGGCOnz4\nsFJKqbFjx6pNmzYppZQ6ePCg6t+/vzIajRc8xs2bN6u5c+ee9/WHH35YvfHGGxfcxvlkZGTU69wZ\nNmyY6t69u/rss88cy5KSktTw4cNrfO8nn3xy3uM61zFlZ2ernj17qtTUVKWUUocPH1YTJ05Uo0aN\nUgUFBUoppT788EM1Y8YMxzm1atUq9eCDD14wDqPRqK6++mq1d+9epZRS7733nrr99tsvar0333xT\nLViwQCmllMViUZMnT1ZffPGFUsp2ft1///1KKaVKS0vV8OHDVWJiomO7x48fVyNHjqz2e9i8ebOa\nPn26Ukops9msbrrpJvWf//xHKWU7vz755BOllO0c6tOnj7JYLBc8RlcnV/T1dOLECWbNmsWUKVMY\nPnw48+bNc1wlv/zyy9x4441MnDiROXPmOK5Ozrd8165dTJ482fHa//73v/PuV/3pgeb09HS8vb1x\nd3cHYP369dx9990MGDDAcaXfv39/7rrrLgA0Gg2dO3cmOzvbEdPq1avP2s9PP/1E9+7dadOmDQA3\n33wzn3/++UWt99hjj/HQQw8BkJubi8lkws/Pj+LiYnbs2MG8efMACAsL48MPPyQwMJCRI0fy/vvv\no9PpMBgMFBQU0KJFC8B2RTt+/HgAfHx8GDBgAF999RWHDx+mpKSEyZMnA9C5c2fee+89tNqGO80/\n/vhj/vKXvzBhwgSGDx/O+++/D8Dp06eZPXs2EyZMYMKECbz88ssAPPLII1RWVjJ+/HisViudOnWi\nqKgIgLVr13LdddcxZswYFixYcN4r/fvuu4+nn36arKys88Zk3++sWbM4fvw4p06dYvXq1ezevZtH\nHnmkVsd28uRJwPaZgu0cmjZtGhMmTODtt98GIDY2lgcffBC9Xg9A165dHefQpk2bePzxx8/ablJS\nEn5+fvTs2ROAiRMn8ssvv1BcXFzr9WbMmMFLL70EQEFBASUlJQQGBgLwr3/9i3vuuQcAX19f3n77\nbTp27AhARUUFDz74IEuWLKm2L4vFQkVFBZWVlVRWVmIymfD09ARs/7ZKSkoA2zcy+/Imzdl/aZqC\nC13RP/vss+pf//qXUkopk8mkxowZo7788kt18uRJ1adPH8fV5Jtvvqm2b99+3uWFhYVq4MCBat++\nfUoppZKTk9WAAQNUZmbmWfu89dZb1YgRI9S4cePUsGHD1MCBA9WiRYvUoUOHlFJK7d27V40dO1Yp\nZbsqu+GGG855TFdddZX67rvvLnjsa9euVcuWLXP8bDabVadOnZTBYLjo9R544AHVvXt3tWjRImW1\nWlViYqIaMWKEevXVV9WUKVPUTTfd5LhKs3vnnXdU37591ejRox1XlTNmzFCrV69WStm+Sdxwww1q\n6dKl6t///reaOnWqWrFihZo0aZK6+eab1c8//3zB41PKdnXXp08fNW7cODVu3Dh14403qnHjxqnN\nmzcrpX6/+i0rK1OTJ09WRUVFSimlEhISHOfFmjVrHMdfXl6uFi1apEpLS886dzp16qQKCwvV9u3b\n1bXXXqtKS0uVUkqtXLlSvfbaa2fFNmzYMLV//3710ksvqcmTJyuLxVLtiv7XX39Vt9xyi6qsrFRK\nKfXjjz+q66+/3nFcF7qiHzx4sBo3bpy65ppr1IABA9S8efPUzp07lVK2q/vBgwcro9Go8vPz1ZAh\nQ1RFRUW1bRQVFanRo0erd99994Kf7xdffKHmzJlTbdmQIUPUkSNHLnq9559/XvXs2VNNmzZNVVZW\nqvz8fNWlSxf1/vvvq1tvvVWNGzdOvfXWW471Fy9erDZv3nzW78FisajZs2erfv36qd69ezu+LShl\n+zczYMAANWTIENW1a1f11VdfXfD4mgK9s//QNHWLFy/mp59+Yv369Zw4cYK8vDzKysoICwujc+fO\njB8/nsGDBzNkyBDi4+NRSp1z+ffff0+7du3o1q0bANHR0fTu3ZudO3c6rl7/6MEHH2TUqFEUFhZy\nxx13EBQURKdOnQAoKSnh0UcfBeCKK67g5ptv5vTp07Rs2RKwXREvWLCAadOmcfXVV1/w+NR5WiHp\ndLqLXu+5557jqaeeYv78+axZs4aBAweSmZmJv78/77//Punp6UydOpX27dvTpUsXAG655RZuueUW\n/va3v7Fw4UI2btzIypUrWbFiBWPHjiUyMpJhw4ZRUVGB2Wxmz549zJkzh4cffph9+/Zx++23s3Xr\nVkJCQi54nH379uW111674Dre3t689tprfPvtt6SlpXHo0CEqKioAGDx4MHPnziU7O5uBAwdy//33\n4+vre9ZVq90vv/zCtddei6+vL4DjG8/5LFiwgB07dvDyyy9zzTXXOJZ///33pKenM2XKFMfvoKSk\nxHFFeiEzZ85k5syZVFZWcu+996LVaunbty8AOTk5LF26FDc3N4KCgrj//vvJzs52XCmnp6czb948\n+vbty9SpUy+4H6vVes7lfz6HarPe/fffz7333stjjz3GE088wb333ovFYiEjI4ONGzeSn5/PtGnT\niIiIICcnB71ez/jx48nMzKy2zdWrVxMcHMwvv/xCRUUFd999Nxs2bGDq1Kncd999PPvss1x99dUk\nJiZy55130q1bN8LCwi78gbowKd3U03333ceHH35IREQEM2fOdCQojUbjSEotWrRgxYoVPP300+dd\nrpQ6K1larVbMZvMF99+iRQtefPFFPvroI/773/8CMGTIEPr37+9Y55ZbbnEk+S+++ILZs2ezePFi\n7rjjjhqPr1WrVuTm5jp+PnXqFP7+/md9nb3Qej/++KPjNS8vL0aPHs2BAwcIDQ1Fo9Ewbtw4ANq2\nbUufPn3Yt28fhw8f5tChQ47tTZo0iYMHDwJQWVnJypUr+de//sWrr75KaWkp7dq1IzQ0FH9/f4YN\nGwbgKCUdPny4xuOsjZycHMaNG8fJkyfp27cv9957r+O1bt268fXXXzN58mSysrKYOHEiCQkJ592W\nXq9Ho9E4fi4tLT1vaQZsye65557j/fffZ9euXY7lVquVG2+8kS1btvDpp5/y6aef8vHHH+Pv71/r\n4/L09GTVqlXs2bPHcdO5Z8+e1f6gjB071pHkd+zYwZQpU7jpppvOe7P3j/58bpjNZgoLC89KnOda\nr6ioiLCwMPbs2cOJEyccn8X48eM5cOAAQUFB6PV6brzxRgCCg4MZOnQoe/fu5dNPPyUpKYnx48cz\nd+5cRwktNzeX7du3c9NNN6HT6fD19WX8+PHs2LGDo0ePUllZ6bgA6tGjB9HR0SQmJtb683RFkuhr\n6XxXrD///DPz5s3juuuuQylFYmIiFouFw4cPM3r0aKKiorjjjjuYMWMGR44cOe/yHj16cOLECZKS\nkgBITk5m9+7d1RL2+bRp04Y777yTZ555hsrKyvOu95///Ienn36aN954g+uvv75Wx33VVVexb98+\n0tPTAfjggw8YMWJErdazJ4pt27axZs0aAIxGI9u2bSM+Pp7IyEi6dOniuIdw+vRpEhIS6Nq1K0eO\nHGHJkiWO49myZQvx8fGA7X7Ce++9B8Dx48f55ptvGDVqFL169cLDw4PvvvsOsI2eyMjI4IorrqjV\nsdYkKSmJoKAg7rrrLgYNGsS3334L2M6NF154gTVr1jBixAgeffRRoqOjOXHiBHq9vtqVqv08io+P\n56uvvnKMTFq9ejUbNmy44P7btGnDo48+yosvvuhYNmjQIL744gvy8vIAePfdd5kxYwZgS4g1XSjY\n+fv789BDD7F69epqyfbP9uzZw4IFC1i1apVjPzXp0aMHxcXFjj98H3/8Mb169XJ8m7nQej179sTX\n15cdO3awcuVKLBYLVquVzz//nPj4eNzc3Bg+fLjjHCorK+Pnn3+me/fufPjhh3z++eds2bKFdevW\n4eHhwZYtWwgNDSUuLs4xWstkMvHNN9/Qq1cv2rVrh8FgcMSQnp7O8ePH6dy5c62O1VVp1PkymHDI\nysrimmuuwcvLC7D9Y9VoNHzwwQfs2rWL119/ncDAQLy8vPDz8yMmJob77ruPNWvWsHXrVry9vfHy\n8uKxxx6jU6dO512+c+dOnn/+eSoqKtDpdMyfP7/aVZXdbbfdxq233sqoUaMcy4xGI2PHjmXUqFEs\nWrTonMfxf//3f5SWlhIWFuY4ht69e/P444/z8ssvo9FoWLBgwVnv++GHH3jhhRcwm820adOGVatW\n4e/vz/79+3n88cfZsmXLBdczGAwsXbqU5ORkNBoN11xzDQsXLgRsV/5PPPEEmZmZKKWYMWMGkyZN\nAuCVV15h27Zt6PV6oqOjefzxxwkMDCQnJ4cHH3yQgoIC3NzceOCBBxg4cCBg+wP51FNPOW543nff\nfQwfPpzc3FzuuOMO/vnPf55VxtmyZQvPPPMMkZGRjmVKKfR6PR9//DFLliwhNjaWqVOncu+995Ka\nmoqPjw/dunVj+/btvPvuu/j6+vLQQw+Rm5uLu7s7nTp14oknnkCn03HLLbdQXFzMe++9R3x8PL/8\n8guBgYG8+eabbN68GY1GQ0xMDMuXL8fb27tabCNGjODll18mLi7OsWzx4sXs3buX7du3A/Dee+/x\n/vvvo9Vq8fX15amnniIqKoqMjAymT59OXFzcWTfa7cc0c+bMs86tkJAQXnjhhXOeQ7NmzSIpKYnI\nyEjHH602bdqwevVqNm3axIEDB1i+fPlZ70tKSuKpp56isrKSwMBAnn32WVq3bk1ubi5z585l3bp1\nhISEnHc9k8nEihUr2LlzJ1qtlj59+vDwww/j4eFBcXExTz/9NAcOHMBqtTJmzBjuvvvuavvPyspi\nzJgx7NmzB4CioiKWL1/OwYMH0ev1XHnllTz88MPodDp27tzJqlWrMBqN6PV65s+fX6vhrK6sXok+\nMTGR559/no0bN1ZbvmHDBj7++GOCgoIAeOqpp2jfvn29AhWivh566CEeeeQRAgICnB2KEJdUnW/G\nrl+/ns8++8wxFOuPDhw4wKpVqxz1aiGcrbKykquuukqSvLgs1blG365dO0fd9c8OHDjA2rVrmTp1\nKuvWratzcEI0FE9PT8aMGePsMIRwijon+pEjR541PMruhhtu4Mknn+Ttt99m9+7dfP/993UOUAgh\nRP00yqib6dOnExgYiF6v5+qrr3YMi7sQuScshBCNo94PTP05QRsMBkaPHs22bdvw9PRkx44dTJw4\nscbtaDQa8vJK6xuO04SE+En8TtSU42/KsYPE72whIX41rlPvRG9/6GPr1q1UVFQwadIkFi1axLRp\n0/Dw8CA+Pp4hQ4bUdzdCCCHqyKXG0Tf1v6oSv/M05fibcuwg8Ttbba7o5clYIYRo5iTRCyFEMyeJ\nXgghmjlJ9EII0cxJohdCiGZOEr0QwmHv3t2MGTOKhQvvZMGCuSxYMJelS23T8C1YMJf09LSL2l5q\nagqJibaWv0888Wit2yZf3Pb3Nug2AT755ANuvfUvfPPNdv7xj9XMmDGVjz7axIYN68/7nscee/Ci\n95OTc4qffjr/lKENRWaYEkJU06dPP5544ukG2dZ3331DUFAwPXr0bLBtnnv7vRp0uz/88B1PPbWC\njh2jeO211bz11iZHm/Lz+etfV130fvbs2UVa2gkGDRpc11BrRRK9EKKamh6tycvL5fnnV2AymcjP\nP8399y+ie/f+rF27hoSE3VgsVoYOHc6oUdexbdtW3NzcuOKKTixduoT33vuEnJxTrFy5HIvFjIeH\nJ08++QwBAYGO7U+ffjO9evUmJSUZrVbLypUv4O3tw9q1a9i3LwGr1cLkybfQtWt3x/Y7depMp06/\nd8vdsGE9P/74A1arhXHjJjJ27Hjef/8dvvnmS/R6PT169ObOO+dTVmZg+fJHOX26AIB77rmf/fuT\nOHLkMCtXLic+fhCnT59m8eJ7uPXWGWzbtpUnn3yGrVs/5dNPN2O1WrnqqiHMmnUHN974f3z22X85\ndiyFv//9eQD8/QN45JGlHDlymHfffQs3Nzeys7O55ppR3HLLdN55ZwNVVVV069aD3Nwctm3bik6n\npVOnOO655/4G+51KohfCRX34TQq/HT7/bE910a9TKH8ZHn3Bdfbs2cXChXc6JqeJj7+Km2++1fF6\nWtoJbr55Gj179mb//n28884bdO/en+3bv2T16rUEBwezbdtWWrYM4brrRhMc3JLOneMA21P0a9b8\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x4113bd0b8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.linear_model import Lasso\n",
"from sklearn.metrics import r2_score\n",
"figsize(6,6)\n",
"alpha = 0.1\n",
"lasso = Lasso(alpha=alpha)\n",
"\n",
"y_pred_lasso = lasso.fit(X_train, y_train).predict(X_test)\n",
"r2_score_lasso = r2_score(y_test, y_pred_lasso)\n",
"print(lasso)\n",
"print(\"r^2 on test data : %f\" % r2_score_lasso)\n",
"\n",
"###############################################################################\n",
"# ElasticNet\n",
"from sklearn.linear_model import ElasticNet\n",
"\n",
"enet = ElasticNet(alpha=alpha, l1_ratio=0.7)\n",
"\n",
"y_pred_enet = enet.fit(X_train, y_train).predict(X_test)\n",
"r2_score_enet = r2_score(y_test, y_pred_enet)\n",
"print(enet)\n",
"print(\"r^2 on test data : %f\" % r2_score_enet)\n",
"\n",
"plt.plot(enet.coef_, label='Elastic net coefficients')\n",
"plt.plot(lasso.coef_, label='Lasso coefficients')\n",
"plt.legend(loc='best')\n",
"plt.title(\"Lasso R^2: %f, Elastic Net R^2: %f\"\n",
" % (r2_score_lasso, r2_score_enet))\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 170,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"MSE: 121.6835\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x413b66908>"
]
},
"execution_count": 170,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\ngg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11cb55240>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from sklearn import ensemble\n",
"###############################################################################\n",
"# Fit regression model\n",
"params = {'n_estimators': 1000, 'max_depth': 20, 'min_samples_split': 17, 'max_features': 1.0,\n",
" 'learning_rate': 0.01, 'loss': 'huber'}\n",
"clf = ensemble.GradientBoostingRegressor(**params)\n",
"\n",
"clf.fit(X_train, y_train)\n",
"mse = mean_squared_error(y_test, clf.predict(X_test))\n",
"print(\"MSE: %.4f\" % mse)\n",
"\n",
"###############################################################################\n",
"# Plot training deviance\n",
"\n",
"# compute test set deviance\n",
"test_score = np.zeros((params['n_estimators'],), dtype=np.float64)\n",
"\n",
"for i, y_pred in enumerate(clf.staged_predict(X_test)):\n",
" test_score[i] = clf.loss_(y_test, y_pred)\n",
"\n",
"plt.figure(figsize=(12, 6))\n",
"plt.subplot(1, 2, 1)\n",
"plt.title('Deviance')\n",
"plt.plot(np.arange(params['n_estimators']) + 1, clf.train_score_, 'b-',\n",
" label='Training Set Deviance')\n",
"plt.plot(np.arange(params['n_estimators']) + 1, test_score, 'r-',\n",
" label='Test Set Deviance')\n",
"plt.legend(loc='upper right')\n",
"plt.xlabel('Boosting Iterations')\n",
"plt.ylabel('Deviance')\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 157,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x408c53f98>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"###############################################################################\n",
"# Plot feature importance\n",
"feature_importance = clf.feature_importances_\n",
"# make importances relative to max importance\n",
"feature_importance = 100.0 * (feature_importance / feature_importance.max())\n",
"sorted_idx = np.argsort(feature_importance)\n",
"pos = np.arange(sorted_idx.shape[0]) + .5\n",
"plt.subplot(1, 2, 2)\n",
"plt.barh(pos, feature_importance[sorted_idx], align='center')\n",
"plt.yticks(pos, names)\n",
"plt.xlabel('Relative Importance')\n",
"plt.title('Variable Importance')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"MSE: 109.7886\n"
]
}
],
"source": [
"from sklearn.metrics import mean_squared_error\n",
"mse = mean_squared_error(y_test, clf.predict(X_test))\n",
"print(\"MSE: %.4f\" % mse)"
]
},
{
"cell_type": "code",
"execution_count": 161,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAasAAAGUCAYAAACLPQ0VAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd8k1X3wL8ZXemeUCgUKHsvERwIiIjiQESGAvLq63zh\nRQFFkOUCxS34U1QEcSEqiCiiL4IgIkum7A0ddO82aZPc3x9pnqY0adqStInc7+fDh/bJ89x78uT0\nOTnnnnuOSgghkEgkEonEg1HXtwASiUQikThDGiuJRCKReDzSWEkkEonE45HGSiKRSCQejzRWEolE\nIvF4pLGSSCQSiccjjZWL2LlzJ9dccw3jxo1j3LhxjBo1is8++6za1x8/fpzdu3cDMGXKFIxGo8Nz\nr7vuuirHmjx5Mrt27ar23JeLM3nczYULF7jllluYPn16heP1LZczdu7cyeTJk+tbjFrhStlrovvO\ncKQLzkhJSWHTpk21nlfifqSxciF9+vRh+fLlyr+PP/6YgoKCal37yy+/cPLkSQBef/11tFqtO0X9\nR/HXX3/Rr18/5s+fX9+i1BiVSlXfItQaV8nuSt2vrS5s376dPXv21HpeifuRT0QXYru/uqCgAK1W\ni0ajYdeuXSxatAghBEVFRcof5KOPPkp4eDi9evVi1apV+Pr60r59e5544gnWr1/PuXPnePnllzGb\nzWRnZzN37ly6du1qd+7PP/+cb775hujoaLKysgAwGo3MmTOH8+fPYzabeeKJJ7jqqqsYMmQIPXr0\n4OTJk4SFhfHGG2+g1WrtnnvHHXfQq1cvjh07hkql4v/+7//Q6XTMmjWLU6dOERcXR2lpKQAXL15k\n1qxZGAwG/P39eeGFFzAajUyZMoXY2FjOnTtH586dmTt3LllZWTzzzDPk5eUBsGDBAiIiIpgxYwa5\nubkAPPvss7Ru3brC+3zllVf466+/UKlU3HbbbQwcOJDFixdjMBiIj49n1KhRyrklJSVMnTqV5ORk\nwsPDeeeddygqKuKpp56ioKAAk8nEE088wdVXX82AAQNYv349vr6+vP766yQkJNC3b1+efPJJhBCU\nlJQwd+5c2rZty2effcYPP/yASqViyJAhjBkzRpnz2LFjvPTSSyxfvhyARx99lCeeeIJz587x+eef\nYzKZUKlULFq0qML7uu6669i6dStg8YxHjx5Nt27dKnwmkyZNolevXhWu+/jjj1m3bh1arZarrrqK\n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\nuAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x12775cba8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"features=[0,1,2,3,4,5]\n",
"fig, axs = plot_partial_dependence(clf, X_train, features, feature_names=names,\n",
" n_jobs=3, grid_resolution=50)\n",
"fig.suptitle('Partial dependence of house value on nonlocation features\\n'\n",
" 'for the airbnb paris dataset')\n",
"plt.subplots_adjust(top=0.9) # tight_layout causes overlap with suptitle"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"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.4.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment