-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdbscan_test
440 lines (440 loc) · 76.6 KB
/
dbscan_test
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Fine-Scale Prediction of People's Home Location using Social Media Footprints\n",
"\n",
"_**Authors:** Hamdi Kavak, Daniele Vernon-Bido, and Jose Padilla_\n",
"\n",
"_**Submitted:** SBP-BRIMS 2018 on January 11, 2018._\n",
"\n",
"## DBSCAN Clustering Distance Resolution Test"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### - Imports"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"### Home Location Prediction Paper ###########\n",
"# Task: Home location DBSCAN resolution test\n",
"# Author: Hamdi Kavak\n",
"# Created: December 27, 2017\n",
"#########################################\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.cluster import DBSCAN\n",
"from geopy.distance import great_circle\n",
"from datetime import timedelta\n",
"from scipy import stats"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### - CONSTANTS"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"METER_PER_RADIAN = 6371000.0088\n",
"DISTANCE_RESOLUTION_IN_METER = 100\n",
"TIME_RESOLUTION_IN_MINUTES = 60"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### - Functions"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def clean_location_footprints(data):\n",
" # making sure there is enough data\n",
" if len(data) < 2:\n",
" return data\n",
"\n",
" # the remaining lines below looks consecutive tweets to make sure \n",
" # they are not sent from the same place within a short timeframe'\n",
" # because it will introduce biases in the machine learning model.\n",
" \n",
" user_index_values = data.index.values\n",
" indexes_to_drop = []\n",
" first_item = data.iloc[0,:]\n",
"\n",
" for i in range(1,len(data)-1):\n",
"\n",
" second_item = data.iloc[i,:]\n",
"\n",
" time_diff = second_item['local_datetime']-first_item['local_datetime']\n",
" time_diff_in_minutes = time_diff / np.timedelta64(1, 'm')\n",
"\n",
" first_point = (first_item['latitude'], first_item['longitude'])\n",
" second_point = (second_item['latitude'], second_item['longitude'])\n",
"\n",
" distance_in_meters = great_circle(first_point, second_point).meters\n",
"\n",
" if time_diff_in_minutes < TIME_RESOLUTION_IN_MINUTES and second_item['home_confirmed'] == 'f' and distance_in_meters < DISTANCE_RESOLUTION_IN_METER:\n",
" indexes_to_drop.append (i)\n",
" else:\n",
" first_item = second_item\n",
"\n",
" data = data.drop(data.index[indexes_to_drop])\n",
" \n",
" return data\n",
"\n",
"# original https://stackoverflow.com/a/1518632/80738\n",
"def get_most_common(lst):\n",
" return max(set(lst), key=lst.count)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### - Load data"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1222971 rows loaded.\n"
]
}
],
"source": [
"## all_data.csv contains anonymized ~1.2 million tweets from 1268 users\n",
"parse_dates = ['utc_datetime', 'local_datetime']\n",
"df = pd.read_csv('all_data.csv',low_memory=False, parse_dates=parse_dates)\n",
"\n",
"df.sort_values('id',inplace=True)\n",
"\n",
"## We use only one users' data to generate machine learning model attributes\n",
"## after getting this done, other users will be quite straigtforward.\n",
"\n",
"num_of_rows = len(df.index)\n",
"print num_of_rows, ' rows loaded.'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### - Iterate through users and record the distance among home-labeled clusters and to the centroid"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of among-cluster check-in distances: 1065523\n",
"Number of centroid-based check-in distances 238288\n"
]
}
],
"source": [
"# record all distances\n",
"distances_among_checkins = []\n",
"distances_to_centroid = []\n",
"distances_among_checkins_avg = []\n",
"distances_to_centroid_avg = []\n",
"\n",
"unique_user_ids = df.user_id.unique()\n",
"\n",
"for selected_user_id in unique_user_ids:\n",
" \n",
" # get only data from this user\n",
" df_user = df.loc[df['user_id'] == selected_user_id] \n",
" \n",
" # clean data for repeated entries\n",
" df_user = clean_location_footprints(df_user) \n",
" \n",
" # apply clustering algorithm to enhance data further\n",
" coords = df_user.as_matrix(columns=['latitude', 'longitude'])\n",
" epsilon = DISTANCE_RESOLUTION_IN_METER / METER_PER_RADIAN\n",
" db = DBSCAN(eps=epsilon, min_samples=1, algorithm='ball_tree', metric='haversine').fit(np.radians(coords))\n",
" cluster_labels = db.labels_\n",
" \n",
" # add cluster IDs as a property called 'label'\n",
" df_user = df_user.assign(label=pd.Series(cluster_labels).values)\n",
" \n",
" # mark check-ins that is confirmed as home\n",
" home_confirmed_checkins = df_user.loc[df_user['home_confirmed'] == 't']\n",
" \n",
" # there is a possibility that home checkins will be assigned to multiple clusters\n",
" # we chose the most commonly seen one\n",
" home_label = get_most_common(home_confirmed_checkins['label'].tolist())\n",
" \n",
" # find all home checkins\n",
" all_home_checkins = df_user.loc[df_user['label'] == home_label]\n",
" home_cluster_centroid = (all_home_checkins['latitude'].mean(), all_home_checkins['longitude'].mean())\n",
" \n",
" \n",
" # get a sample with up to 50 home location checkins\n",
" sample_size = 50\n",
" data_size = len(all_home_checkins.index)\n",
" \n",
" if data_size > 1:\n",
" \n",
" sample_home_checkins = all_home_checkins.sample(sample_size) if data_size > sample_size else all_home_checkins\n",
"\n",
" distances_among_checkins_temp = []\n",
" distances_to_centroid_temp = []\n",
" # calculate the distance among home checkins\n",
" # j and j index is used to eliminate unnecessary repetitions\n",
" i = 0\n",
" for ind1, row1 in sample_home_checkins.iterrows(): \n",
"\n",
" first_point = (row1['latitude'], row1['longitude'])\n",
" j = 0\n",
"\n",
" for ind2, row2 in sample_home_checkins.iterrows():\n",
" if j > i:\n",
"\n",
" second_point = (row2['latitude'], row2['longitude'])\n",
"\n",
" distance_in_meters = great_circle(first_point, second_point).meters\n",
" distances_among_checkins.append(distance_in_meters)\n",
" distances_among_checkins_temp.append(distance_in_meters)\n",
" j = j + 1\n",
"\n",
" i = i + 1\n",
"\n",
"\n",
" for ind, row in all_home_checkins.iterrows(): \n",
" # calculate the distance against the centroid\n",
" first_point = (row['latitude'], row['longitude'])\n",
" distance_in_meters = great_circle(first_point, home_cluster_centroid).meters\n",
" distances_to_centroid.append(distance_in_meters)\n",
" distances_to_centroid_temp.append(distance_in_meters)\n",
"\n",
" distances_among_checkins_avg.append(np.mean(distances_among_checkins_temp))\n",
" distances_to_centroid_avg.append(np.mean(distances_to_centroid_temp))\n",
" \n",
"\n",
"print 'Number of among-cluster check-in distances: ', len(distances_among_checkins)\n",
"print 'Number of centroid-based check-in distances', len (distances_to_centroid)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"#### - Distances among check-ins"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean: 44.9466059511 - Median : 15.3627336417 - Std. dev.: 105.551205751\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10d5b81d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print 'Mean: ', np.mean(distances_among_checkins), ' - Median : ', np.median(distances_among_checkins), ' - Std. dev.: ', np.std(distances_among_checkins)\n",
"plt.figure(figsize=(10,4))\n",
"plt.hist(distances_among_checkins, bins=50, normed=True)\n",
"plt.title('Distances among checkings - DBSCAN max distance: ' + str(DISTANCE_RESOLUTION_IN_METER) + ' meters')\n",
"plt.xlabel('Distance (meter)')\n",
"plt.ylabel('Ratio of instances')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"#### - Distances between check-ins and cluster centroid"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean: 50.9353743751 - Median : 15.4253554779 - Std. dev.: 105.055535234\n"
]
},
{
"data": {
"image/png": "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H0lyFxEREdFHktxFRERE9JGH9Q2Et9xyS8+YMWNDhxERERExrEsuueRW29OHq/ewTu5mzJjBwMDAhg4jIiIiYliS2t4hplVOy0ZERET0kSR3EREREX0kyV1EREREH0lyFxEREdFHktxFRERE9JEkdxERERF9JMldRERERB9JchcRERHRR5LcRURERPSRh/UdKtaHGXPP7rrukuNe3MNIIiIi4uGgpz13kvaXdI2kRZLmtlk+WdIZdfnFkmbU8mmSLpR0l6QTGvWnSLqs8bhV0qfrstdIWt5Y9vpe7ltERETEWNSznjtJE4ATgX2BpcACSfNtX9Wodjhwu+2dJM0BjgcOBlYD7wWeVB8A2F4F7NHYxiXAtxvtnWH7qB7tUkRERMSY18ueu72ARbYX274PmAfMbqkzGzitTp8F7CNJtu+2/TNKkteWpJnAVsBPH/rQIyIiIsanXiZ32wHXN+aX1rK2dWyvAe4EpnXZ/iGUnjo3yv5R0uWSzpK0Q7uVJB0haUDSwPLly7vcVERERMT40MvkTm3KPIo6ncwBvtmY/y4ww/ZuwA95sEfwrxu3T7I9y/as6dOnd7mpiIiIiPGhl8ndUqDZe7Y9cGOnOpImApsBK4ZrWNLuwETblwyW2b7N9r119svA00YfekRERMT41MvkbgEwU9KOkiZRetrmt9SZDxxWpw8CftRymrWTQ/jrXjskbdOYfRlw9aiijoiIiBjHejZa1vYaSUcB5wITgFNsL5R0LDBgez5wMnC6pEWUHrs5g+tLWgJMBSZJOhDYrzHS9pXAAS2bfLOklwFraluv6dW+RURERIxVPf0RY9vnAOe0lL2vMb0aeEWHdWcM0e7j2pQdDRw92lgjIiIi+kFuPxYRERHRR5LcRURERPSRJHcRERERfSTJXUREREQfSXIXERER0UeS3EVERET0kSR3EREREX0kyV1EREREH0lyFxEREdFHktxFRERE9JEkdxERERF9JMldRERERB9JchcRERHRR5LcRURERPSRJHcRERERfSTJXUREREQfSXIXERER0UeS3EVERET0kSR3EREREX0kyV1EREREH+lpcidpf0nXSFokaW6b5ZMlnVGXXyxpRi2fJulCSXdJOqFlnYtqm5fVx1ZDtRURERHxcNKz5E7SBOBE4EXALsAhknZpqXY4cLvtnYBPAcfX8tXAe4F3dGj+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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1124b3e90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print 'Mean: ', np.mean(distances_to_centroid), ' - Median : ', np.median(distances_to_centroid), ' - Std. dev.: ', np.std(distances_to_centroid)\n",
"plt.figure(figsize=(10,4))\n",
"plt.hist(distances_to_centroid, bins=50, normed=True)\n",
"plt.title('Distances to centroid - DBSCAN max distance:' + str(DISTANCE_RESOLUTION_IN_METER) + ' meters')\n",
"plt.xlabel('Distance (meter)')\n",
"plt.ylabel('Ratio of instances')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### - ... same test w/ averages"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean: 40.0130467879 - Median : 20.8643033369 - Std. dev.: 65.2363184551\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10d362cd0>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean: 28.8697522322 - Median : 14.4787045072 - Std. dev.: 48.3737235329\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10d393d50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print 'Mean: ', np.mean(distances_among_checkins_avg), ' - Median : ', np.median(distances_among_checkins_avg), ' - Std. dev.: ', np.std(distances_among_checkins_avg)\n",
"plt.figure(figsize=(10,4))\n",
"plt.hist(distances_among_checkins_avg, bins=20, normed=True)\n",
"plt.title('Distances among checkings (avg.) - DBSCAN max distance:' + str(DISTANCE_RESOLUTION_IN_METER) + ' meters')\n",
"plt.xlabel('Distance (meter)')\n",
"plt.ylabel('Ratio of instances')\n",
"plt.show()\n",
"\n",
"\n",
"print 'Mean: ', np.mean(distances_to_centroid_avg), ' - Median : ', np.median(distances_to_centroid_avg), ' - Std. dev.: ', np.std(distances_to_centroid_avg)\n",
"plt.figure(figsize=(10,4))\n",
"plt.hist(distances_to_centroid_avg, bins=20, normed=True)\n",
"plt.title('Distances to centroid (avg.) - DBSCAN max distance:' + str(DISTANCE_RESOLUTION_IN_METER) + ' meters')\n",
"plt.xlabel('Distance (meter)')\n",
"plt.ylabel('Ratio of instances')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.14"
}
},
"nbformat": 4,
"nbformat_minor": 2
}