Skip to content

Instantly share code, notes, and snippets.

@t00n
Created October 12, 2016 21:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save t00n/f7a0be2d6768bac4da6ba1114d5e37a4 to your computer and use it in GitHub Desktop.
Save t00n/f7a0be2d6768bac4da6ba1114d5e37a4 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import pandas as pd\n",
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.svm import SVC\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"from datetime import datetime\n",
"import numpy as np\n",
"from math import floor\n",
"import matplotlib.pyplot as plt\n",
"\n",
"%matplotlib inline\n",
"\n",
"STARTS = [\n",
" datetime.strptime(\"14/09/2009\", \"%d/%m/%Y\"),\n",
" datetime.strptime(\"20/09/2010\", \"%d/%m/%Y\"),\n",
" datetime.strptime(\"15/09/2011\", \"%d/%m/%Y\"),\n",
" datetime.strptime(\"17/09/2012\", \"%d/%m/%Y\"),\n",
" datetime.strptime(\"16/09/2013\", \"%d/%m/%Y\"),\n",
" datetime.strptime(\"15/09/2014\", \"%d/%m/%Y\"),\n",
" datetime.strptime(\"14/09/2015\", \"%d/%m/%Y\"),\n",
" datetime.strptime(\"19/09/2016\", \"%d/%m/%Y\"),\n",
"]\n",
"\n",
"def week_no(instant):\n",
" yearstart = max([start for start in STARTS if start < instant])\n",
" delta = instant - yearstart\n",
" return floor(delta.days / 7)\n",
"\n",
"def datetime_to_timestamp(x):\n",
" return datetime.strptime(x[:16], \"%Y-%m-%d %H:%M\").timestamp()\n",
"\n",
"def features(x):\n",
" x = datetime.strptime(x[:16], \"%Y-%m-%d %H:%M\")\n",
" return np.array([x.weekday(), week_no(x), x.time().hour])\n",
"\n",
"def score(predictor, X, y):\n",
" p = predictor.predict(X)\n",
" return (predictor.predict_proba(X).max(axis=1) - 0.5)[p != np.array(y)].sum()\n"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"df = pd.read_csv(\"openings.csv\")\n",
"\n",
"df['t'] = df['Unnamed: 0'].apply(pd.to_datetime)\n",
"df['weekday'] = df.t.dt.weekday\n",
"df['hour'] = df.t.dt.hour\n",
"df['month'] = df.t.dt.month\n",
"df['woy'] = df.t.dt.weekofyear\n",
"df['openlastweek'] = df.is_open.shift(24*7).fillna(False).astype(np.int32)\n",
"df['openlastday'] = df.is_open.shift(24).fillna(False).astype(np.int32)\n",
"df['openlasthour2'] = df.is_open.shift(2).fillna(False).astype(np.int32)\n",
"df['openlasthour'] = df.is_open.shift(1).fillna(False).astype(np.int32)\n",
"df['weekno'] = df.t.apply(week_no)\n",
"\n",
"X = df[['weekday', 'hour', 'openlastweek', 'openlastday', 'openlasthour2', 'openlasthour', 'weekno']]\n",
"y = df['is_open']\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=0)"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.95969353764157228"
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lr = SVC()\n",
"lr.fit(X_train, y_train)\n",
"lr.score(X_test, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"16\n"
]
}
],
"source": [
"best = 0\n",
"best_i = 0\n",
"for i in range(1, 100):\n",
" knn = KNeighborsClassifier(i, n_jobs=-1)\n",
" knn.fit(X_train, y_train)\n",
" score = knn.score(X_test, y_test)\n",
" if score > best:\n",
" best = score\n",
" best_i = i\n",
" \n",
"print(best_i)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"219.5625\n"
]
}
],
"source": [
"knn = KNeighborsClassifier(16, n_jobs=-1)\n",
"knn.fit(X_train, y_train)\n",
"print(score(knn, X_test, y_test))"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(array([ 286., 462., 398., 348., 0., 301., 264., 245., 138., 34.]),\n",
" array([ 0. , 0.05, 0.1 , 0.15, 0.2 , 0.25, 0.3 , 0.35, 0.4 ,\n",
" 0.45, 0.5 ]),\n",
" <a list of 10 Patch objects>)"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f2e45058908>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"p = knn.predict(X)\n",
"plt.hist((knn.predict_proba(X).max(axis=1) - 0.5)[p != np.array(y)])"
]
},
{
"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.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment