Skip to content

Commit 17fbaa4

Browse files
committed
working poc implemented
1 parent 384ccc2 commit 17fbaa4

File tree

1 file changed

+45
-13
lines changed

1 file changed

+45
-13
lines changed

concept/proof_of_concept.ipynb

Lines changed: 45 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
},
1313
{
1414
"cell_type": "code",
15-
"execution_count": 57,
15+
"execution_count": 66,
1616
"outputs": [
1717
{
1818
"data": {
@@ -21,7 +21,7 @@
2121
},
2222
"metadata": {},
2323
"output_type": "execute_result",
24-
"execution_count": 57
24+
"execution_count": 66
2525
}
2626
],
2727
"source": "\nfrom datetime import time\nimport numpy as np\nimport pandas as pd\nfrom sklearn import linear_model\n\nHOME \u003d [48.871591, 2.310870]\nGYM \u003d [48.867474, 2.333320]\nWORK \u003d [48.869740, 2.309049]\nJOG \u003d [48.869266, 2.311993]\n\n# Simulates opening of app\nfeatures \u003d [\n #[open time, latitude, longitude, headset_on]\n [time(5,00), HOME[0], HOME[1], 0],\n [time(5,10), HOME[0], HOME[1], 0],\n [time(6,10), GYM[0], GYM[1], 1],\n [time(7,30), HOME[0], HOME[1], 1], \n [time(8,30), WORK[0], WORK[1], 0],\n [time(10,30), WORK[0], WORK[1], 1],\n [time(11,30), WORK[0], WORK[1], 1],\n [time(16,30), WORK[0], WORK[1], 0],\n [time(17,10), WORK[0], WORK[1], 0],\n [time(18,50), WORK[0], WORK[1], 0],\n [time(19,5), JOG[0], JOG[1], 1],\n [time(19,10), JOG[0],JOG[1], 1],\n [time(19,25), JOG[0],JOG[1], 1],\n [time(21,00), HOME[0],HOME[1], 0] \n]\n\nfeatures \u003d pd.DataFrame(features, columns\u003d[\"Open time\", \"latitude\", \"longitude\",\"headset is on\"])\nfeatures[\u0027Open time\u0027] \u003d features[\u0027Open time\u0027].apply(lambda t: (t.hour * 60) + t.minute)\n\nfeatures.head()",
@@ -35,7 +35,7 @@
3535
},
3636
{
3737
"cell_type": "code",
38-
"execution_count": 58,
38+
"execution_count": 67,
3939
"outputs": [
4040
{
4141
"data": {
@@ -44,7 +44,7 @@
4444
},
4545
"metadata": {},
4646
"output_type": "execute_result",
47-
"execution_count": 58
47+
"execution_count": 67
4848
}
4949
],
5050
"source": "SPORT_SCREEN \u003d \u0027Sport Screen\u0027\nWORK_SCREEN \u003d \u0027Work Screen\u0027\nFOOD_SCREEN \u003d \u0027Food Screen\u0027\nSELFIMPROVEMENT_SCREEN \u003d \u0027Self-improvement Screen\u0027\nADD_SCREEN \u003d \u0027Add new task Screen\u0027\n\nlabels \u003d [SELFIMPROVEMENT_SCREEN,\n SELFIMPROVEMENT_SCREEN,\n SPORT_SCREEN,\n SELFIMPROVEMENT_SCREEN,\n WORK_SCREEN,\n WORK_SCREEN,\n WORK_SCREEN,\n WORK_SCREEN,\n WORK_SCREEN,\n WORK_SCREEN,\n SPORT_SCREEN,\n SPORT_SCREEN,\n SPORT_SCREEN,\n ADD_SCREEN\n ]\n#one hot encoding\nlabels \u003d pd.get_dummies(labels)\n\nlabel_names \u003d labels.columns.values\nlabels.head()",
@@ -58,7 +58,7 @@
5858
},
5959
{
6060
"cell_type": "code",
61-
"execution_count": 60,
61+
"execution_count": 68,
6262
"outputs": [
6363
{
6464
"data": {
@@ -67,10 +67,10 @@
6767
},
6868
"metadata": {},
6969
"output_type": "execute_result",
70-
"execution_count": 60
70+
"execution_count": 68
7171
}
7272
],
73-
"source": "ols \u003d linear_model.LinearRegression()\nmodel \u003d ols.fit(features, labels)\n\ntest_feature \u003d [\n [time(15,00), WORK[0], WORK[1], 0]\n]\n\ntest_feature \u003d pd.DataFrame(test_feature, columns\u003d[\"Open time\", \"latitude\", \"longitude\",\"headset is on\"])\ntest_feature[\u0027Open time\u0027] \u003d test_feature[\u0027Open time\u0027].apply(lambda t: (t.hour * 60) + t.minute)\n\n\n# What will we open at 15:00 at work with headphones open?\nresult \u003d model.predict(test_feature)\npd.DataFrame(result, columns\u003dlabel_names)\n",
73+
"source": "ols \u003d linear_model.LinearRegression()\nmodel \u003d ols.fit(features, labels)\n\ntest_feature \u003d [\n [time(15,00), WORK[0], WORK[1], 0]\n]\n\ntest_feature \u003d pd.DataFrame(test_feature, columns\u003d[\"Open time\", \"latitude\", \"longitude\",\"headset is on\"])\ntest_feature[\u0027Open time\u0027] \u003d test_feature[\u0027Open time\u0027].apply(lambda t: (t.hour * 60) + t.minute)\n\n\n# What will we open at 15:00 at work without headphones?\nresult \u003d model.predict(test_feature)\npd.DataFrame(result, columns\u003dlabel_names)\n",
7474
"metadata": {
7575
"pycharm": {
7676
"metadata": false,
@@ -92,7 +92,7 @@
9292
},
9393
{
9494
"cell_type": "code",
95-
"execution_count": 59,
95+
"execution_count": 69,
9696
"outputs": [
9797
{
9898
"data": {
@@ -101,7 +101,7 @@
101101
},
102102
"metadata": {},
103103
"output_type": "execute_result",
104-
"execution_count": 59
104+
"execution_count": 69
105105
}
106106
],
107107
"source": "\n# we use different position(simulate running)\ntest_feature \u003d [\n [time(19,15), 48.867939, 2.316413, 1]\n]\n\ntest_feature \u003d pd.DataFrame(test_feature, columns\u003d[\"Open time\", \"latitude\", \"longitude\",\"headset is on\"])\ntest_feature[\u0027Open time\u0027] \u003d test_feature[\u0027Open time\u0027].apply(lambda t: (t.hour * 60) + t.minute)\n\n\n# What will we open at 19:15 at JOG place with headphones?\nresult \u003d model.predict(test_feature)\npd.DataFrame(result, columns\u003dlabel_names)\n",
@@ -113,15 +113,47 @@
113113
}
114114
}
115115
},
116+
{
117+
"cell_type": "markdown",
118+
"source": "Just as expected, even when we have different position we should open sport screen\nLet\u0027s try one more example ",
119+
"metadata": {
120+
"pycharm": {
121+
"metadata": false,
122+
"name": "#%% md\n",
123+
"is_executing": false
124+
}
125+
}
126+
},
116127
{
117128
"cell_type": "code",
118-
"execution_count": null,
119-
"outputs": [],
120-
"source": "\n",
129+
"execution_count": 71,
130+
"outputs": [
131+
{
132+
"data": {
133+
"text/plain": " Add new task Screen Self-improvement Screen Sport Screen Work Screen\n0 0.672095 0.356278 0.250886 -0.279259",
134+
"text/html": "\u003cdiv\u003e\n\u003cstyle scoped\u003e\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n\u003c/style\u003e\n\u003ctable border\u003d\"1\" class\u003d\"dataframe\"\u003e\n \u003cthead\u003e\n \u003ctr style\u003d\"text-align: right;\"\u003e\n \u003cth\u003e\u003c/th\u003e\n \u003cth\u003eAdd new task Screen\u003c/th\u003e\n \u003cth\u003eSelf-improvement Screen\u003c/th\u003e\n \u003cth\u003eSport Screen\u003c/th\u003e\n \u003cth\u003eWork Screen\u003c/th\u003e\n \u003c/tr\u003e\n \u003c/thead\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003cth\u003e0\u003c/th\u003e\n \u003ctd\u003e0.672095\u003c/td\u003e\n \u003ctd\u003e0.356278\u003c/td\u003e\n \u003ctd\u003e0.250886\u003c/td\u003e\n \u003ctd\u003e-0.279259\u003c/td\u003e\n \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e"
135+
},
136+
"metadata": {},
137+
"output_type": "execute_result",
138+
"execution_count": 71
139+
}
140+
],
141+
"source": "test_feature \u003d [\n [time(21,10), HOME[0], HOME[1], 0]\n]\n\ntest_feature \u003d pd.DataFrame(test_feature, columns\u003d[\"Open time\", \"latitude\", \"longitude\",\"headset is on\"])\ntest_feature[\u0027Open time\u0027] \u003d test_feature[\u0027Open time\u0027].apply(lambda t: (t.hour * 60) + t.minute)\n\n\n# What will we open at 21:10 at HOME place without headphones?\nresult \u003d model.predict(test_feature)\npd.DataFrame(result, columns\u003dlabel_names)",
142+
"metadata": {
143+
"pycharm": {
144+
"metadata": false,
145+
"name": "#%%\n",
146+
"is_executing": false
147+
}
148+
}
149+
},
150+
{
151+
"cell_type": "markdown",
152+
"source": "As expected, we should open add new task screen at the end of a day\n\n### Final notes\nThis model is just a proof of concept, optimisation and code quality is not as expected in final on-device model. \nExpected to have more features and more examples. But even with 14 examples we can build working \nmodel that can be used later on.\n\nSadly headphones param has large bias so if we put it to true it will increase Sport Screen size.\n",
121153
"metadata": {
122154
"pycharm": {
123155
"metadata": false,
124-
"name": "#%%\n"
156+
"name": "#%% md\n"
125157
}
126158
}
127159
}

0 commit comments

Comments
 (0)