{"id":20156539,"url":"https://github.com/luccifer/logistics-datamining","last_synced_at":"2025-06-12T17:06:06.398Z","repository":{"id":75897944,"uuid":"61474146","full_name":"Luccifer/Logistics-DataMining","owner":"Luccifer","description":"NSU HSE grade work","archived":false,"fork":false,"pushed_at":"2017-02-28T00:20:06.000Z","size":1508,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-03T02:11:53.707Z","etag":null,"topics":["bigdata","datamining","hse","logistics","machine-learning","ml","nru","nruhse","python"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Luccifer.png","metadata":{"files":{"readme":"README.ipynb","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-06-19T10:00:12.000Z","updated_at":"2023-09-08T17:11:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"bba15c26-040a-4ab4-b385-8759e456327a","html_url":"https://github.com/Luccifer/Logistics-DataMining","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Luccifer/Logistics-DataMining","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luccifer%2FLogistics-DataMining","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luccifer%2FLogistics-DataMining/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luccifer%2FLogistics-DataMining/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luccifer%2FLogistics-DataMining/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Luccifer","download_url":"https://codeload.github.com/Luccifer/Logistics-DataMining/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luccifer%2FLogistics-DataMining/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259509371,"owners_count":22868831,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bigdata","datamining","hse","logistics","machine-learning","ml","nru","nruhse","python"],"created_at":"2024-11-13T23:39:14.123Z","updated_at":"2025-06-12T17:06:06.336Z","avatar_url":"https://github.com/Luccifer.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Выполним импорт необходимых библиотек\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 188,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from sklearn import cross_validation, grid_search, linear_model, metrics, pipeline, preprocessing\\n\",\n    \"\\n\",\n    \"import numpy as np\\n\",\n    \"import pandas as pd\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 189,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Populating the interactive namespace from numpy and matplotlib\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"%pylab inline\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Загрузим данные в наш DataFrame\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 190,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"raw_data = pd.read_csv('train.csv', header=0, sep=',')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 191,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"\u003cdiv\u003e\\n\",\n       \"\u003ctable border=\\\"1\\\" class=\\\"dataframe\\\"\u003e\\n\",\n       \"  \u003cthead\u003e\\n\",\n       \"    \u003ctr style=\\\"text-align: right;\\\"\u003e\\n\",\n       \"      \u003cth\u003e\u003c/th\u003e\\n\",\n       \"      \u003cth\u003edatetime\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eseason\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eholiday\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eworkingday\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eweather\u003c/th\u003e\\n\",\n       \"      \u003cth\u003etemp\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eatemp\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ehumidity\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ewindspeed\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ecasual\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eregistered\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ecount\u003c/th\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"  \u003c/thead\u003e\\n\",\n       \"  \u003ctbody\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e0\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e2011-01-01 00:00:00\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e9.84\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e14.395\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e81\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e3\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e13\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e16\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e1\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e2011-01-01 01:00:00\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e9.02\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e13.635\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e80\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e8\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e32\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e40\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e2\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e2011-01-01 02:00:00\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e9.02\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e13.635\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e80\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e5\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e27\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e32\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e3\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e2011-01-01 03:00:00\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e9.84\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e14.395\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e75\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e3\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e10\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e13\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e4\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e2011-01-01 04:00:00\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e9.84\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e14.395\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e75\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"  \u003c/tbody\u003e\\n\",\n       \"\u003c/table\u003e\\n\",\n       \"\u003c/div\u003e\"\n      ],\n      \"text/plain\": [\n       \"              datetime  season  holiday  workingday  weather  temp   atemp  \\\\\\n\",\n       \"0  2011-01-01 00:00:00       1        0           0        1  9.84  14.395   \\n\",\n       \"1  2011-01-01 01:00:00       1        0           0        1  9.02  13.635   \\n\",\n       \"2  2011-01-01 02:00:00       1        0           0        1  9.02  13.635   \\n\",\n       \"3  2011-01-01 03:00:00       1        0           0        1  9.84  14.395   \\n\",\n       \"4  2011-01-01 04:00:00       1        0           0        1  9.84  14.395   \\n\",\n       \"\\n\",\n       \"   humidity  windspeed  casual  registered  count  \\n\",\n       \"0        81          0       3          13     16  \\n\",\n       \"1        80          0       8          32     40  \\n\",\n       \"2        80          0       5          27     32  \\n\",\n       \"3        75          0       3          10     13  \\n\",\n       \"4        75          0       0           1      1  \"\n      ]\n     },\n     \"execution_count\": 191,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"raw_data.head()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Data Fields\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"* datetime - hourly date + timestamp  \\n\",\n    \"* season -  1 = spring, 2 = summer, 3 = fall, 4 = winter \\n\",\n    \"* holiday - whether the day is considered a holiday\\n\",\n    \"* workingday - whether the day is neither a weekend nor holiday\\n\",\n    \"* weather \\n\",\n    \"    * 1: Clear, Few clouds, Partly cloudy, Partly cloudy \\n\",\n    \"    * 2: Mist + Cloudy, Mist + Broken clouds, Mist + Few clouds, Mist \\n\",\n    \"    * 3: Light Snow, Light Rain + Thunderstorm + Scattered clouds, Light Rain + Scattered clouds \\n\",\n    \"    * 4: Heavy Rain + Ice Pallets + Thunderstorm + Mist, Snow + Fog \\n\",\n    \"    \\n\",\n    \"* temp - temperature in Celsius\\n\",\n    \"* atemp - \\\"feels like\\\" temperature in Celsius\\n\",\n    \"* humidity - relative humidity\\n\",\n    \"* windspeed - wind speed\\n\",\n    \"* casual - number of non-registered user rentals initiated\\n\",\n    \"* registered - number of registered user rentals initiated\\n\",\n    \"* count - number of total rentals\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Посмотрим на размерность данных\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 192,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"(10886, 12)\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print raw_data.shape\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Посмотрим на пропущенные значения\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 193,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"False\"\n      ]\n     },\n     \"execution_count\": 193,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"raw_data.isnull().values.any()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Предобработка данных\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 194,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"\u003cclass 'pandas.core.frame.DataFrame'\u003e\\n\",\n      \"Int64Index: 10886 entries, 0 to 10885\\n\",\n      \"Data columns (total 12 columns):\\n\",\n      \"datetime      10886 non-null object\\n\",\n      \"season        10886 non-null int64\\n\",\n      \"holiday       10886 non-null int64\\n\",\n      \"workingday    10886 non-null int64\\n\",\n      \"weather       10886 non-null int64\\n\",\n      \"temp          10886 non-null float64\\n\",\n      \"atemp         10886 non-null float64\\n\",\n      \"humidity      10886 non-null int64\\n\",\n      \"windspeed     10886 non-null float64\\n\",\n      \"casual        10886 non-null int64\\n\",\n      \"registered    10886 non-null int64\\n\",\n      \"count         10886 non-null int64\\n\",\n      \"dtypes: float64(3), int64(8), object(1)\\n\",\n      \"memory usage: 1.1+ MB\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"raw_data.info()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Почти все данные являются числовыми кроме поля datetime, но мы знаем, что это дата (необходимо преобразование)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 195,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"raw_data.datetime = raw_data.datetime.apply(pd.to_datetime)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Построим два новых признака month/hour\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 196,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"raw_data['month'] = raw_data.datetime.apply(lambda x: x.month)\\n\",\n    \"raw_data['hour'] = raw_data.datetime.apply(lambda x: x.hour)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 197,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"\u003cdiv\u003e\\n\",\n       \"\u003ctable border=\\\"1\\\" class=\\\"dataframe\\\"\u003e\\n\",\n       \"  \u003cthead\u003e\\n\",\n       \"    \u003ctr style=\\\"text-align: right;\\\"\u003e\\n\",\n       \"      \u003cth\u003e\u003c/th\u003e\\n\",\n       \"      \u003cth\u003edatetime\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eseason\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eholiday\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eworkingday\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eweather\u003c/th\u003e\\n\",\n       \"      \u003cth\u003etemp\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eatemp\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ehumidity\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ewindspeed\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ecasual\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eregistered\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ecount\u003c/th\u003e\\n\",\n       \"      \u003cth\u003emonth\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ehour\u003c/th\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"  \u003c/thead\u003e\\n\",\n       \"  \u003ctbody\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e0\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e2011-01-01 00:00:00\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e9.84\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e14.395\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e81\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e3\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e13\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e16\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e1\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e2011-01-01 01:00:00\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e9.02\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e13.635\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e80\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e8\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e32\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e40\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e2\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e2011-01-01 02:00:00\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e9.02\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e13.635\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e80\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e5\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e27\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e32\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e2\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e3\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e2011-01-01 03:00:00\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e9.84\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e14.395\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e75\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e3\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e10\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e13\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e3\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e4\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e2011-01-01 04:00:00\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e9.84\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e14.395\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e75\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e4\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"  \u003c/tbody\u003e\\n\",\n       \"\u003c/table\u003e\\n\",\n       \"\u003c/div\u003e\"\n      ],\n      \"text/plain\": [\n       \"             datetime  season  holiday  workingday  weather  temp   atemp  \\\\\\n\",\n       \"0 2011-01-01 00:00:00       1        0           0        1  9.84  14.395   \\n\",\n       \"1 2011-01-01 01:00:00       1        0           0        1  9.02  13.635   \\n\",\n       \"2 2011-01-01 02:00:00       1        0           0        1  9.02  13.635   \\n\",\n       \"3 2011-01-01 03:00:00       1        0           0        1  9.84  14.395   \\n\",\n       \"4 2011-01-01 04:00:00       1        0           0        1  9.84  14.395   \\n\",\n       \"\\n\",\n       \"   humidity  windspeed  casual  registered  count  month  hour  \\n\",\n       \"0        81          0       3          13     16      1     0  \\n\",\n       \"1        80          0       8          32     40      1     1  \\n\",\n       \"2        80          0       5          27     32      1     2  \\n\",\n       \"3        75          0       3          10     13      1     3  \\n\",\n       \"4        75          0       0           1      1      1     4  \"\n      ]\n     },\n     \"execution_count\": 197,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"raw_data.head()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Обучение и отложенный тест \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Данные отсортированы по дате, обучимся на более поздних датах, и предскажем на более новых\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 198,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"train_data = raw_data.iloc[:-1000, :]\\n\",\n    \"hold_out_test_data = raw_data.iloc[-1000:, :]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Оценим размеры полученных наборов данных\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 199,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"(10886, 14) (9886, 14) (1000, 14)\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print raw_data.shape, train_data.shape, hold_out_test_data.shape\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Убедимся, что вся обучающая выборка в более раннем периоде времени\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 200,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"train period from 2011-01-01 00:00:00 to 2012-10-16 06:00:00\\n\",\n      \"test period from 2012-10-16 07:00:00 to 2012-12-19 23:00:00\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print 'train period from {} to {}'.format(train_data.datetime.min(),\\n\",\n    \"                                            train_data.datetime.max())\\n\",\n    \"print 'test period from {} to {}'.format(hold_out_test_data.datetime.min(),\\n\",\n    \"                                            hold_out_test_data.datetime.max())\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Данные и целевая функция\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Удалим дату и целевую переменную, чтобы было удобнее работать с признаками\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 201,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"#обучение\\n\",\n    \"train_labels = train_data['count'].values\\n\",\n    \"train_data = train_data.drop(['datetime','count'], axis=1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 202,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"#тест\\n\",\n    \"test_labels = hold_out_test_data['count'].values\\n\",\n    \"test_data = hold_out_test_data.drop(['datetime','count'], axis=1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Целевая функция на обучающей выборке и на отложенном тесте\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 203,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"\u003cmatplotlib.text.Text at 0x16293d30\u003e\"\n      ]\n     },\n     \"execution_count\": 203,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAA7UAAAF6CAYAAADGeH99AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X20XXd93/n3xyjYBMyNAvVVkIwUBmxkylR4JlJSt5NL\\nQvxAJ7ZX/vAQmBpi0kVjU5h4pUViVms77SzjrmIe1tReq0Cw7JgxCmlqu3Es2/WcTqBjrICfQKpR\\nmshICvcCsUcZD1keCX37x9nCx/K9vk/n3rP3ve/XWnuxz+/sfc73/LD9vZ+z99k7VYUkSZIkSV10\\nyqgLkCRJkiRpoQy1kiRJkqTOMtRKkiRJkjrLUCtJkiRJ6ixDrSRJkiSpswy1kiRJkqTOMtRKLZLk\\n5iT/65Be65oktw3jtSRJ0sLYj6WlZ6iVhiTJnyf5hcW8RlX9RlX9b8OqCZjTjaiTfD7Jbw/xfSVJ\\nao1h9Ojmdd6b5I8XsKv9WFpChlppmSR52ahrkCRJixLmGFAlLR9DrTQESW4FXg/cneSvkvxWko1J\\njie5IslTwH9ott2V5DtJnknSS3LOwOv86BvaJD+f5GCSq5NMJTmc5H0vUcOm5vWOJNkNvPak509+\\n383N+D8A3gP8k6b2O5vxjyT502bsG0kuHeqkSZK0DKbr0c34zyb5StMXH0ny8wP7vC/Jf2m2/y9J\\nfjXJm4GbgZ9L8v8meXqG97MfS8vMUCsNQVVdDnwb+B+r6tVV9a8Gnv4fgDcDFzSP7wH+G+AM4OvA\\n7S/x0uuA04HXAb8O/OskYzNs+wVgD/3m+S+A9570/Mnv+4Wm9s80NfzLpvZLmu3/FDivql4NXAf8\\nbpLxl6hVkqTWma5HJ3kd8O+B366qtcBvAb+f5DVJfhz4FHBB0wP/NvBoVf1n4B8C/3dVnV5VPznD\\nW9qPpWVmqJWGKyc9LuCaqvrrqnoOoKpuqaofVNVR4LeBv5Xk9Ble7/8H/nlV/bCq/gh4Fjj7RW+a\\nnAn898A/q6qjVfXHwN0vKGR+70tV/X5VTTXrvwfsB7bOOgOSJLXTYI/+n4E/rKrdAFX1H4A/Ad7Z\\nPP9D4K1JTquqqaraN6c3sB9LI2GolZbeoRMrSU5J8rHmNKL/B/hz+sH3tTPs+5dVdXzg8Q+AV02z\\n3euAZ6rqrwfGnlrE+5Lk8uZ0rGeSPAO85aW2lySpQzYClyV5ulmeAc4DfqqqfgD8T8BvAN9JcneS\\nF32hPAP7sTQChlppeGa6cMTg+LuBXwZ+oap+AthE/5vjk4/wztd3gLVJXjEw9vqB9ffM8r4vqD3J\\n64F/A1xZVWubU7O+OYQ6JUkahZN79EHg1qr6yWZZ25xS/C8Bqur+qjqf/s+AnqTfE6d7nZPZj6UR\\nMNRKwzMJvOGksZObzunAc8AzSV4JXM8QrqJYVd+mf9rUdUl+LMnfod80T3jVLO87dVLtrwSOA99v\\nvlX+NeBvLrZOSZJG5OQe/bvALyc5v+lzpzUXaHxdkjOSXNz8tvYo/Z/+nDhragrYkOTHpnsT+7E0\\nGoZaaXg+BvzT5jSmq5uxkwPrrfQvVnEY+Abwn+b5Hi8VgN8N/Czwl8A/BXbO430/B7ylqf3fNr8d\\nuhF4iP4fAm8BvjzPWiVJaosX9OiqOgRcAnwU+B79U4R/i/7fxqcAV9Pvmd+nf8HH32he50H6R0on\\nk3x3hveyH0vLLFVzO0iU5BT63zwdqqqLk6wFvkj/NwkHgMuq6kiz7Q7gCuAY8OGquq8ZPxe4BTgN\\nuKeq/pehfhpJklaxJKcC/xfwcmAN8KWqum4hPVuSpK6Yz5HaDwN7Bx5vBx6oqrPpf2u1AyD9e25e\\nBmwGLgJuSnLiFMybgfdX1VnAWUkuQJIkDUVzlfW3V9XbgC3ARUm2srCeLUlSJ8wp1CbZQP8S558d\\nGL6E50+n2AmcuBH0xcAdVXWsqg7QXHY8yTrg9Kra02x368A+kiRpCJortwKcSv9obTHPnr181UqS\\ntHhzPVL7CeAf88Lf840P3DNrkv4NpAHW07+i3AmHm7H1DNzapFlfv4CaJUnSDJqLyTxC//d39zdf\\nJs+3Z0uS1Bmzhtokfw+YqqpHeenLhy/6Cq6SJGlxqup4c/rxBvpnSr2FF/doe7YkacVYM4dtzgMu\\nTvJO4BXA6Uluo3/Vt/GqmmpOLT5xBbjDwJkD+29oxmYaf5EkNltJ0lBV1ar6rWhV/VWSHnAhMDXP\\nnv0i9mZJ0rANqzfPeqS2qj5aVa+vqjcA7wIerKq/D9wNvK/Z7L3Anc36XcC7krw8yU8DbwQebk53\\nOpJka3MRissH9pnG8VYuY2M/w0MPPURVtXq55pprRl5D1xfn0Dlsw+IcDmdZLZK8NslYs/4K4JeA\\nffR78/uazWbt2TO9/qj/f+z64r/PzmEbFufQOWzLMkxzOVI7k48Bu5JcQf/eXpcBVNXeJLvoXyn5\\nKHBlPV/1Vbzwlj73zvzybf1Cva11SZLETwE7m9vwnQJ8saruSfIQ8+/ZkiR1wrxCbVX9R+A/NutP\\nA++YYbvrgeunGf8a8Nb5lylJkmZTVU8A504zPu+eLUlSV8znPrXqkImJiVGX0HnO4eI5h4vnHEor\\nh/8+L55zuHjO4eI5h+2TNp5l1L8YRfvqAhgb28bu3Z9m27Ztoy5FkjRHSahVdqGoYUvimcmSpKEZ\\nZm/2SK0kSZIkqbMMtZIkSZKkzjLUSpIkSZI6y1ArSZIkSeosQ60kSZIkqbMMtZIkSZKkzjLUSpIk\\nSZI6y1ArSZIkSeosQ60kSZIkqbPWjLoASZLUDa997aZRl/AiF110EbfddvOoy5AkjZChVpIkzclf\\n/mVv1CWcZC9//Mc7Rl2EJGnEDLWSJGmONo26gJMcGXUBkqQW8De1kiRJkqTOMtRKkiRJkjrLUCtJ\\nkiRJ6ixDrSRJkiSpswy1kiRJkqTOMtRKkiRJkjrLUCtJkiRJ6ixDrSRJkiSpswy1kiRJkqTOMtRK\\nkiRJkjrLUCtJkiRJ6ixDrSRJkiSpswy1kiRJkqTOMtRKkiRJkjrLUCtJkiRJ6ixDrSRJkiSpswy1\\nkiRJkqTOMtRKkiRJkjrLUCtJkiRJ6qxZQ22SU5N8NckjSZ5Ick0zfk2SQ0m+3iwXDuyzI8n+JPuS\\nnD8wfm6Sx5N8K8knl+YjSZIkSZJWizWzbVBVzyV5e1X9IMnLgK8k+aPm6Rur6sbB7ZNsBi4DNgMb\\ngAeSvKmqCrgZeH9V7UlyT5ILqmr3cD+SJEmSJGm1mNPpx1X1g2b1VPpBuJrHmWbzS4A7qupYVR0A\\n9gNbk6wDTq+qPc12twKXLrRwSZIkSZLmFGqTnJLkEWASuH8gmH4wyaNJPptkrBlbDxwc2P1wM7Ye\\nODQwfqgZkyRJkiRpQeZ6pPZ4Vb2N/unEW5OcA9wEvKGqttAPux9fujIlSZIkSXqxWX9TO6iq/ipJ\\nD7jwpN/Sfga4u1k/DJw58NyGZmym8RlcO7A+0SySJM2u1+vR6/VGXYYkSVoGs4baJK8FjlbVkSSv\\nAH4J+FiSdVU12Wz2K8A3mvW7gNuTfIL+6cVvBB6uqkpyJMlWYA9wOfDpmd/52oV9IknSqjcxMcHE\\nxMSPHl933XWjK0aSJC2puRyp/SlgZ5JT6J+u/MWquifJrUm2AMeBA8AHAKpqb5JdwF7gKHBlc+Vj\\ngKuAW4DTgHuq6t5hfhhJkiRJ0uoyl1v6PAGcO8345S+xz/XA9dOMfw146zxrlCRJkiRpWnO6UJQk\\nSZIkSW1kqJUkSZIkdZahVpIkSZLUWYZaSZIkSVJnGWolSZIkSZ1lqJUkaYVIsiHJg0m+meSJJP+o\\nGb8myaEkX2+WCwf22ZFkf5J9Sc4fXfWSJC3MXO5TK0mSuuEYcHVVPZrkVcDXktzfPHdjVd04uHGS\\nzcBlwGZgA/BAkjcN3F9ekqTW80itJEkrRFVNVtWjzfqzwD5gffN0ptnlEuCOqjpWVQeA/cDW5ahV\\nkqRhMdRKkrQCJdkEbAG+2gx9MMmjST6bZKwZWw8cHNjtMM+HYEmSOsFQK0nSCtOcevwl4MPNEdub\\ngDdU1RZgEvj4KOuTJGmY/E2tJEkrSJI19APtbVV1J0BVfW9gk88Adzfrh4EzB57b0IzN4NqB9Ylm\\nkSRpdr1ej16vtySvnTZeCyJJQfvqAhgb28bu3Z9m27Ztoy5FkjRHSaiq6X5TuuIkuRX4flVdPTC2\\nrqomm/XfBH6mqt6d5BzgdmAb/dOO7wemvVBUO3vzY2zceDkHDjw26kIkSfM0zN7skVpJklaIJOcB\\n7wGeSPII/RT6UeDdSbYAx4EDwAcAqmpvkl3AXuAocKVXPpYkdY2hVpKkFaKqvgK8bJqn7n2Jfa4H\\nrl+yoiRJWmJeKEqSJEmS1FmGWkmSJElSZxlqJUmSJEmdZaiVJEmSJHWWoVaSJEmS1FmGWkmSJElS\\nZxlqJUmSJEmdZaiVJEmSJHWWoVaSJEmS1FmGWkmSJElSZxlqJUmSJEmdZaiVJEmSJHWWoVaSJEmS\\n1FmGWkmSJElSZxlqJUmSJEmdZaiVJEmSJHWWoVaSJEmS1FmGWkmSJElSZxlqJUmSJEmdNWuoTXJq\\nkq8meSTJE0muacbXJrkvyZNJdicZG9hnR5L9SfYlOX9g/Nwkjyf5VpJPLs1HkiRJkiStFrOG2qp6\\nDnh7Vb0N2AJclGQrsB14oKrOBh4EdgAkOQe4DNgMXATclCTNy90MvL+qzgLOSnLBsD+QJEmSJGn1\\nmNPpx1X1g2b1VGANUMAlwM5mfCdwabN+MXBHVR2rqgPAfmBrknXA6VW1p9nu1oF9JEmSJEmatzmF\\n2iSnJHkEmATub4LpeFVNAVTVJHBGs/l64ODA7oebsfXAoYHxQ82YJEmSJEkLMtcjtceb04830D/q\\n+hb6R2tfsNmwi5MkSZIk6aWsmc/GVfVXSXrAhcBUkvGqmmpOLf5us9lh4MyB3TY0YzONz+DagfWJ\\nZpEkaXa9Xo9erzfqMiRJ0jKYNdQmeS1wtKqOJHkF8EvAx4C7gPcBNwDvBe5sdrkLuD3JJ+ifXvxG\\n4OGqqiRHmotM7QEuBz498ztfu7BPJEla9SYmJpiYmPjR4+uuu250xUiSpCU1lyO1PwXsTHIK/dOV\\nv1hV9yR5CNiV5ArgKfpXPKaq9ibZBewFjgJXVtWJU5OvAm4BTgPuqap7h/ppJEmSJEmryqyhtqqe\\nAM6dZvxp4B0z7HM9cP00418D3jr/MiVJkiRJerE5XShKkiRJkqQ2MtRKkiRJkjrLUCtJkiRJ6ixD\\nrSRJkiSpswy1kiRJkqTOMtRKkiRJkjrLUCtJkiRJ6ixDrSRJkiSpswy1kiRJkqTOMtRKkiRJkjrL\\nUCtJkiRJ6ixDrSRJkiSpswy1kiRJkqTOMtRKkiRJkjrLUCtJkiRJ6ixDrSRJkiSpswy1kiRJkqTO\\nMtRKkiRJkjrLUCtJkiRJ6ixDrSRJK0SSDUkeTPLNJE8k+VAzvjbJfUmeTLI7ydjAPjuS7E+yL8n5\\no6tekqSFMdRKkrRyHAOurqq3AD8HXJXkzcB24IGqOht4ENgBkOQc4DJgM3ARcFOSjKRySZIWyFAr\\nSdIKUVWTVfVos/4ssA/YAFwC7Gw22wlc2qxfDNxRVceq6gCwH9i6rEVLkrRIhlpJklagJJuALcBD\\nwHhVTUE/+AJnNJutBw4O7Ha4GZMkqTMMtZIkrTBJXgV8Cfhwc8S2Ttrk5MeSJHXWmlEXIEmShifJ\\nGvqB9raqurMZnkoyXlVTSdYB323GDwNnDuy+oRmbwbUD6xPNIknS7Hq9Hr1eb0leO1Xt+7I2SbX1\\nS+SxsW3s3v1ptm3bNupSJElzlISqWhUXQEpyK/D9qrp6YOwG4OmquiHJR4C1VbW9uVDU7cA2+qcd\\n3w+8qab546CdvfkxNm68nAMHHht1IdNat24TU1NPjbqMFxkf38jk5IFRlyFplRtmb/ZIrSRJK0SS\\n84D3AE8keYR+Cv0ocAOwK8kVwFP0r3hMVe1NsgvYCxwFrpwu0Gph+oG2fdM5NbUqvt+RtIoYaiVJ\\nWiGq6ivAy2Z4+h0z7HM9cP2SFSVJ0hLzQlGSJEmSpM4y1EqSJEmSOstQK0mSJEnqLEOtJEmSJKmz\\nDLWSJEmSpM6aNdQm2ZDkwSTfTPJEkn/UjF+T5FCSrzfLhQP77EiyP8m+JOcPjJ+b5PEk30ryyaX5\\nSJIkSZKk1WIut/Q5BlxdVY8meRXwtST3N8/dWFU3Dm6cZDP9+99tBjYADyQ5cSP3m4H3V9WeJPck\\nuaCqdg/v40iSJEmSVpNZj9RW1WRVPdqsPwvsA9Y3T0939+5LgDuq6lhVHQD2A1uTrANOr6o9zXa3\\nApcusn5JkiRJ0io2r9/UJtkEbAG+2gx9MMmjST6bZKwZWw8cHNjtcDO2Hjg0MH6I58OxJEmSJEnz\\nNudQ25x6/CXgw80R25uAN1TVFmAS+PjSlChJkiRJ0vTm8ptakqyhH2hvq6o7AarqewObfAa4u1k/\\nDJw58NyGZmym8RlcO7A+0SySJM2u1+vR6/VGXYYkSVoGcwq1wO8Ae6vqUycGkqyrqsnm4a8A32jW\\n7wJuT/IJ+qcXvxF4uKoqyZEkW4E9wOXAp2d+y2vn8TEkSXrexMQEExMTP3p83XXXja4YSZK0pGYN\\ntUnOA94DPJHkEaCAjwLvTrIFOA4cAD4AUFV7k+wC9gJHgSubKx8DXAXcApwG3FNV9w7100iSJEmS\\nVpVZQ21VfQV42TRPzRhIq+p64Pppxr8GvHU+BUqSJEmSNJN5Xf1YkiRJkqQ2MdRKkiRJkjprrheK\\nkiRJap2DB/+MJKMuQ5I0QoZaSZLUWcePP0v/GpZtZNiWpOXg6ceSJEmSpM4y1EqSJEmSOstQK0mS\\nJEnqLEOtJEmSJKmzDLWSJEmSpM4y1EqSJEmSOstQK0mSJEnqLEOtJEmSJKmzDLWSJEmSpM4y1EqS\\nJEmSOstQK0mSJEnqLEOtJEmSJKmzDLWSJEmSpM4y1EqSJEmSOstQK0mSJEnqLEOtJEmSJKmzDLWS\\nJEmSpM4y1EqSJEmSOstQK0mSJEnqLEOtJEmSJKmzDLWSJEmSpM4y1C7AO9/5KyRp5bJu3aZRT48k\\nSZIkLZs1oy6gi55++i+AGnUZ05qayqhLkCRJkqRl45FaSZIkSVJnGWolSZIkSZ1lqJUkSZIkdZah\\nVpIkSZLUWYZaSZIkSVJnGWolSZIkSZ01a6hNsiHJg0m+meSJJB9qxtcmuS/Jk0l2Jxkb2GdHkv1J\\n9iU5f2D83CSPJ/lWkk8uzUeSJGn1SvK5JFNJHh8YuybJoSRfb5YLB56btmdLktQVczlSewy4uqre\\nAvwccFWSNwPbgQeq6mzgQWAHQJJzgMuAzcBFwE1JTtw89Wbg/VV1FnBWkguG+mkkSdLngen6641V\\ndW6z3AuQZDMz92xJkjph1lBbVZNV9Wiz/iywD9gAXALsbDbbCVzarF8M3FFVx6rqALAf2JpkHXB6\\nVe1ptrt1YB9JkjQEVfVl4JlpnpourF7CND17CcuTJGno5vWb2iSbgC3AQ8B4VU1BP/gCZzSbrQcO\\nDux2uBlbDxwaGD/UjEmSpKX3wSSPJvnswE+GZurZkiR1xpq5bpjkVcCXgA9X1bNJ6qRNTn68SNcO\\nrE80iyRJs+v1evR6vVGX0SY3Ab9dVZXkXwAfB359/i9z7cD6BPZmSdJcLWVvTtXsWTTJGuDfA39U\\nVZ9qxvYBE1U11Zxa/H9W1eYk24Gqqhua7e4FrgGeOrFNM/4u4Oer6jemeb8aekYekrGxbRw58jBt\\nrQ/CXP4/laTVJAlVtWp+K5pkI3B3Vf23L/XcTD27qr46zX4t7M2P0T+BrG11nRDaWZt/K0gavWH2\\n5rmefvw7wN4TgbZxF/C+Zv29wJ0D4+9K8vIkPw28EXi4OUX5SJKtzUUoLh/YR5IkDU8Y+A1t8+Xz\\nCb8CfKNZn7ZnL1uVkiQNwaynHyc5D3gP8ESSR+h/5fhR4AZgV5Ir6B+FvQygqvYm2QXsBY4CV9bz\\nXwdeBdwCnAbcc+Lqi5IkaTiSfIH+ecGvSfJt+mdLvT3JFuA4cAD4AMzasyVJ6oQ5nX683Np5ilOf\\npx9LUvesttOPl0I7e7OnHy+MfytIGr1RnH4sSZIkSVLrGGolSZIkSZ1lqJUkSZIkdZahVpIkSZLU\\nWYZaSZIkSVJnGWolSZIkSZ1lqJUkSZIkdZahVpIkSZLUWYZaSZIkSVJnGWolSZIkSZ1lqJUkSZIk\\ndZahVpIkSZLUWYZaSZIkSVJnGWolSZIkSZ1lqJUkSZIkdZahVpIkSZLUWYZaSZIkSVJnGWolSZIk\\nSZ1lqJUkSZIkdZahVpIkSZLUWYZaSZIkSVJnGWolSZIkSZ1lqJUkSZIkdZahVpIkSZLUWWtGXYAk\\nSZKW06kkGXURLzI+vpHJyQOjLkNSBxlqJUmSVpXngBp1ES8yNdW+oC2pGzz9WJIkSZLUWYZaSZIk\\nSVJnGWolSZIkSZ1lqJUkSZIkdZahVpIkSZLUWYZaSZIkSVJnzRpqk3wuyVSSxwfGrklyKMnXm+XC\\nged2JNmfZF+S8wfGz03yeJJvJfnk8D+KJEmSJGm1mcuR2s8DF0wzfmNVndss9wIk2QxcBmwGLgJu\\nyvN3974ZeH9VnQWclWS615QkSZIkac5mDbVV9WXgmWmemu4O2ZcAd1TVsao6AOwHtiZZB5xeVXua\\n7W4FLl1YyZIkSZIk9S3mN7UfTPJoks8mGWvG1gMHB7Y53IytBw4NjB9qxiRJkiRJWrCFhtqbgDdU\\n1RZgEvj48EqSJEmSJGlu1ixkp6r63sDDzwB3N+uHgTMHntvQjM00/hKuHVifaBZJkmbX6/Xo9Xqj\\nLkOSJC2DVNXsGyWbgLur6q3N43VVNdms/ybwM1X17iTnALcD2+ifXnw/8KaqqiQPAR8C9gB/CHz6\\nxAWmpnm/gtnrGoWxsW0cOfIwba0Pwlz+P5Wk1SQJVTXdtSA0R+3szY8BW2hfXSeEdtbW3rr8G0Za\\nPYbZm2c9UpvkC/QPk74mybeBa4C3J9kCHAcOAB8AqKq9SXYBe4GjwJX1/H+drgJuAU4D7pkp0Gqx\\nTuX5C063z/j4RiYnD4y6DEmSJEkrxJyO1C63dn4b3NeFI7XtrQ38FlbSKHikdvHa2Zs9Ursw7a3L\\nvxGk1WOYvXkxVz+WJEmSJGmkDLWSJEmSpM4y1EqSJEmSOstQK0mSJEnqLEOtJEmSJKmzDLWSJK0g\\nST6XZCrJ4wNja5Pcl+TJJLuTjA08tyPJ/iT7kpw/mqolSVo4Q60kSSvL54ELThrbDjxQVWcDDwI7\\nAJKcA1wGbAYuAm5Km292LknSNAy1kiStIFX1ZeCZk4YvAXY26zuBS5v1i4E7qupYVR0A9gNbl6NO\\nSZKGxVArSdLKd0ZVTQFU1SRwRjO+Hjg4sN3hZkySpM4w1EqStPrUqAuQJGlY1oy6AEmStOSmkoxX\\n1VSSdcB3m/HDwJkD221oxmZw7cD6RLNIkjS7Xq9Hr9dbktdOVfu+rE1Sbf0SeWxsG0eOPExb64PQ\\n3toAQhv/mZO0siWhqlbNBZCSbALurqq3No9vAJ6uqhuSfARYW1XbmwtF3Q5so3/a8f3Am2qa/1C3\\nszc/BmyhfXWd0Nae3N66/BtBWj2G2Zs9UitJ0gqS5Av0D6G+Jsm3gWuAjwG/l+QK4Cn6VzymqvYm\\n2QXsBY4CV04XaCVJajOP1M6TR2oXy29hJS2/1Xakdim0szd7pHZh2luXfyNIq8cwe7MXipIkSZIk\\ndZahVpIkSZLUWYZaSZIkSVJnGWolSZIkSZ1lqJUkSZIkdZahVpIkSZLUWYZaSZIkSVJnrRl1AZIk\\nSRKcStK+20mPj29kcvLAqMuQ9BIMtZIkSWqB54AadREvMjXVvqAt6YU8/ViSJEmS1FmGWkmSJElS\\nZxlqJUmSJEmdZaiVJEmSJHWWoVaSJEmS1FmGWkmSJElSZxlqJUmSJEmdZaiVJEmSJHWWoVaSJEmS\\n1FmGWkmSJElSZ80aapN8LslUkscHxtYmuS/Jk0l2JxkbeG5Hkv1J9iU5f2D83CSPJ/lWkk8O/6NI\\nkiRJklabuRyp/TxwwUlj24EHqups4EFgB0CSc4DLgM3ARcBNSdLsczPw/qo6CzgrycmvKUmSJEnS\\nvMwaaqvqy8AzJw1fAuxs1ncClzbrFwN3VNWxqjoA7Ae2JlkHnF5Ve5rtbh3YR5IkSZKkBVnob2rP\\nqKopgKqaBM5oxtcDBwe2O9yMrQcODYwfasYkSZIkSVqwYV0oqob0OpIkSZIkzdmaBe43lWS8qqaa\\nU4u/24wfBs4c2G5DMzbT+Eu4dmB9olkkSZpdr9ej1+uNugxJkrQMUjX7QdYkm4C7q+qtzeMbgKer\\n6oYkHwHWVtX25kJRtwPb6J9efD/wpqqqJA8BHwL2AH8IfLqq7p3h/aqtB3/HxrZx5MjDtLU+CO2t\\nDSDM5Z85SRqmJFRVZt9SM2lnb34M2EL76jqhrT3ZuubHv12kpTDM3jzrkdokX6B/mPQ1Sb4NXAN8\\nDPi9JFcAT9G/4jFVtTfJLmAvcBS4sp7/r8BVwC3AacA9MwVaSZIkSZLmak5HapdbO78N7vNI7WL5\\nbaek5eeR2sVrZ2/2SO3CWNf8+LeLtBSG2ZuHdaEoSZIkSZKW3UIvFCUt0Kkk7T1YMj6+kcnJA6Mu\\nQ5IkSdIcGWq1zJ6jnacW9U1NtTdwS5IkSXoxTz+WJEmSJHWWoVaSJEmS1FmGWkmSJElSZxlqJUmS\\nJEmdZaiVJEmSJHWWoVaSJEmS1FmGWkmSJElSZxlqJUmSJEmdZaiVJEmSJHWWoVaSJEmS1FmGWkmS\\nJElSZxlqJUmSJEmdZaiVJEmSJHWWoVaSJEmS1FmGWkmSJElSZxlqJUmSJEmdtWbUBUiSpOWR5ABw\\nBDgOHK2qrUnWAl8ENgIHgMuq6sjIipQkaZ48UitJ0upxHJioqrdV1dZmbDvwQFWdDTwI7BhZdZIk\\nLYChVpKk1SO8uPdfAuxs1ncCly5rRZIkLZKhVpKk1aOA+5PsSfLrzdh4VU0BVNUkcMbIqpMkaQH8\\nTa0kSauKZXxmAAAKYUlEQVTHeVX1nSR/A7gvyZP0g+6gkx9LktRqhlpJklaJqvpO87/fS/LvgK3A\\nVJLxqppKsg747syvcO3A+kSzSJI0u16vR6/XW5LXTlX7vpBNUm39onhsbBtHjjxMW+vr/1yqrbVB\\nF+pr478TkhYnCVWVUdcxSkl+HDilqp5N8krgPuA64BeBp6vqhiQfAdZW1fZp9m9hb34M2EL76jqh\\nrT3PuubnNOC5URfxIuPjG5mcPDDqMqQFG2Zv9kitJEmrwzjwB/1wyhrg9qq6L8mfALuSXAE8BVw2\\nyiKl9nmONobtqalV/T2d9AKGWkmSVoGq+nP6hzVPHn8aeMfyVyRJ0nB49WNJkiRJUmcZaiVJkiRJ\\nnWWolSRJkiR1lqFWkiRJktRZhlpJkiRJUmctKtQmOZDksSSPJHm4GVub5L4kTybZnWRsYPsdSfYn\\n2Zfk/MUWL0mSJEla3RZ7pPY4MFFVb6uqrc3YduCBqjobeBDYAZDkHPr3vtsMXATclMQbbKllTiVJ\\nK5d16zaNenIkSZKk1llsqM00r3EJsLNZ3wlc2qxfDNxRVceq6gCwH9iK1ConbrDevmVq6qml/OCS\\nJElSJy021BZwf5I9SX69GRuvqimAqpoEzmjG1wMHB/Y93IxJkiRJkrQgaxa5/3lV9Z0kfwO4L8mT\\n9IPuoJMfS5IkSVqU/k+m2mh8fCOTkwdGXYZWkUWF2qr6TvO/30vy7+ifTjyVZLyqppKsA77bbH4Y\\nOHNg9w3N2AyuHVifaBZJkmbX6/Xo9XqjLkOSltCJn0y1z9RUO8O2Vq5ULexfhiQ/DpxSVc8meSVw\\nH3Ad8IvA01V1Q5KPAGurantzoajbgW30Tzu+H3hTTVNAkmrrv6RjY9s4cuRh2lpf/2fOba0NrG8x\\nwkL/fZVWuyRUlX9lLUI7e/NjwBbaV9cJbe0p1jU/1jV//s2i2Q2zNy/mSO048Af9Jsca4Paqui/J\\nnwC7klwBPEX/isdU1d4ku4C9wFHgyukCrSRJkiRJc7XgI7VLqZ3fBvd5pHaxrG/h/NZTWiiP1C5e\\nO3uzR2oXxrrmx7rmz79ZNLth9ubFXv1YkiRJkqSRMdRKkiRJkjrLUCtJkiRJ6ixDrSRJkiSpswy1\\nkiRJkqTOMtRKkiRJkjrLUCtJkiRJ6qw1oy5A0lydStLe22yOj29kcvLAqMuQJEnSKmOolTrjOdp7\\nk3WYmmpv4JYkSdLK5enHkiRJkqTOMtRKkiRJkjrLUCtJkiRJ6ixDrSRJkiSps7xQlCRJkqQhaucd\\nG7xTw8plqJUkSZI0RO28Y4N3ali5PP1YkiRJktRZhlpJkiRJUmcZaiVJkiRJnWWolSRJkiR1lqFW\\nkiRJktRZhlpJkiRJUmd5Sx9JQ9LOe9KB96WTJElayQy1koaknfekA+9LJ0mStJJ5+rEkSZIkqbMM\\ntZIkSZKkzjLUSpIkSZI6y1ArSZIkSeosQ60kSZIkqbMMtZIkSZKkzvKWPpJWgfbeQxe8j64kSdJi\\nGGolrQLtvYcueB9dSZKkxTDUStLIeSRZkqSl185+a59dPEOtJI2cR5IlSVp67ey39tnFW/YLRSW5\\nMMl/TvKtJB9Z7veXJEkvZG+WpFHqH0Fu27Ju3aZRT8ycLWuoTXIK8L8DFwBvAX41yZuXs4bVozfq\\nAlaA3qgLWAF6oy5gBeiNugCtcPbm5dQbdQErQG/UBawAvVEXsAL0hvx6J44gt2uZmnpqyJ9z6Sz3\\nkdqtwP6qeqqqjgJ3AJcscw2rRG/UBawAvVEXsAL0Rl3ACtAbdQFa+ezNy6Y36gJWgN6oC1gBeqMu\\nYAXojboAnWS5Q+164ODA40PNmCRJGg17sySp01p7oahXv/qXR13CtP76r58cdQmStMzaebVI8IqR\\ny61tvfn48SM8++yoq5AkjVqqlu8KYEl+Fri2qi5sHm8HqqpuOGm79l2WTJLUaVXVzmQ+YvZmSdKo\\nDKs3L3eofRnwJPCLwHeAh4Ffrap9y1aEJEn6EXuzJKnrlvX046r6YZIPAvfR/z3v52yakiSNjr1Z\\nktR1y3qkVpIkSZKkYVruqx+/JG/+PjdJNiR5MMk3kzyR5EPN+Nok9yV5MsnuJGMD++xIsj/JviTn\\nj676dklySpKvJ7mreewczkOSsSS/18zJN5Nscw7nJ8lvJvlGkseT3J7k5c7h7JJ8LslUkscHxuY9\\nb0nObeb+W0k+udyfowvszXNjbx4ee/Pi2JsXz968MCPtzVXVioV+wP5TYCPwY8CjwJtHXVcbF2Ad\\nsKVZfxX930K9GbgB+CfN+EeAjzXr5wCP0D/dfFMzzxn152jDAvwm8LvAXc1j53B+83cL8GvN+hpg\\nzDmc1/y9Dvgz4OXN4y8C73UO5zR3fwfYAjw+MDbveQO+CvxMs34PcMGoP1ubFnvzvObK3jy8ubQ3\\nL27+7M2Lmz9788LnbmS9uU1Har35+xxV1WRVPdqsPwvsAzbQn6+dzWY7gUub9YuBO6rqWFUdAPbT\\nn+9VLckG4J3AZweGncM5SvJq4O9W1ecBmrk5gnM4Xy8DXplkDfAK4DDO4ayq6svAMycNz2vekqwD\\nTq+qPc12tw7soz578xzZm4fD3rw49uahsTcvwCh7c5tCrTd/X4Akm+h/I/IQMF5VU9BvrsAZzWYn\\nz+1hnFuATwD/GBj8YblzOHc/DXw/yeeb08T+TZIfxzmcs6r6C+DjwLfpz8eRqnoA53ChzpjnvK2n\\n32tOsO+8mL15AezNi2JvXhx78yLZm4duWXpzm0Kt5inJq4AvAR9uvhU++apfXgVsBkn+HjDVfKv+\\nUvfHcg5ntgY4F/jXVXUu8P8B2/GfwzlL8hP0v8HcSP90p1cmeQ/O4bA4b1p29uaFszcPhb15kezN\\nS25J5q1NofYw8PqBxxuaMU2jOR3iS8BtVXVnMzyVZLx5fh3w3Wb8MHDmwO7OLZwHXJzkz4D/A/iF\\nJLcBk87hnB0CDlbVnzSPf59+I/Wfw7l7B/BnVfV0Vf0Q+APgb+McLtR85835nJ29eR7szYtmb148\\ne/Pi2ZuHa1l6c5tC7R7gjUk2Jnk58C7grhHX1Ga/A+ytqk8NjN0FvK9Zfy9w58D4u5ort/008Ebg\\n4eUqtI2q6qNV9fqqegP9f9YerKq/D9yNczgnzakkB5Oc1Qz9IvBN/OdwPr4N/GyS05KE/hzuxTmc\\nq/DCoznzmrfmNKgjSbY283/5wD7qszfPj715EezNi2dvHgp78+KMpjcv1dWvFrIAF9K/WuB+YPuo\\n62nrQv+bzB/SvwrlI8DXm7n7SeCBZg7vA35iYJ8d9K8qtg84f9SfoU0L8PM8f4VF53B+c/e36P/R\\n+yjwb+lfYdE5nN8cXtPMx+P0L6DwY87hnObtC8BfAM/R/wPk14C185034L8Dnmj6zqdG/bnauNib\\n5zxP9ubhzqe9eeFzZ29e/Bzamxc2byPrzScumyxJkiRJUue06fRjSZIkSZLmxVArSZIkSeosQ60k\\nSZIkqbMMtZIkSZKkzjLUSpIkSZI6y1ArSZIkSeosQ60kSZIkqbMMtZIkSZKkzvqvhfGl5ksvuHwA\\nAAAASUVORK5CYII=\\n\",\n      \"text/plain\": [\n       \"\u003cmatplotlib.figure.Figure at 0x15a314a8\u003e\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"pylab.figure(figsize=(16, 6))\\n\",\n    \"\\n\",\n    \"pylab.subplot(1,2,1)\\n\",\n    \"pylab.hist(train_labels)\\n\",\n    \"pylab.title('train data')\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"pylab.subplot(1,2,2)\\n\",\n    \"pylab.hist(test_labels)\\n\",\n    \"pylab.title('test data')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Так как мы решаем задачу регрессии, то  возьмем пока только числовые признаки\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 204,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"numeric_columns = ['temp', 'atemp', 'humidity', 'windspeed', 'casual', 'registered', 'month', 'hour']\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 205,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"train_data = train_data[numeric_columns]\\n\",\n    \"test_data = test_data[numeric_columns]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 206,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"\u003cdiv\u003e\\n\",\n       \"\u003ctable border=\\\"1\\\" class=\\\"dataframe\\\"\u003e\\n\",\n       \"  \u003cthead\u003e\\n\",\n       \"    \u003ctr style=\\\"text-align: right;\\\"\u003e\\n\",\n       \"      \u003cth\u003e\u003c/th\u003e\\n\",\n       \"      \u003cth\u003etemp\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eatemp\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ehumidity\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ewindspeed\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ecasual\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eregistered\u003c/th\u003e\\n\",\n       \"      \u003cth\u003emonth\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ehour\u003c/th\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"  \u003c/thead\u003e\\n\",\n       \"  \u003ctbody\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e0\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e9.84\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e14.395\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e81\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e3\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e13\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e1\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e9.02\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e13.635\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e80\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e8\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e32\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e2\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e9.02\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e13.635\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e80\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e5\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e27\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e2\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e3\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e9.84\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e14.395\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e75\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e3\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e10\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e3\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e4\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e9.84\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e14.395\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e75\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e4\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"  \u003c/tbody\u003e\\n\",\n       \"\u003c/table\u003e\\n\",\n       \"\u003c/div\u003e\"\n      ],\n      \"text/plain\": [\n       \"   temp   atemp  humidity  windspeed  casual  registered  month  hour\\n\",\n       \"0  9.84  14.395        81          0       3          13      1     0\\n\",\n       \"1  9.02  13.635        80          0       8          32      1     1\\n\",\n       \"2  9.02  13.635        80          0       5          27      1     2\\n\",\n       \"3  9.84  14.395        75          0       3          10      1     3\\n\",\n       \"4  9.84  14.395        75          0       0           1      1     4\"\n      ]\n     },\n     \"execution_count\": 206,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"train_data.head()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 207,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"\u003cdiv\u003e\\n\",\n       \"\u003ctable border=\\\"1\\\" class=\\\"dataframe\\\"\u003e\\n\",\n       \"  \u003cthead\u003e\\n\",\n       \"    \u003ctr style=\\\"text-align: right;\\\"\u003e\\n\",\n       \"      \u003cth\u003e\u003c/th\u003e\\n\",\n       \"      \u003cth\u003etemp\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eatemp\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ehumidity\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ewindspeed\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ecasual\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eregistered\u003c/th\u003e\\n\",\n       \"      \u003cth\u003emonth\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ehour\u003c/th\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"  \u003c/thead\u003e\\n\",\n       \"  \u003ctbody\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e9886\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e17.22\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e21.210\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e67\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e6.0032\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e20\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e505\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e10\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e7\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e9887\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e18.04\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e21.970\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e62\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0.0000\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e35\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e800\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e10\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e8\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e9888\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e19.68\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e23.485\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e55\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e16.9979\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e32\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e323\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e10\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e9\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e9889\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e20.50\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e24.240\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e48\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e19.0012\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e65\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e157\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e10\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e10\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e9890\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e20.50\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e24.240\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e45\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e27.9993\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e56\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e172\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e10\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e11\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"  \u003c/tbody\u003e\\n\",\n       \"\u003c/table\u003e\\n\",\n       \"\u003c/div\u003e\"\n      ],\n      \"text/plain\": [\n       \"       temp   atemp  humidity  windspeed  casual  registered  month  hour\\n\",\n       \"9886  17.22  21.210        67     6.0032      20         505     10     7\\n\",\n       \"9887  18.04  21.970        62     0.0000      35         800     10     8\\n\",\n       \"9888  19.68  23.485        55    16.9979      32         323     10     9\\n\",\n       \"9889  20.50  24.240        48    19.0012      65         157     10    10\\n\",\n       \"9890  20.50  24.240        45    27.9993      56         172     10    11\"\n      ]\n     },\n     \"execution_count\": 207,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"test_data.head()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Модель\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Обучим SGDRegressor - регрессия на основе стохастического градиентного спуска\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 208,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"regressor = linear_model.SGDRegressor(random_state=0)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Используем параметры по умолчанию\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 209,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"23756929732818.266\"\n      ]\n     },\n     \"execution_count\": 209,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"regressor.fit(train_data, train_labels)\\n\",\n    \"metrics.mean_absolute_error(test_labels, regressor.predict(test_data))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Выведим тестовые метки и те что предсказали, чтобы увидеть разницу\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 210,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[525 835 355 222 228 325 328 308 346 446]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print test_labels[:10]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 211,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[ -5.49937759e+13  -8.85325874e+13  -3.70533023e+13  -2.25065153e+13\\n\",\n      \"  -2.37308393e+13  -3.38802477e+13  -3.40698991e+13  -3.17048874e+13\\n\",\n      \"  -3.61620909e+13  -4.69681797e+13]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print regressor.predict(test_data)[:10]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Мы выводим слишком большие значения\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 212,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"array([  3.32334025e+10,   2.30830830e+10,   3.12573533e+10,\\n\",\n       \"        -4.53893233e+10,  -1.00561685e+11,  -1.09157806e+11,\\n\",\n       \"        -7.94127090e+10,   1.01775965e+10])\"\n      ]\n     },\n     \"execution_count\": 212,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"regressor.coef_\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Линейные модели сильно зависят от масштаба признаков\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Scaling\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 213,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from sklearn.preprocessing import StandardScaler\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 214,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"## создаем стандартный scaler\\n\",\n    \"scaler = StandardScaler()\\n\",\n    \"scaler.fit(train_data, train_labels)\\n\",\n    \"scaled_train_data = scaler.transform(train_data)\\n\",\n    \"scaled_test_data = scaler.transform(test_data)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 215,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"0.1179376296343153\"\n      ]\n     },\n     \"execution_count\": 215,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"regressor.fit(scaled_train_data, train_labels)\\n\",\n    \"metrics.mean_absolute_error(test_labels, regressor.predict(scaled_test_data))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 216,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[525 835 355 222 228 325 328 308 346 446]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print test_labels[:10]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 217,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[ 524.82767322  834.83176277  354.85768824  221.89221002  227.84049612\\n\",\n      \"  324.88196372  327.8982227   307.9347954   345.90146969  445.90141764]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print regressor.predict(scaled_test_data)[:10]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Отличаются примерно на 1. Скорее всего присутствует переобучение\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 218,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[  1.41019246e+00  -1.40725539e+00   1.45346928e-02  -4.38984175e-02\\n\",\n      \"   5.08589954e+01   1.48004811e+02  -8.23376876e-03   6.37720415e-03]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print regressor.coef_\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Выведим коэффициенты с округлением\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 219,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[1.41, -1.41, 0.01, -0.04, 50.86, 148.0, -0.01, 0.01]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print map(lambda x : round(x, 2), regressor.coef_)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 220,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"\u003cdiv\u003e\\n\",\n       \"\u003ctable border=\\\"1\\\" class=\\\"dataframe\\\"\u003e\\n\",\n       \"  \u003cthead\u003e\\n\",\n       \"    \u003ctr style=\\\"text-align: right;\\\"\u003e\\n\",\n       \"      \u003cth\u003e\u003c/th\u003e\\n\",\n       \"      \u003cth\u003etemp\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eatemp\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ehumidity\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ewindspeed\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ecasual\u003c/th\u003e\\n\",\n       \"      \u003cth\u003eregistered\u003c/th\u003e\\n\",\n       \"      \u003cth\u003emonth\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ehour\u003c/th\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"  \u003c/thead\u003e\\n\",\n       \"  \u003ctbody\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e0\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e9.84\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e14.395\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e81\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e3\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e13\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e1\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e9.02\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e13.635\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e80\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e8\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e32\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e2\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e9.02\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e13.635\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e80\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e5\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e27\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e2\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e3\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e9.84\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e14.395\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e75\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e3\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e10\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e3\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e4\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e9.84\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e14.395\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e75\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e4\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"  \u003c/tbody\u003e\\n\",\n       \"\u003c/table\u003e\\n\",\n       \"\u003c/div\u003e\"\n      ],\n      \"text/plain\": [\n       \"   temp   atemp  humidity  windspeed  casual  registered  month  hour\\n\",\n       \"0  9.84  14.395        81          0       3          13      1     0\\n\",\n       \"1  9.02  13.635        80          0       8          32      1     1\\n\",\n       \"2  9.02  13.635        80          0       5          27      1     2\\n\",\n       \"3  9.84  14.395        75          0       3          10      1     3\\n\",\n       \"4  9.84  14.395        75          0       0           1      1     4\"\n      ]\n     },\n     \"execution_count\": 220,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"train_data.head()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Похоже casual + registered = count\\n\",\n    \"#### Необходимо проверить гипотезу\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 221,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"array([16, 40, 32, 13,  1,  1,  2,  3,  8, 14], dtype=int64)\"\n      ]\n     },\n     \"execution_count\": 221,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"train_labels[:10]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 222,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"True\"\n      ]\n     },\n     \"execution_count\": 222,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"np.all(train_data.registered + train_data.casual == train_labels)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"###  У нас линейная зависимость, которая полностью восстанавливает закономерность, значит, необходимо удалить эти признаки из выборки\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 223,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"train_data.drop(['registered', 'casual'], axis=1, inplace=True)\\n\",\n    \"test_data.drop(['registered', 'casual'], axis=1, inplace=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Масштабируем признаки\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 224,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"scaler.fit(train_data, train_labels)\\n\",\n    \"scaled_train_data = scaler.transform(train_data)\\n\",\n    \"scaled_test_data = scaler.transform(test_data)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 225,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"121.81123864993025\"\n      ]\n     },\n     \"execution_count\": 225,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"regressor.fit(scaled_train_data, train_labels)\\n\",\n    \"metrics.mean_absolute_error(test_labels, regressor.predict(scaled_test_data))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Мы ошибаемся примерно на 122 велосипеда  - реалистичная оценка\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 226,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[31.03, 29.96, -41.93, 6.17, 14.08, 49.6]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print map(lambda x : round(x, 2), regressor.coef_)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Теперь все признаки имеют хорошие коэффициенты\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Мы уже имеем некоторую базовую модель, которую считаем правильной. Проведем ее улучшения\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Подберем оптимальные параметры для нашей модели\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Pipeline\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 227,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# создаем pipeline из 2х шагов: scaling и классификация\\n\",\n    \"pipe_line = pipeline.Pipeline(steps = [('scaling', scaler), ('regression', regressor)])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 228,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"C:\\\\Users\\\\got\\\\Anaconda2\\\\lib\\\\site-packages\\\\sklearn\\\\utils\\\\__init__.py:93: DeprecationWarning: Function transform is deprecated; Support to use estimators as feature selectors will be removed in version 0.19. Use SelectFromModel instead.\\n\",\n      \"  warnings.warn(msg, category=DeprecationWarning)\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"121.81123864993025\"\n      ]\n     },\n     \"execution_count\": 228,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"pipe_line.fit_transform(train_data, train_labels)\\n\",\n    \"metrics.mean_absolute_error(test_labels, pipe_line.predict(test_data))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Перебор параметров\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 229,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"['regression__random_state',\\n\",\n       \" 'regression__n_iter',\\n\",\n       \" 'regression__epsilon',\\n\",\n       \" 'regression__power_t',\\n\",\n       \" 'regression__alpha',\\n\",\n       \" 'regression__eta0',\\n\",\n       \" 'regression__loss',\\n\",\n       \" 'scaling',\\n\",\n       \" 'steps',\\n\",\n       \" 'scaling__copy',\\n\",\n       \" 'regression__fit_intercept',\\n\",\n       \" 'regression__warm_start',\\n\",\n       \" 'regression__penalty',\\n\",\n       \" 'regression__learning_rate',\\n\",\n       \" 'regression__average',\\n\",\n       \" 'regression__verbose',\\n\",\n       \" 'regression__shuffle',\\n\",\n       \" 'regression__l1_ratio',\\n\",\n       \" 'regression',\\n\",\n       \" 'scaling__with_std',\\n\",\n       \" 'scaling__with_mean']\"\n      ]\n     },\n     \"execution_count\": 229,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"pipe_line.get_params().keys()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 230,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"parameters_grid = {\\n\",\n    \"    'regression__loss' : ['huber', 'epsilon_insensitive', 'squared_loss', ],\\n\",\n    \"    'regression__n_iter' : [3, 5, 10, 50], \\n\",\n    \"    'regression__penalty' : ['l1', 'l2', 'none'],\\n\",\n    \"    'regression__alpha' : [0.0001, 0.01],\\n\",\n    \"    'scaling__with_mean' : [0., 0.5],\\n\",\n    \"}\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 231,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"grid_cv = grid_search.GridSearchCV(pipe_line, parameters_grid, scoring='mean_absolute_error', cv=4)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 232,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Wall time: 27 s\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"GridSearchCV(cv=4, error_score='raise',\\n\",\n       \"       estimator=Pipeline(steps=[('scaling', StandardScaler(copy=True, with_mean=True, with_std=True)), ('regression', SGDRegressor(alpha=0.0001, average=False, epsilon=0.1, eta0=0.01,\\n\",\n       \"       fit_intercept=True, l1_ratio=0.15, learning_rate='invscaling',\\n\",\n       \"       loss='squared_loss', n_iter=5, penalty='l2', power_t=0.25,\\n\",\n       \"       random_state=0, shuffle=True, verbose=0, warm_start=False))]),\\n\",\n       \"       fit_params={}, iid=True, n_jobs=1,\\n\",\n       \"       param_grid={'regression__n_iter': [3, 5, 10, 50], 'regression__loss': ['huber', 'epsilon_insensitive', 'squared_loss'], 'scaling__with_mean': [0.0, 0.5], 'regression__alpha': [0.0001, 0.01], 'regression__penalty': ['l1', 'l2', 'none']},\\n\",\n       \"       pre_dispatch='2*n_jobs', refit=True, scoring='mean_absolute_error',\\n\",\n       \"       verbose=0)\"\n      ]\n     },\n     \"execution_count\": 232,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%time\\n\",\n    \"grid_cv.fit(train_data, train_labels)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Лучшая оценка и лучшие параметры равны\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 233,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"-108.614496603\\n\",\n      \"{'regression__n_iter': 3, 'regression__loss': 'squared_loss', 'scaling__with_mean': 0.0, 'regression__alpha': 0.01, 'regression__penalty': 'l2'}\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print grid_cv.best_score_\\n\",\n    \"print grid_cv.best_params_\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Оценка лучшей модели на отложенном тесте\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 234,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"119.98978845935379\"\n      ]\n     },\n     \"execution_count\": 234,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"metrics.mean_absolute_error(test_labels, grid_cv.best_estimator_.predict(test_data))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 235,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"232.15899999999999\"\n      ]\n     },\n     \"execution_count\": 235,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"np.mean(test_labels)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 236,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"test_predictions = grid_cv.best_estimator_.predict(test_data)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 237,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[525 835 355 222 228 325 328 308 346 446]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print test_labels[:10]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 238,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[ 139.60470681  159.80765341  207.55935972  237.76288054  257.83836668\\n\",\n      \"  267.44558034  272.49537469  297.70688522  304.29818873  313.58821156]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print test_predictions[:10]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Предсказанные и реальные метки сильно отличаются\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Изобразим графически отображение в пространстве правильных целевых меток и наших предсказаний\\n\",\n    \"#### (ожидаем диагональ в облаке точек)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 239,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"\u003cmatplotlib.legend.Legend at 0xcfdfd68\u003e\"\n      ]\n     },\n     \"execution_count\": 239,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluccifer%2Flogistics-datamining","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluccifer%2Flogistics-datamining","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluccifer%2Flogistics-datamining/lists"}