07_feature_engineering.ipynb 6.45 MB
Newer Older
Eva Zangerle's avatar
Eva Zangerle committed
1
2
{
 "cells": [
Eva Zangerle's avatar
Eva Zangerle committed
3
4
5
  {
   "cell_type": "markdown",
   "id": "edd718da-1295-49c4-b556-3cc7b718f93c",
Eva Zangerle's avatar
Eva Zangerle committed
6
7
8
   "metadata": {
    "tags": []
   },
Eva Zangerle's avatar
Eva Zangerle committed
9
10
11
12
13
14
   "source": [
    "# Data Preparation and Quality\n",
    "Lecture Data Engineering and Analytics<br>\n",
    "Eva Zangerle"
   ]
  },
Eva Zangerle's avatar
Eva Zangerle committed
15
16
  {
   "cell_type": "code",
Eva Zangerle's avatar
Eva Zangerle committed
17
   "execution_count": 1,
Eva Zangerle's avatar
Eva Zangerle committed
18
19
20
21
22
23
24
25
26
   "id": "5b126eda-5b79-4531-b8ea-72898d09dc6d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# import required packages\n",
    "import json\n",
    "import os\n",
    "from pprint import pprint\n",
    "from sys import getsizeof\n",
27
    "\n",
Eva Zangerle's avatar
Eva Zangerle committed
28
29
30
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
31
    "import plotly.express as px\n",
Eva Zangerle's avatar
Eva Zangerle committed
32
    "import seaborn as sns\n",
33
    "import sklearn.datasets\n",
Eva Zangerle's avatar
Eva Zangerle committed
34
35
36
37
    "import sklearn.preprocessing as preproc\n",
    "from matplotlib import cm\n",
    "from matplotlib.colors import ListedColormap\n",
    "from scipy import stats\n",
38
    "from sklearn import linear_model, preprocessing\n",
Eva Zangerle's avatar
Eva Zangerle committed
39
    "from sklearn.cluster import DBSCAN, KMeans\n",
40
    "from sklearn.decomposition import PCA\n",
41
    "from sklearn.feature_extraction import FeatureHasher, text\n",
42
    "from sklearn.impute import SimpleImputer\n",
43
    "from sklearn.metrics import pairwise_distances_argmin"
Eva Zangerle's avatar
Eva Zangerle committed
44
45
   ]
  },
Eva Zangerle's avatar
Eva Zangerle committed
46
47
  {
   "cell_type": "code",
48
49
50
51
52
53
54
55
56
57
   "execution_count": 2,
   "id": "5406f6f3-1c06-4f3b-aaaf-9ac6f2967729",
   "metadata": {},
   "outputs": [],
   "source": [
    "data_dir = \"../data\""
   ]
  },
  {
   "cell_type": "code",
58
   "execution_count": 3,
59
   "id": "a870c325-706d-4c07-bb57-e3b84322e6e4",
Eva Zangerle's avatar
Eva Zangerle committed
60
61
62
63
64
65
66
67
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Author: Eva Zangerle\n",
      "\n",
68
      "Last updated: 2021-12-07 09:29:59\n",
Eva Zangerle's avatar
Eva Zangerle committed
69
70
71
72
73
74
      "\n"
     ]
    }
   ],
   "source": [
    "%load_ext watermark\n",
75
    "%watermark -a \"Eva Zangerle\" -u -d -t"
Eva Zangerle's avatar
Eva Zangerle committed
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
   ]
  },
  {
   "cell_type": "markdown",
   "id": "de6ba96a-a20d-4c9e-bb38-46b80ab6ae1f",
   "metadata": {},
   "source": [
    "## Enhancing Features"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "05832b33-0bb8-4496-a2a1-f23f8c7927b1",
   "metadata": {},
   "source": [
    "### Scaling and Normalization"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "45b0f558-ce94-4349-a525-d65e09db72f8",
   "metadata": {},
   "source": [
    "The following example is based on the online news popularity dataset (taken from the UCI Machine Learning Repository: https://archive.ics.uci.edu/ml/datasets/online+news+popularity). The dataset provides set of features about articles published by Mashable in a period of two years and was originally used for predicting popularity of articles in social networks. In the following example, we are primarily interested in the word count for each article (`n_tokens_content`) and showcase the results of different scaling methods. This example is adapted from the FeatEng book."
   ]
  },
  {
   "cell_type": "code",
104
   "execution_count": 4,
Eva Zangerle's avatar
Eva Zangerle committed
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
   "id": "5b966c0f-b892-408f-935f-d6fcb26db76c",
   "metadata": {},
   "outputs": [],
   "source": [
    "news = pd.read_csv(\n",
    "    os.path.join(data_dir, \"OnlineNewsPopularity.csv\"),\n",
    "    delimiter=\", \",\n",
    "    engine=\"python\",\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "071c9705-c8a4-486b-b124-0a55583d412f",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-info\">\n",
    "<b>Note:</b> We use `, ` as a delimiter here. If we would use only the comma as a delimiter, we would be able to read the dataframe, but for instance, accessing a specific field would fails as the key is not recognized due to the trailing space. Furthermore, we specify the python parsing engine to allow separators of more than one character.</div>"
   ]
  },
  {
   "cell_type": "code",
127
   "execution_count": 5,
Eva Zangerle's avatar
Eva Zangerle committed
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
   "id": "70e9a7e8-a3da-43be-b561-ac73ed655728",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\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",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>url</th>\n",
       "      <th>timedelta</th>\n",
       "      <th>n_tokens_title</th>\n",
       "      <th>n_tokens_content</th>\n",
       "      <th>n_unique_tokens</th>\n",
       "      <th>n_non_stop_words</th>\n",
       "      <th>n_non_stop_unique_tokens</th>\n",
       "      <th>num_hrefs</th>\n",
       "      <th>num_self_hrefs</th>\n",
       "      <th>num_imgs</th>\n",
       "      <th>num_videos</th>\n",
       "      <th>average_token_length</th>\n",
       "      <th>num_keywords</th>\n",
       "      <th>data_channel_is_lifestyle</th>\n",
       "      <th>data_channel_is_entertainment</th>\n",
       "      <th>...</th>\n",
       "      <th>global_rate_positive_words</th>\n",
       "      <th>global_rate_negative_words</th>\n",
       "      <th>rate_positive_words</th>\n",
       "      <th>rate_negative_words</th>\n",
       "      <th>avg_positive_polarity</th>\n",
       "      <th>min_positive_polarity</th>\n",
       "      <th>max_positive_polarity</th>\n",
       "      <th>avg_negative_polarity</th>\n",
       "      <th>min_negative_polarity</th>\n",
       "      <th>max_negative_polarity</th>\n",
       "      <th>title_subjectivity</th>\n",
       "      <th>title_sentiment_polarity</th>\n",
       "      <th>abs_title_subjectivity</th>\n",
       "      <th>abs_title_sentiment_polarity</th>\n",
       "      <th>shares</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
188
       "      <td>http://mashable.com/2013/01/07/amazon-instant-...</td>\n",
Eva Zangerle's avatar
Eva Zangerle committed
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
       "      <td>731.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>219.0</td>\n",
       "      <td>0.663594</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.815385</td>\n",
       "      <td>4.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4.680365</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.045662</td>\n",
       "      <td>0.013699</td>\n",
       "      <td>0.769231</td>\n",
       "      <td>0.230769</td>\n",
       "      <td>0.378636</td>\n",
       "      <td>0.100000</td>\n",
       "      <td>0.70</td>\n",
       "      <td>-0.350000</td>\n",
       "      <td>-0.600</td>\n",
       "      <td>-0.200000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>-0.187500</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.187500</td>\n",
       "      <td>593</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
222
       "      <td>http://mashable.com/2013/01/07/ap-samsung-spon...</td>\n",
Eva Zangerle's avatar
Eva Zangerle committed
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
       "      <td>731.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>255.0</td>\n",
       "      <td>0.604743</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.791946</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4.913725</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.043137</td>\n",
       "      <td>0.015686</td>\n",
       "      <td>0.733333</td>\n",
       "      <td>0.266667</td>\n",
       "      <td>0.286915</td>\n",
       "      <td>0.033333</td>\n",
       "      <td>0.70</td>\n",
       "      <td>-0.118750</td>\n",
       "      <td>-0.125</td>\n",
       "      <td>-0.100000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>711</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
256
       "      <td>http://mashable.com/2013/01/07/apple-40-billio...</td>\n",
Eva Zangerle's avatar
Eva Zangerle committed
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
       "      <td>731.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>211.0</td>\n",
       "      <td>0.575130</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.663866</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4.393365</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.056872</td>\n",
       "      <td>0.009479</td>\n",
       "      <td>0.857143</td>\n",
       "      <td>0.142857</td>\n",
       "      <td>0.495833</td>\n",
       "      <td>0.100000</td>\n",
       "      <td>1.00</td>\n",
       "      <td>-0.466667</td>\n",
       "      <td>-0.800</td>\n",
       "      <td>-0.133333</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
290
       "      <td>http://mashable.com/2013/01/07/astronaut-notre...</td>\n",
Eva Zangerle's avatar
Eva Zangerle committed
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
       "      <td>731.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>531.0</td>\n",
       "      <td>0.503788</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.665635</td>\n",
       "      <td>9.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4.404896</td>\n",
       "      <td>7.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.041431</td>\n",
       "      <td>0.020716</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.385965</td>\n",
       "      <td>0.136364</td>\n",
       "      <td>0.80</td>\n",
       "      <td>-0.369697</td>\n",
       "      <td>-0.600</td>\n",
       "      <td>-0.166667</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>http://mashable.com/2013/01/07/att-u-verse-apps/</td>\n",
       "      <td>731.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>1072.0</td>\n",
       "      <td>0.415646</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.540890</td>\n",
       "      <td>19.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4.682836</td>\n",
       "      <td>7.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.074627</td>\n",
       "      <td>0.012127</td>\n",
       "      <td>0.860215</td>\n",
       "      <td>0.139785</td>\n",
       "      <td>0.411127</td>\n",
       "      <td>0.033333</td>\n",
       "      <td>1.00</td>\n",
       "      <td>-0.220192</td>\n",
       "      <td>-0.500</td>\n",
       "      <td>-0.050000</td>\n",
       "      <td>0.454545</td>\n",
       "      <td>0.136364</td>\n",
       "      <td>0.045455</td>\n",
       "      <td>0.136364</td>\n",
       "      <td>505</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39639</th>\n",
392
       "      <td>http://mashable.com/2014/12/27/samsung-app-aut...</td>\n",
Eva Zangerle's avatar
Eva Zangerle committed
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
       "      <td>8.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>346.0</td>\n",
       "      <td>0.529052</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.684783</td>\n",
       "      <td>9.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4.523121</td>\n",
       "      <td>8.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.037572</td>\n",
       "      <td>0.014451</td>\n",
       "      <td>0.722222</td>\n",
       "      <td>0.277778</td>\n",
       "      <td>0.333791</td>\n",
       "      <td>0.100000</td>\n",
       "      <td>0.75</td>\n",
       "      <td>-0.260000</td>\n",
       "      <td>-0.500</td>\n",
       "      <td>-0.125000</td>\n",
       "      <td>0.100000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1800</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39640</th>\n",
426
       "      <td>http://mashable.com/2014/12/27/seth-rogen-jame...</td>\n",
Eva Zangerle's avatar
Eva Zangerle committed
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
       "      <td>8.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>328.0</td>\n",
       "      <td>0.696296</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.885057</td>\n",
       "      <td>9.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>48.0</td>\n",
       "      <td>4.405488</td>\n",
       "      <td>7.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.039634</td>\n",
       "      <td>0.009146</td>\n",
       "      <td>0.812500</td>\n",
       "      <td>0.187500</td>\n",
       "      <td>0.374825</td>\n",
       "      <td>0.136364</td>\n",
       "      <td>0.70</td>\n",
       "      <td>-0.211111</td>\n",
       "      <td>-0.400</td>\n",
       "      <td>-0.100000</td>\n",
       "      <td>0.300000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39641</th>\n",
460
       "      <td>http://mashable.com/2014/12/27/son-pays-off-mo...</td>\n",
Eva Zangerle's avatar
Eva Zangerle committed
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
       "      <td>8.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>442.0</td>\n",
       "      <td>0.516355</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.644128</td>\n",
       "      <td>24.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5.076923</td>\n",
       "      <td>8.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.033937</td>\n",
       "      <td>0.024887</td>\n",
       "      <td>0.576923</td>\n",
       "      <td>0.423077</td>\n",
       "      <td>0.307273</td>\n",
       "      <td>0.136364</td>\n",
       "      <td>0.50</td>\n",
       "      <td>-0.356439</td>\n",
       "      <td>-0.800</td>\n",
       "      <td>-0.166667</td>\n",
       "      <td>0.454545</td>\n",
       "      <td>0.136364</td>\n",
       "      <td>0.045455</td>\n",
       "      <td>0.136364</td>\n",
       "      <td>1900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39642</th>\n",
       "      <td>http://mashable.com/2014/12/27/ukraine-blasts/</td>\n",
       "      <td>8.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>682.0</td>\n",
       "      <td>0.539493</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.692661</td>\n",
       "      <td>10.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4.975073</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.020528</td>\n",
       "      <td>0.023460</td>\n",
       "      <td>0.466667</td>\n",
       "      <td>0.533333</td>\n",
       "      <td>0.236851</td>\n",
       "      <td>0.062500</td>\n",
       "      <td>0.50</td>\n",
       "      <td>-0.205246</td>\n",
       "      <td>-0.500</td>\n",
       "      <td>-0.012500</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39643</th>\n",
528
       "      <td>http://mashable.com/2014/12/27/youtube-channel...</td>\n",
Eva Zangerle's avatar
Eva Zangerle committed
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
       "      <td>8.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>157.0</td>\n",
       "      <td>0.701987</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.846154</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.471338</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.063694</td>\n",
       "      <td>0.012739</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>0.247338</td>\n",
       "      <td>0.100000</td>\n",
       "      <td>0.50</td>\n",
       "      <td>-0.200000</td>\n",
       "      <td>-0.200</td>\n",
       "      <td>-0.200000</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>1300</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>39644 rows × 61 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
       "                                                     url  timedelta  \\\n",
       "0      http://mashable.com/2013/01/07/amazon-instant-...      731.0   \n",
       "1      http://mashable.com/2013/01/07/ap-samsung-spon...      731.0   \n",
       "2      http://mashable.com/2013/01/07/apple-40-billio...      731.0   \n",
       "3      http://mashable.com/2013/01/07/astronaut-notre...      731.0   \n",
       "4       http://mashable.com/2013/01/07/att-u-verse-apps/      731.0   \n",
       "...                                                  ...        ...   \n",
       "39639  http://mashable.com/2014/12/27/samsung-app-aut...        8.0   \n",
       "39640  http://mashable.com/2014/12/27/seth-rogen-jame...        8.0   \n",
       "39641  http://mashable.com/2014/12/27/son-pays-off-mo...        8.0   \n",
       "39642     http://mashable.com/2014/12/27/ukraine-blasts/        8.0   \n",
       "39643  http://mashable.com/2014/12/27/youtube-channel...        8.0   \n",
       "\n",
       "       n_tokens_title  n_tokens_content  n_unique_tokens  n_non_stop_words  \\\n",
       "0                12.0             219.0         0.663594               1.0   \n",
       "1                 9.0             255.0         0.604743               1.0   \n",
       "2                 9.0             211.0         0.575130               1.0   \n",
       "3                 9.0             531.0         0.503788               1.0   \n",
       "4                13.0            1072.0         0.415646               1.0   \n",
       "...               ...               ...              ...               ...   \n",
       "39639            11.0             346.0         0.529052               1.0   \n",
       "39640            12.0             328.0         0.696296               1.0   \n",
       "39641            10.0             442.0         0.516355               1.0   \n",
       "39642             6.0             682.0         0.539493               1.0   \n",
       "39643            10.0             157.0         0.701987               1.0   \n",
       "\n",
       "       n_non_stop_unique_tokens  num_hrefs  num_self_hrefs  num_imgs  \\\n",
       "0                      0.815385        4.0             2.0       1.0   \n",
       "1                      0.791946        3.0             1.0       1.0   \n",
       "2                      0.663866        3.0             1.0       1.0   \n",
       "3                      0.665635        9.0             0.0       1.0   \n",
       "4                      0.540890       19.0            19.0      20.0   \n",
       "...                         ...        ...             ...       ...   \n",
       "39639                  0.684783        9.0             7.0       1.0   \n",
       "39640                  0.885057        9.0             7.0       3.0   \n",
       "39641                  0.644128       24.0             1.0      12.0   \n",
       "39642                  0.692661       10.0             1.0       1.0   \n",
       "39643                  0.846154        1.0             1.0       0.0   \n",
       "\n",
       "       num_videos  average_token_length  num_keywords  \\\n",
       "0             0.0              4.680365           5.0   \n",
       "1             0.0              4.913725           4.0   \n",
       "2             0.0              4.393365           6.0   \n",
       "3             0.0              4.404896           7.0   \n",
       "4             0.0              4.682836           7.0   \n",
       "...           ...                   ...           ...   \n",
       "39639         1.0              4.523121           8.0   \n",
       "39640        48.0              4.405488           7.0   \n",
       "39641         1.0              5.076923           8.0   \n",
       "39642         0.0              4.975073           5.0   \n",
       "39643         2.0              4.471338           4.0   \n",
Eva Zangerle's avatar
Eva Zangerle committed
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
       "\n",
       "       data_channel_is_lifestyle  data_channel_is_entertainment  ...  \\\n",
       "0                            0.0                            1.0  ...   \n",
       "1                            0.0                            0.0  ...   \n",
       "2                            0.0                            0.0  ...   \n",
       "3                            0.0                            1.0  ...   \n",
       "4                            0.0                            0.0  ...   \n",
       "...                          ...                            ...  ...   \n",
       "39639                        0.0                            0.0  ...   \n",
       "39640                        0.0                            0.0  ...   \n",
       "39641                        0.0                            0.0  ...   \n",
       "39642                        0.0                            0.0  ...   \n",
       "39643                        0.0                            1.0  ...   \n",
       "\n",
       "       global_rate_positive_words  global_rate_negative_words  \\\n",
       "0                        0.045662                    0.013699   \n",
       "1                        0.043137                    0.015686   \n",
       "2                        0.056872                    0.009479   \n",
       "3                        0.041431                    0.020716   \n",
       "4                        0.074627                    0.012127   \n",
       "...                           ...                         ...   \n",
       "39639                    0.037572                    0.014451   \n",
       "39640                    0.039634                    0.009146   \n",
       "39641                    0.033937                    0.024887   \n",
       "39642                    0.020528                    0.023460   \n",
       "39643                    0.063694                    0.012739   \n",
       "\n",
       "       rate_positive_words  rate_negative_words  avg_positive_polarity  \\\n",
       "0                 0.769231             0.230769               0.378636   \n",
       "1                 0.733333             0.266667               0.286915   \n",
       "2                 0.857143             0.142857               0.495833   \n",
       "3                 0.666667             0.333333               0.385965   \n",
       "4                 0.860215             0.139785               0.411127   \n",
       "...                    ...                  ...                    ...   \n",
       "39639             0.722222             0.277778               0.333791   \n",
       "39640             0.812500             0.187500               0.374825   \n",
       "39641             0.576923             0.423077               0.307273   \n",
       "39642             0.466667             0.533333               0.236851   \n",
       "39643             0.833333             0.166667               0.247338   \n",
       "\n",
       "       min_positive_polarity  max_positive_polarity  avg_negative_polarity  \\\n",
       "0                   0.100000                   0.70              -0.350000   \n",
       "1                   0.033333                   0.70              -0.118750   \n",
       "2                   0.100000                   1.00              -0.466667   \n",
       "3                   0.136364                   0.80              -0.369697   \n",
       "4                   0.033333                   1.00              -0.220192   \n",
       "...                      ...                    ...                    ...   \n",
       "39639               0.100000                   0.75              -0.260000   \n",
       "39640               0.136364                   0.70              -0.211111   \n",
       "39641               0.136364                   0.50              -0.356439   \n",
       "39642               0.062500                   0.50              -0.205246   \n",
       "39643               0.100000                   0.50              -0.200000   \n",
       "\n",
       "       min_negative_polarity  max_negative_polarity  title_subjectivity  \\\n",
       "0                     -0.600              -0.200000            0.500000   \n",
       "1                     -0.125              -0.100000            0.000000   \n",
       "2                     -0.800              -0.133333            0.000000   \n",
       "3                     -0.600              -0.166667            0.000000   \n",
       "4                     -0.500              -0.050000            0.454545   \n",
       "...                      ...                    ...                 ...   \n",
       "39639                 -0.500              -0.125000            0.100000   \n",
       "39640                 -0.400              -0.100000            0.300000   \n",
       "39641                 -0.800              -0.166667            0.454545   \n",
       "39642                 -0.500              -0.012500            0.000000   \n",
       "39643                 -0.200              -0.200000            0.333333   \n",
       "\n",
       "       title_sentiment_polarity  abs_title_subjectivity  \\\n",
       "0                     -0.187500                0.000000   \n",
       "1                      0.000000                0.500000   \n",
       "2                      0.000000                0.500000   \n",
       "3                      0.000000                0.500000   \n",
       "4                      0.136364                0.045455   \n",
       "...                         ...                     ...   \n",
       "39639                  0.000000                0.400000   \n",
       "39640                  1.000000                0.200000   \n",
       "39641                  0.136364                0.045455   \n",
       "39642                  0.000000                0.500000   \n",
       "39643                  0.250000                0.166667   \n",
       "\n",
       "       abs_title_sentiment_polarity  shares  \n",
       "0                          0.187500     593  \n",
       "1                          0.000000     711  \n",
       "2                          0.000000    1500  \n",
       "3                          0.000000    1200  \n",
       "4                          0.136364     505  \n",
       "...                             ...     ...  \n",
       "39639                      0.000000    1800  \n",
       "39640                      1.000000    1900  \n",
       "39641                      0.136364    1900  \n",
       "39642                      0.000000    1100  \n",
       "39643                      0.250000    1300  \n",
       "\n",
       "[39644 rows x 61 columns]"
      ]
     },
712
     "execution_count": 5,
Eva Zangerle's avatar
Eva Zangerle committed
713
714
715
716
717
718
719
720
721
722
723
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# look at data\n",
    "news"
   ]
  },
  {
   "cell_type": "code",
724
   "execution_count": 6,
Eva Zangerle's avatar
Eva Zangerle committed
725
726
727
728
729
   "id": "280cf353-a469-4ea1-94f8-d74173600310",
   "metadata": {},
   "outputs": [
    {
     "data": {
730
      "image/png": "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\n",
Eva Zangerle's avatar
Eva Zangerle committed
731
732
733
734
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
735
736
737
     "metadata": {
      "needs_background": "light"
     },
Eva Zangerle's avatar
Eva Zangerle committed
738
739
740
741
742
743
744
745
746
747
748
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = news[\"n_tokens_content\"].hist()\n",
    "fig.set_xlabel(\"Word Count\")\n",
    "fig.set_ylabel(\"Articles\");"
   ]
  },
  {
   "cell_type": "code",
749
   "execution_count": 7,
Eva Zangerle's avatar
Eva Zangerle committed
750
751
752
753
754
755
756
757
758
759
   "id": "0a88dfdf-9fae-44e9-8ba1-857f965b31c6",
   "metadata": {},
   "outputs": [],
   "source": [
    "# min max scaling\n",
    "news[\"minmax\"] = preproc.minmax_scale(news[\"n_tokens_content\"])"
   ]
  },
  {
   "cell_type": "code",
760
   "execution_count": 8,
Eva Zangerle's avatar
Eva Zangerle committed
761
762
763
764
765
766
767
768
769
770
771
772
   "id": "975f64b2-33d6-4a3a-bbcf-b46c6c3c903c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# standardization\n",
    "news[\"standardized\"] = preproc.StandardScaler().fit_transform(\n",
    "    news[[\"n_tokens_content\"]]\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
773
   "execution_count": 9,
Eva Zangerle's avatar
Eva Zangerle committed
774
775
776
777
778
779
780
781
782
783
   "id": "d9ce7284-8c2a-4d95-9962-c5eb867c3145",
   "metadata": {},
   "outputs": [],
   "source": [
    "# l2 normalization\n",
    "news[\"normalized\"] = preproc.normalize(news[[\"n_tokens_content\"]], axis=0)"
   ]
  },
  {
   "cell_type": "code",
784
   "execution_count": 10,
Eva Zangerle's avatar
Eva Zangerle committed
785
786
787
788
789
   "id": "b4bab441-0d1d-402c-8141-d81d49c66a63",
   "metadata": {},
   "outputs": [
    {
     "data": {
790
      "image/png": "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\n",
Eva Zangerle's avatar
Eva Zangerle committed
791
792
793
794
      "text/plain": [
       "<Figure size 720x1080 with 4 Axes>"
      ]
     },
795
796
797
     "metadata": {
      "needs_background": "light"
     },
Eva Zangerle's avatar
Eva Zangerle committed
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
     "output_type": "display_data"
    }
   ],
   "source": [
    "# compare different results\n",
    "fig, (ax1, ax2, ax3, ax4) = plt.subplots(4, 1, figsize=(10, 15))\n",
    "# fig.tight_layout();\n",
    "news[\"n_tokens_content\"].hist(ax=ax1, bins=100)\n",
    "ax1.set_xlabel(\"Article word count\")\n",
    "ax1.set_ylabel(\"Number of articles\")\n",
    "news[\"minmax\"].hist(ax=ax2, bins=100)\n",
    "ax2.set_xlabel(\"Min-max scaled word count\")\n",
    "ax2.set_ylabel(\"Number of articles\")\n",
    "news[\"standardized\"].hist(ax=ax3, bins=100)\n",
    "ax3.set_xlabel(\"Standardized word count\")\n",
    "ax3.set_ylabel(\"Number of articles\")\n",
    "news[\"normalized\"].hist(ax=ax4, bins=100)\n",
    "ax4.set_xlabel(\"L2-normalized word count\")\n",
    "ax4.set_ylabel(\"Number of articles\");"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4fef108e-a831-4454-a8be-f9bb90bdd0d9",
   "metadata": {},
   "source": [
    "### Power Transforms"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c154449a-6dc6-4707-b3fd-39ea0c2ae3e3",
   "metadata": {},
   "source": [
    "For investigating power transforms, we will look at an example we already discussed during our exploratory data analysis: the count of ratings per movie. "
   ]
  },
  {
   "cell_type": "code",
837
   "execution_count": 11,
Eva Zangerle's avatar
Eva Zangerle committed
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
   "id": "f2eba9b9-c768-46f7-9171-f94aa2c12896",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 855598 entries, 0 to 855597\n",
      "Data columns (total 9 columns):\n",
      " #   Column       Non-Null Count   Dtype  \n",
      "---  ------       --------------   -----  \n",
      " 0   userID       855598 non-null  int64  \n",
      " 1   movieID      855598 non-null  int64  \n",
      " 2   rating       855598 non-null  float64\n",
      " 3   date_day     855598 non-null  int64  \n",
      " 4   date_month   855598 non-null  int64  \n",
      " 5   date_year    855598 non-null  int64  \n",
      " 6   date_hour    855598 non-null  int64  \n",
      " 7   date_minute  855598 non-null  int64  \n",
      " 8   date_second  855598 non-null  int64  \n",
      "dtypes: float64(1), int64(8)\n",
      "memory usage: 58.7 MB\n"
     ]
    }
   ],
   "source": [
    "# read in rating data\n",
    "ratings = pd.read_csv(\n",
    "    os.path.join(data_dir, \"hetrec/user_ratedmovies.dat\"), delimiter=\"\\t\"\n",
    ")\n",
    "ratings.info(memory_usage=\"deep\")"
   ]
  },
  {
   "cell_type": "code",
874
   "execution_count": 12,
Eva Zangerle's avatar
Eva Zangerle committed
875
876
877
878
879
880
881
882
883
884
885
   "id": "513fc696-bc60-462c-9166-8a5f53f578b2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# asymmetric, skewed distribution\n",
    "# number of ratings per movie\n",
    "rating_counts = ratings.groupby(\"movieID\")[\"rating\"].agg(\"count\")"
   ]
  },
  {
   "cell_type": "code",
886
   "execution_count": 13,
Eva Zangerle's avatar
Eva Zangerle committed
887
888
889
890
891
   "id": "061330ae-f08f-4b3f-8059-f7a575a2e3f6",
   "metadata": {},
   "outputs": [
    {
     "data": {
892
      "image/png": "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\n",
Eva Zangerle's avatar
Eva Zangerle committed
893
894
895
896
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
897
898
899
     "metadata": {
      "needs_background": "light"
     },
Eva Zangerle's avatar
Eva Zangerle committed
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
     "output_type": "display_data"
    }
   ],
   "source": [
    "# histogram of number of movies with given number of ratings\n",
    "# (binned value counts)\n",
    "fig, axes = plt.subplots(1, 2, figsize=(15, 5))\n",
    "axes[0].hist(rating_counts, bins=100)\n",
    "axes[0].set_ylabel(\"Number of Movies\")\n",
    "axes[0].set_xlabel(\"Number of Ratings\")\n",
    "axes[1].hist(rating_counts, log=True, bins=100)\n",
    "axes[1].set_ylabel(\"Number of Movies (log)\")\n",
    "axes[1].set_xlabel(\"Number of Ratings\");"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d13a1272-f61c-486d-bd0a-7ad95dcd627e",
   "metadata": {},
   "source": [
    "Another example is the number of words in an article as already shown previously as part of the news popularity dataset."
   ]
  },
  {
   "cell_type": "code",
925
   "execution_count": 14,
Eva Zangerle's avatar
Eva Zangerle committed
926
927
928
929
930
   "id": "e89f79a5-ecfd-4d19-8499-9ed7b650c745",
   "metadata": {},
   "outputs": [
    {
     "data": {
931
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmoAAAJNCAYAAACBe1nxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAABC6UlEQVR4nO3dfZhdZX3v//dH8IESBBQ6BwNtQLGtmoqYImprg1ZEaEH9qYXDTwE5jZ6iYkuvGqyV/uqxxVp8rtpUqGiRSPGBFLBK0UGt5SmiBEQOEWNNiqCCgaBiA9/fH3sN7EzmYSeZPbNm7/fruuaate5177W+a629Z3/nXuted6oKSZIktc/D5joASZIkTcxETZIkqaVM1CRJklrKRE2SJKmlTNQkSZJaykRNkiSppXae6wD6Za+99qpFixb1dRv33nsvu+66a1+3obnj+R1cntvB5vkdbIN6flevXv3Dqtp7fPnAJmqLFi3i2muv7es2RkdHWbp0aV+3obnj+R1cntvB5vkdbIN6fpN8d6JyL31KkiS1lImaJElSS5moSZIktZSJmiRJUkuZqEmSJLWUiZokSVJLmahJkiS1lImaJElSS5moSZIktZSJmiRJUksN7BBSbbdo+SVbla0786g5iESSJLWVLWqSJEktZaImSZLUUiZqkiRJLWWiJkmS1FImapIkSS1loiZJktRSPp5jFkz0KA5JkqTp2KImSZLUUiZqkiRJLWWiJkmS1FImapIkSS1loiZJktRSJmqSJEktZaImSZLUUiZqkiRJLWWiJkmS1FImapIkSS1loiZJktRSJmqSJEktZaImSZLUUiZqkiRJLWWiJkmS1FImapIkSS3V10Qtyboka5J8Pcm1TdljklyW5Jbm955NeZK8N8naJNcnObhrPSc09W9JckI/Y5YkSWqL2WhRO6yqDqqqJc38cuDyqjoQuLyZB3ghcGDzswz4IHQSO+AM4BnAIcAZY8mdJEnSIJuLS5/HAOc20+cCL+oq/2h1XAnskWQf4AXAZVV1Z1XdBVwGHDHLMUuSJM26fidqBXw+yeoky5qykaq6rZn+PjDSTC8Evtf12vVN2WTlkiRJA23nPq//N6tqQ5JfBC5L8q3uhVVVSWqmNtYkg8sARkZGGB0dnalVT2jTpk09beO0xZt7Wl+/49W26fX8av7x3A42z+9gG7bz29dErao2NL/vSPJpOveY3Z5kn6q6rbm0eUdTfQOwX9fL923KNgBLx5WPTrK9FcAKgCVLltTSpUsnqjZjRkdH6WUbJy6/pKf1rTt++nVp9vR6fjX/eG4Hm+d3sA3b+e3bpc8kuybZbWwaOBy4AVgFjPXcPAG4qJleBbyy6f15KLCxuUT6OeDwJHs2nQgOb8okSZIGWj9b1EaATycZ287Hq+pfk1wDXJDkZOC7wMub+pcCRwJrgZ8AJwFU1Z1J3gpc09T7y6q6s49xS5IktULfErWquhV46gTlPwKeN0F5AadMsq5zgHNmOkZJkqQ2c2QCSZKkljJRkyRJaikTNUmSpJYyUZMkSWopEzVJkqSWMlGTJElqKRM1SZKkljJRkyRJaikTNUmSpJYyUZMkSWopEzVJkqSWMlGTJElqKRM1SZKkljJRkyRJaikTNUmSpJYyUZMkSWopEzVJkqSWMlGTJElqKRM1SZKkljJRkyRJaikTNUmSpJYyUZMkSWqpnec6AD1k0fJLtipbd+ZRcxCJJElqA1vUJEmSWspETZIkqaVM1CRJklrKRE2SJKmlTNQkSZJaykRNkiSppUzUJEmSWspETZIkqaVM1CRJklqq74lakp2SXJfk4mZ+/yRXJVmb5BNJHtGUP7KZX9ssX9S1jtOb8puTvKDfMUuSJLXBtIlaklOTPDodZyf5WpLDt2EbpwI3dc2/HXhXVT0BuAs4uSk/GbirKX9XU48kTwKOBZ4MHAF8IMlO27B9SZKkeamXFrVXVdXdwOHAnsArgDN7WXmSfYGjgA838wGeC1zYVDkXeFEzfUwzT7P8eU39Y4CVVXVfVX0HWAsc0sv2JUmS5rNeErU0v48EPlZVN3aVTefdwJ8CDzTzjwV+XFWbm/n1wMJmeiHwPYBm+cam/oPlE7xGkiRpYO3cQ53VST4P7A+cnmQ3Hkq8JpXkd4E7qmp1kqU7FGWPkiwDlgGMjIwwOjra1+1t2rSpp22ctnjztHUm0+990OR6Pb+afzy3g83zO9iG7fz2kqidDBwE3FpVP0nyWOCkHl73bODoJEcCjwIeDbwH2CPJzk2r2b7Ahqb+BmA/YH2SnYHdgR91lY/pfs0WqmoFsAJgyZIltXTp0h7C3H6jo6P0so0Tl1+y3dtYd/z061d/9Hp+Nf94bgeb53ewDdv57eXSZwFPAl7fzO9KJ/Ga+kVVp1fVvlW1iE5ngC9U1fHAF4GXNtVOAC5qplc18zTLv1BV1ZQf2/QK3R84ELi6h7glSZLmtV4StQ8AzwSOa+bvAf5uB7b5RuCPk6ylcw/a2U352cBjm/I/BpYDNPfEXQB8E/hX4JSqun8Hti9JkjQv9HLp8xlVdXCS6wCq6q6xZ5/1qqpGgdFm+lYm6LVZVT8DXjbJ698GvG1btilJkjTf9dKi9t/Nc8sKIMne9NCZQJIkSTuml0TtvcCngV9M8jbgK8Bf9TUqSZIkTX/ps6rOS7IaeB6d56e9qKpumuZlkiRJ2kGTJmpJHtM1ewdwfveyqrqzn4FJkiQNu6la1FbTuS9tbBSCan6nmT6gj3FJkiQNvUkTtarafzYDkSRJ0pam7UyQ5MVJdu+a3yPJi/oalSRJknrq9XlGVW0cm6mqHwNn9C0iSZIkAb0lahPV6eVBuZIkSdoBvSRq1yZ5Z5LHNz/vpNPRQJIkSX3US6L2OuDnwCean/uAU/oZlCRJknp74O29NAOkS5IkafZM9cDbd1fVG5L8Cw89Q+1BVXV0XyOTJEkaclO1qH2s+f23sxGIJEmStjTVA2/HOgwcVFXv6V6W5FTgin4GJkmSNOx66UxwwgRlJ85wHJIkSRpnqnvUjgP+J3BAklVdi3YDHJBdkiSpz6a6R+2rwG3AXsBZXeX3ANf3MyhJkiRNfY/ad5OsB35WVd6PJkmSNMumfI5aVd2f5IEku3eP96nJLVp+yVyHIEmSBkQvY3ZuAtYkuQy4d6ywql7ft6gkSZLUU6L2qean21YPwFV/TNRCt+7Mo+YgEkmSNNt6GULq3O75JPsBx/YtIkmSJAG9PUeNJHsn+cMkXwZGgZG+RiVJkqQpn6O2G/ASOs9SeyKdy5/7V9W+sxSbJEnSUJvq0ucdwNXAm4GvVFUlefHshCVJkqSpLn2eDjwS+ABwepLHz05IkiRJgikStap6d1UdChzTFH0GeFySNyZ54mwEJ0mSNMym7UxQVbdW1V9V1WJgCfBo4NK+RyZJkjTkeur1OaaqbqiqP6uqJ/QrIEmSJHVsU6ImSZKk2WOiJkmS1FKTJmpJLm9+v332wpEkSdKYqVrU9knyLODoJE9LcnD3z3QrTvKoJFcn+UaSG5P8f035/kmuSrI2ySeSPKIpf2Qzv7ZZvqhrXac35TcnecEO7rMkSdK8MNUDb98C/DmwL/DOccsKeO40674PeG5VbUrycOArST4L/DHwrqpameRDwMnAB5vfd1XVE5IcC7wd+P0kT6IztuiTgccB/5bkiVV1/zbtqSRJ0jwz1XPULqyqFwJ/U1WHjfuZLkmjOjY1sw9vfsYSvAub8nOBFzXTxzTzNMuflyRN+cqquq+qvgOsBQ7Zpr2UJEmah6ZqUQOgqt6a5GjgOU3RaFVd3MvKk+wErAaeAPwd8G3gx1W1uamyHljYTC8Evtdsc3OSjcBjm/Iru1bb/RpJkqSBNW2iluSv6bRgndcUnZrkWVX1pule21yePCjJHsCngV/dgVinlWQZsAxgZGSE0dHRfm6OTZs2bbWN0xZvnrjyDOr3fqljovOrweC5HWye38E2bOd32kQNOAo4qKoeAEhyLnAdMG2iNqaqfpzki8AzgT2S7Ny0qu0LbGiqbQD2A9Yn2RnYHfhRV/mY7teM384KYAXAkiVLaunSpb2GuF1GR0cZv40Tl1/S120CrDt+6bR1tOMmOr8aDJ7bweb5HWzDdn57fY7aHl3Tu/fygiR7Ny1pJNkFeD5wE/BF4KVNtROAi5rpVc08zfIvVFU15cc2vUL3Bw4Eru4xbkmSpHmrlxa1vwaua1rEQudeteU9vG4f4NzmPrWHARdU1cVJvgmsTPJ/6LTMnd3UPxv4WJK1wJ10enpSVTcmuQD4JrAZOMUen5IkaRj00png/CSjwG80RW+squ/38LrrgadNUH4rE/TarKqfAS+bZF1vA9423TYlSZIGSS8talTVbXQuQUqSJGmWONanJElSS/XUoqZ2WTRBz9J1Zx41B5FIkqR+mrJFLclOSb41W8FIkiTpIVMmak3vypuT/NIsxSNJkqRGL5c+9wRuTHI1cO9YYVUd3beoJEmS1FOi9ud9j0KSJElb6eU5alck+WXgwKr6tyS/AOzU/9AkSZKG27SP50jyB8CFwN83RQuBz/QxJkmSJNHbc9ROAZ4N3A1QVbcAv9jPoCRJktRbonZfVf18bCbJzkD1LyRJkiRBb4naFUneBOyS5PnAPwP/0t+wJEmS1Euithz4AbAGeDVwKfDmfgYlSZKk3np9PpDkXOAqOpc8b64qL31KkiT12bSJWpKjgA8B3wYC7J/k1VX12X4HJ0mSNMx6eeDtWcBhVbUWIMnjgUsAEzVJkqQ+6uUetXvGkrTGrcA9fYpHkiRJjUlb1JK8pJm8NsmlwAV07lF7GXDNLMQmSZI01Ka69Pl7XdO3A7/dTP8A2KVvEUmSJAmYIlGrqpNmMxBJkiRtqZden/sDrwMWddevqqP7F5YkSZJ66fX5GeBsOqMRPNDXaCRJkvSgXhK1n1XVe/seiSRJkrbQS6L2niRnAJ8H7hsrrKqv9S0qSZIk9ZSoLQZeATyXhy59VjMvSZKkPuklUXsZcEBV/bzfwUiSJOkhvSRqNwB7AHf0NxTtiEXLL5mwfN2ZR81yJJIkaab0kqjtAXwryTVseY+aj+eQJEnqo14StTP6HoUkSZK2Mm2iVlVXzEYgkiRJ2lIvIxPcQ6eXJ8AjgIcD91bVo/sZmCRJ0rDrpUVtt7HpJAGOAQ7tZ1CSJEmCh21L5er4DPCC6eom2S/JF5N8M8mNSU5tyh+T5LIktzS/92zKk+S9SdYmuT7JwV3rOqGpf0uSE7ZtFyVJkuanXi59vqRr9mHAEuBnPax7M3BaVX0tyW7A6iSXAScCl1fVmUmWA8uBNwIvBA5sfp4BfBB4RpLH0OnQsITOJdjVSVZV1V097qMkSdK81Euvz9/rmt4MrKNz+XNKVXUbcFszfU+Sm4CFzWuXNtXOBUbpJGrHAB+tqgKuTLJHkn2aupdV1Z0ATbJ3BHB+D7FLkiTNW73co3bSjm4kySLgacBVwEiTxAF8HxhpphcC3+t62fqmbLJySZKkgTZpopbkLVO8rqrqrb1sIMkC4JPAG6rq7k5/hIdWkqQmffE2SrIMWAYwMjLC6OjoTK16Qps2bdpqG6ct3tzXbW6rfh+DQTbR+dVg8NwONs/vYBu28ztVi9q9E5TtCpwMPBaYNlFL8nA6Sdp5VfWppvj2JPtU1W3Npc2xoak2APt1vXzfpmwDD10qHSsfnWh7VbUCWAGwZMmSWrp06UTVZszo6Cjjt3HiJEM5zZV1xy+d6xDmrYnOrwaD53aweX4H27Cd30l7fVbVWWM/dJKfXYCTgJXAAdOtuHmUx9nATVX1zq5Fq4CxnpsnABd1lb+y6f15KLCxuUT6OeDwJHs2PUQPb8okSZIG2pT3qDU9Lv8YOJ7Ojf8Hb0Nvy2cDrwDWJPl6U/Ym4EzggiQnA98FXt4suxQ4ElgL/IROUkhV3ZnkrcA1Tb2/HOtYIEmSNMimukftHcBL6LSmLa6qTduy4qr6CpBJFj9vgvoFnDLJus4BztmW7UuSJM13Uz3w9jTgccCbgf9Kcnfzc0+Su2cnPEmSpOE1aYtaVW3TqAVqp0UTdG5Yd+ZRcxCJJEnaViZjkiRJLWWiJkmS1FImapIkSS1loiZJktRSJmqSJEktZaImSZLUUiZqkiRJLWWiJkmS1FImapIkSS1loiZJktRSkw4hpcHlsFKSJM0PtqhJkiS1lImaJElSS5moSZIktZT3qO2ANRs2cuIE93tJkiTNBFvUJEmSWspETZIkqaVM1CRJklrKRE2SJKmlTNQkSZJaykRNkiSppXw8hwCHlZIkqY1sUZMkSWopEzVJkqSWMlGTJElqKRM1SZKkljJRkyRJaikTNUmSpJby8RyalI/skCRpbtmiJkmS1FImapIkSS3V10QtyTlJ7khyQ1fZY5JcluSW5veeTXmSvDfJ2iTXJzm46zUnNPVvSXJCP2OWJElqi363qH0EOGJc2XLg8qo6ELi8mQd4IXBg87MM+CB0EjvgDOAZwCHAGWPJnSRJ0iDra6JWVV8C7hxXfAxwbjN9LvCirvKPVseVwB5J9gFeAFxWVXdW1V3AZWyd/EmSJA2cubhHbaSqbmumvw+MNNMLge911VvflE1WLkmSNNDm9PEcVVVJaqbWl2QZncumjIyMMDo6OlOrntDILnDa4s193Ubb9PuYtsmmTZuGan+Hied2sHl+B9uwnd+5SNRuT7JPVd3WXNq8oynfAOzXVW/fpmwDsHRc+ehEK66qFcAKgCVLltTSpUsnqjZj3nfeRZy1ZsgeRbfm3q2KBvXZaqOjo/T7PaS54bkdbJ7fwTZs53cuLn2uAsZ6bp4AXNRV/sqm9+ehwMbmEunngMOT7Nl0Iji8KZMkSRpofW0OSnI+ndawvZKsp9N780zggiQnA98FXt5UvxQ4ElgL/AQ4CaCq7kzyVuCapt5fVtX4DgqSJEkDp6+JWlUdN8mi501Qt4BTJlnPOcA5MxiaJElS6zkygSRJUkuZqEmSJLWUiZokSVJLmahJkiS1lImaJElSS5moSZIktZSJmiRJUkuZqEmSJLWUiZokSVJLDdmI4uqHRcsv2apsUAdqlyRpNtmiJkmS1FImapIkSS1loiZJktRSJmqSJEktZWcC9YUdDCRJ2nG2qEmSJLWUiZokSVJLmahJkiS1lImaJElSS9mZQLPGDgaSJG0bW9QkSZJayhY1zSlb2SRJmpwtapIkSS1loiZJktRSXvpU63g5VJKkDlvUJEmSWspETZIkqaW89Kl5wcuhkqRhZKKmecvkTZI06EzUNFBM3iRJg8RETQNvouQNTOAkSe1nZwJJkqSWmjctakmOAN4D7AR8uKrOnOOQNM95mVSS1HbzIlFLshPwd8DzgfXANUlWVdU35zYyDZru5O20xZs5cZLLphMxyZMkzbR5kagBhwBrq+pWgCQrgWMAEzW1xmT3wvXCJE+SNJH5kqgtBL7XNb8eeMYcxSLNuB1J8iYyUeLnpV5Jmn/mS6LWkyTLgGXN7KYkN/d5k3sBP+zzNjRHXj+Pz2/ePrP1BtC8Pbfqied3sA3q+f3liQrnS6K2Adiva37fpmwLVbUCWDFbQSW5tqqWzNb2NLs8v4PLczvYPL+DbdjO73x5PMc1wIFJ9k/yCOBYYNUcxyRJktRX86JFrao2J3kt8Dk6j+c4p6punOOwJEmS+mpeJGoAVXUpcOlcxzHOrF1m1Zzw/A4uz+1g8/wOtqE6v6mquY5BkiRJE5gv96hJkiQNHRO17ZDkiCQ3J1mbZPlcx6PeJNkvyReTfDPJjUlObcofk+SyJLc0v/dsypPkvc15vj7JwV3rOqGpf0uSE+Zqn7SlJDsluS7Jxc38/kmuas7hJ5rOSCR5ZDO/tlm+qGsdpzflNyd5wRztisZJskeSC5N8K8lNSZ7pZ3dwJPmj5u/yDUnOT/IoP78dJmrbqGs4qxcCTwKOS/KkuY1KPdoMnFZVTwIOBU5pzt1y4PKqOhC4vJmHzjk+sPlZBnwQOokdcAadhy4fApwx9gWhOXcqcFPX/NuBd1XVE4C7gJOb8pOBu5rydzX1aN4PxwJPBo4APtB85jX33gP8a1X9KvBUOufZz+4ASLIQeD2wpKqeQqfT4LH4+QVM1LbHg8NZVdXPgbHhrNRyVXVbVX2tmb6Hzh/6hXTO37lNtXOBFzXTxwAfrY4rgT2S7AO8ALisqu6sqruAy+j8UdAcSrIvcBTw4WY+wHOBC5sq48/t2Dm/EHheU/8YYGVV3VdV3wHW0vnMaw4l2R14DnA2QFX9vKp+jJ/dQbIzsEuSnYFfAG7Dzy9gorY9JhrOauEcxaLt1DSVPw24ChipqtuaRd8HRprpyc6174F2ejfwp8ADzfxjgR9X1eZmvvs8PXgOm+Ubm/qe23baH/gB8I/Npe0PJ9kVP7sDoao2AH8L/CedBG0jsBo/v4CJmoZQkgXAJ4E3VNXd3cuq0w3artDzTJLfBe6oqtVzHYv6YmfgYOCDVfU04F4euswJ+Nmdz5rLz8fQScgfB+yKLZ0PMlHbdj0NZ6V2SvJwOknaeVX1qab49uayCM3vO5ryyc6174H2eTZwdJJ1dG5HeC6de5r2aC6lwJbn6cFz2CzfHfgRntu2Wg+sr6qrmvkL6SRufnYHw+8A36mqH1TVfwOfovOZ9vOLidr2cDireaq5h+Fs4KaqemfXolXAWO+vE4CLuspf2fQgOxTY2Fxm+RxweJI9m/8ED2/KNEeq6vSq2reqFtH5TH6hqo4Hvgi8tKk2/tyOnfOXNvWrKT+26VW2P52b0a+epd3QJKrq+8D3kvxKU/Q84Jv42R0U/wkcmuQXmr/TY+fXzy/zaGSCtnA4q3nt2cArgDVJvt6UvQk4E7ggycnAd4GXN8suBY6kc0PqT4CTAKrqziRvpZO0A/xlVd05K3ugbfVGYGWS/wNcR3MzevP7Y0nWAnfSSe6oqhuTXEDnS2IzcEpV3T/7YWsCrwPOa/5BvpXO5/Fh+Nmd96rqqiQXAl+j87m7js7oA5fg59eRCSRJktrKS5+SJEktZaImSZLUUiZqkiRJLWWiJkmS1FImapIkSS1loiZpWkkqyVld83+S5C9maN0fSfLS6Wvu8HZeluSmJF8cV/7pJC/qmr85yZu75j+Z5CXbuc0Tk7y/x7qPax5RsK3b2CvJfyd5zTT13pDkF7rmL02yxxT1/yLJn2xrPJJmlomapF7cB7wkyV5zHUi3rqeW9+Jk4A+q6rBx5f8OPKtZ32PpDE/0zK7lzwS+2mM8O21DPFuoqv+qqu1JWF8GXAkcN01cb6Az2PXY9o5sBjaX1GImapJ6sZnOAyj/aPyC8S1iSTY1v5cmuSLJRUluTXJmkuOTXJ1kTZLHd63md5Jcm+T/NuN2kmSnJO9Ick2S65O8umu9X06yis6DLcfHc1yz/huSvL0pewvwm8DZSd4x7iVfpUnUmt//AuzdPNV+f+CnVfX9idY7tr9JzkryDeCZSU5q9uNqOg9ZHqv3sua130jypQniXpTkhmb6xCSfSvKvSW5J8jcTnxagk6CdBixMsu8kcf0ZnTEUvzjWophk3VjineSVzTH+RpKPTRDb45tYVjfH/leniEfSDHJkAkm9+jvg+mmShvGeCvwanaeH3wp8uKoOSXIqnSfNv6Gptwg4BHg8nWTiCcAr6Qz98xtJHgn8e5LPN/UPBp5SVd/p3liSxwFvB54O3AV8PsmLquovkzwX+JOqunZcjKuBpzRPvH8WcAVwQBP304CvTrHez9AZQPqqqjotnfEmP97U20hnCJzrmu28BXhBVW2Y6pJjl4Oa7d8H3JzkfVX1vXH7ux+wT1Vd3TyR/feBsUvUD8bV1H0VcFhV/XDcOp4MvBl4VlX9MMljJohlBfCaqrolyTOAD9AZT1VSn9miJqknVXU38FHg9dvwsmuq6raqug/4NjCWaK2hk5yNuaCqHqiqW+gkdL9KZxzGV6Yz3NdVwGPpjN0HcPX4JK3xG8BoM7jzZuA84DnT7Nd9wI10kr9Dm239B52k7Vl0Lo1Otd77gU8208/oqvdz4BNdm/p34CNJ/oDO8HPTubyqNlbVz+i0HP7yBHV+H7igmV7Jlpc/u+OaynOBfx5L4MYPqZRkAZ3j8M/Nufh7YJ8e1itpBtiiJmlbvJvOeHz/2FW2meafviQPAx7Rtey+rukHuuYfYMu/P+PHsisgwOuqaotBs5MspXMf2Uz6dzqJ125VdVeSK4HX0mnR+ntg/yle+7NexhOsqtc0rVFHAauTPL2qfjTFS7qP3f1M/Pf6OOB/JDm+mX9ckgObhLenuHrwMODHVXXQDKxL0jayRU1Sz5rWlgvo3Jg/Zh2dS30ARwMP345VvyzJw5r71g4AbgY+B/zvJA8HSPLEJLtOs56rgd9uekLuRCeRuaKH7X8VeDXwjWb+ejqta78E3LAN672qqffYJu6XjS1I8viquqqq3gL8ANivh7gmleSJwIKqWlhVi6pqEfDXTN6p4B5gtwnKv0Dn+D+2We8Wlz6bltTvJHlZszxJnrojsUvqnYmapG11FtDd+/Mf6CQn36DTQ3J7Wrv+k04y9Fk690L9DPgwnUt+X2tusv97prkKUFW3Acvp3Bv2DWB1VV3Uw/a/SidB/I9mPZuBO4Brm0uyPa23qfcXzXr+Hbipa/E7xjojNNv7xvjXb6PjgE+PK/skkydqK4B/zbjHk1TVjcDbgCuac/jOCV57PHBys/xG4JgdCVxS71I1/oqDJEmS2sAWNUmSpJYyUZMkSWopEzVJkqSWMlGTJElqKRM1SZKkljJRkyRJaikTNUmSpJYyUZMkSWopEzVJkqSWMlGTJElqKRM1SZKkljJRkyRJaikTNUmSpJYyUZMkSWopEzVJkqSWMlGTJElqKRM1SZKkljJRkyRJaikTNUmSpJYyUZMkSWqpnec6gH7Za6+9atGiRX3dxr333suuu+7a12203bAfg2Hff/AYDPv+g8dg2PcfPAYzsf+rV6/+YVXtPb58YBO1RYsWce211/Z1G6OjoyxdurSv22i7YT8Gw77/4DEY9v0Hj8Gw7z94DGZi/5N8d6JyL31KkiS1lImaJElSS5moSZIktZSJmiRJUkuZqEmSJLWUiZokSVJLmahJkiS1lImaJElSS5moSZIktdTAjkwgSeqfRcsveXD6tMWbOXH5Jaw786g5jEgaTLaoSZIktZSJmiRJUkuZqEmSJLWUiZokSVJL2ZlAkjQjujsYjLGDgbRjbFGTJElqKRM1SZKkljJRkyRJaikTNUmSpJayM4EkaVITdRCQNHtsUZMkSWopEzVJkqSWMlGTJElqqb4laknOSXJHkhu6yj6R5OvNz7okX2/KFyX5adeyD3W95ulJ1iRZm+S9SdKvmCVJktqkn50JPgK8H/joWEFV/f7YdJKzgI1d9b9dVQdNsJ4PAn8AXAVcChwBfHbmw5UkSWqXvrWoVdWXgDsnWta0ir0cOH+qdSTZB3h0VV1ZVUUn6XvRDIcqSZLUSnN1j9pvAbdX1S1dZfsnuS7JFUl+qylbCKzvqrO+KZMkSRp46TRU9WnlySLg4qp6yrjyDwJrq+qsZv6RwIKq+lGSpwOfAZ4MPBE4s6p+p6n3W8Abq+p3J9neMmAZwMjIyNNXrlzZl/0as2nTJhYsWNDXbbTdsB+DYd9/8BgM+v6v2bBx2joju8DtP5142eKFu89wRO0z6O+BXgz7MZiJ/T/ssMNWV9WS8eWz/sDbJDsDLwGePlZWVfcB9zXTq5N8m06StgHYt+vl+zZlE6qqFcAKgCVLltTSpUtnOvwtjI6O0u9ttN2wH4Nh33/wGAz6/p/YwwNvT1u8mbPWTPJ1suberYrWnXnUjobVKoP+HujFsB+Dfu7/XFz6/B3gW1X14CXNJHsn2amZPgA4ELi1qm4D7k5yaHNf2yuBi+YgZkmSpFnXz8dznA/8B/ArSdYnOblZdCxbdyJ4DnB987iOC4HXVNVYR4Q/BD4MrAW+jT0+JUnSkOjbpc+qOm6S8hMnKPsk8MlJ6l8LPGWiZZIkSYPMkQkkSZJaatY7E0iShtuiCTooDFoHA2mmmKhJklrJhE7y0qckSVJr2aImSZo3bGXTsLFFTZIkqaVsUZMkzbmJWsok2aImSZLUWiZqkiRJLWWiJkmS1FImapIkSS1loiZJktRSJmqSJEktZaImSZLUUj5HTZIE+CwzqY1M1CRJ85rDSmmQeelTkiSppUzUJEmSWspETZIkqaVM1CRJklrKRE2SJKmlTNQkSZJaykRNkiSppfqWqCU5J8kdSW7oKvuLJBuSfL35ObJr2elJ1ia5OckLusqPaMrWJlner3glSZLapp8PvP0I8H7go+PK31VVf9tdkORJwLHAk4HHAf+W5InN4r8Dng+sB65JsqqqvtnHuCVJ85wPwdWg6FuiVlVfSrKox+rHACur6j7gO0nWAoc0y9ZW1a0ASVY2dU3UJEnSwJuLe9Rem+T65tLonk3ZQuB7XXXWN2WTlUuSJA28VFX/Vt5pUbu4qp7SzI8APwQKeCuwT1W9Ksn7gSur6p+aemcDn21Wc0RV/a+m/BXAM6rqtZNsbxmwDGBkZOTpK1eu7Nu+AWzatIkFCxb0dRttN+zHYNj3HzwGg7T/azZs3K7XjewCt/90hoPpg8ULd+/LegfpPbC9hv0YzMT+H3bYYaurasn48lkdlL2qbh+bTvIPwMXN7AZgv66q+zZlTFE+0fpXACsAlixZUkuXLt3xoKcwOjpKv7fRdsN+DIZ9/8FjMEj7f+IE93X14rTFmzlrzax+nWyXdccv7ct6B+k9sL2G/Rj0c/9n9dJnkn26Zl8MjPUIXQUcm+SRSfYHDgSuBq4BDkyyf5JH0OlwsGo2Y5YkSZorffsXKMn5wFJgryTrgTOApUkOonPpcx3waoCqujHJBXQ6CWwGTqmq+5v1vBb4HLATcE5V3divmCVJktqkn70+j5ug+Owp6r8NeNsE5ZcCl85gaJIkSfOCIxNIkiS1lImaJElSS5moSZIktVT7+1NLktQnDjWltjNRk6QhNFGCMuiGcZ81/3npU5IkqaVM1CRJklrKRE2SJKmlTNQkSZJaykRNkiSppUzUJEmSWspETZIkqaWmTdSSnJrk0ek4O8nXkhw+G8FJkiQNs15a1F5VVXcDhwN7Aq8AzuxrVJIkSeopUUvz+0jgY1V1Y1eZJEmS+qSXRG11ks/TSdQ+l2Q34IH+hiVJkqRexvo8GTgIuLWqfpLkscBJfY1KkjRjHONSmr96aVEr4EnA65v5XYFH9S0iSZIkAb0lah8Angkc18zfA/xd3yKSJEkS0Nulz2dU1cFJrgOoqruSPKLPcUmSJA29XlrU/jvJTnQugZJkb+xMIEmS1He9JGrvBT4N/GKStwFfAf6qr1FJkiRp+kufVXVektXA8+g8P+1FVXXTdK9Lcg7wu8AdVfWUpuwdwO8BPwe+DZxUVT9Osgi4Cbi5efmVVfWa5jVPBz4C7AJcCpxaVbUtOylJUq967SW77syj+hyJNEWLWpLHjP0AdwDnAx8Hbm/KpvMR4IhxZZcBT6mqXwf+L3B617JvV9VBzc9ruso/CPwBcGDzM36dkiRJA2mqFrXVdO5LGxuFYKwVK830AVOtuKq+1LSUdZd9vmv2SuClU60jyT7Ao6vqymb+o8CLgM9O9TpJkqRBMGmiVlX793nbrwI+0TW/f9Oz9G7gzVX1ZWAhsL6rzvqmTJIkaeBlutu9krwY+EJVbWzm9wCWVtVnpl15p0Xt4rF71LrK/wxYArykqirJI4EFVfWj5p60zwBPBp4InFlVv9O87reAN1bV706yvWXAMoCRkZGnr1y5croQd8imTZtYsGBBX7fRdsN+DIZ9/8FjMB/2f82GjX1d/8gucPtP+7qJVlq8cHdgfrwH+m3Yj8FM7P9hhx22uqqWjC/v5TlqZ1TVp8dmmpv/z6CTTG2zJCfS6WTwvLFOAVV1H3BfM706ybfpJGkbgH27Xr5vUzahqloBrABYsmRJLV26dHtC7Nno6Cj93kbbDfsxGPb9B4/BfNj/E/s8hNRpizdz1ppevk4Gy7rjlwLz4z3Qb8N+DPq5/708nmOiOtv1iUxyBPCnwNFV9ZOu8r2bZ7WR5AA6nQZurarbgLuTHJokwCuBi7Zn25IkSfNNL4natUnemeTxzc876XQ0mFKS84H/AH4lyfokJwPvB3YDLkvy9SQfaqo/B7g+ydeBC4HXVNWdzbI/BD4MrKXzSA87EkiSpKHQS8vY64A/56Eb/y8DTpnuRVV13ATFZ09S95PAJydZdi3wlImWSZIkDbJeHnh7L7B8FmKRJElSl0kTtSTvrqo3JPkXHnqG2oOq6ui+RiZJkjTkpmpR+1jz+29nIxBJkiRtaaoH3o51GDioqt7TvSzJqcAV/QxsPlizYeNW3d4d+02SJM2UXnp9njBB2YkzHIckSZLGmeoeteOA/wkckGRV16LdgDsnfpUkSZJmylT3qH0VuA3YCzirq/we4Pp+BiVJ2j6L+jwKgaTZNdU9at9Nsh74WVUN/f1okiR1G0uKT1u8eYv7lb1XWTNpynvUqup+4IEku89SPJIkSWr0MjLBJmBNksuAe8cKq+r1fYtKkiRJPSVqn2p+um31AFxJkiTNrF6GkDq3ez7JfsCxfYtIkiRJQG/PUSPJ3kn+MMmXgVFgpK9RSZIkacrnqO0GvITOs9SeSOfy5/5Vte8sxSZJkjTUprr0eQdwNfBm4CtVVUlePDthSZIkaapLn6cDjwQ+AJye5PGzE5IkSZJgikStqt5dVYcCxzRFnwEel+SNSZ44G8FJkiQNs2k7E1TVrVX1V1W1GFgCPBq4tO+RSZIkDbmeen2OqaobqurPquoJ/QpIkiRJHduUqEmSJGn2mKhJkiS11KSJWpLLm99vn71wJEmSNGaqFrV9kjwLODrJ05Ic3P3Ty8qTnJPkjiQ3dJU9JsllSW5pfu/ZlCfJe5OsTXJ99zaSnNDUvyXJCdu7s5IkSfPJVA+8fQvw58C+wDvHLSvguT2s/yPA+4GPdpUtBy6vqjOTLG/m3wi8EDiw+XkG8EHgGUkeA5xBp8dpAauTrKqqu3rYviRJ0rw1aaJWVRcCFyb586p66/asvKq+lGTRuOJjgKXN9Ll0xg59Y1P+0aoq4MokeyTZp6l7WVXdCZDkMuAI4PztiUmSJGm+mKpFDYCqemuSo4HnNEWjVXXxDmxzpKpua6a/z0MDvC8EvtdVb31TNlm5JEnSQEunAWuKCslfA4cA5zVFxwHXVNWbetpAp0Xt4qp6SjP/46rao2v5XVW1Z5KLgTOr6itN+eV0WtqWAo+qqv/TlP858NOq+tsJtrUMWAYwMjLy9JUrV/YS4na7486N3P7TLcsWL9y9r9tsm02bNrFgwYK5DmPODPv+g8egbfu/ZsPGWd/myC5s9bdwmIzf/2H7HoD2fQ5m20zs/2GHHba6qpaML5+2RQ04Cjioqh4ASHIucB3QU6I2gduT7FNVtzWXNu9oyjcA+3XV27cp28BDl0rHykcnWnFVrQBWACxZsqSWLl06UbUZ877zLuKsNVsewnXH93ebbTM6Okq/j3ObDfv+g8egbft/4vJLZn2bpy3evNXfwmEyfv+H7XsA2vc5mG393P9en6O2R9f0jv6rsAoY67l5AnBRV/krm96fhwIbm0uknwMOT7Jn00P08KZMkiRpoPXyL9BfA9cl+SIQOveqLe9l5UnOp9MatleS9XR6b54JXJDkZOC7wMub6pcCRwJrgZ8AJwFU1Z1J3gpc09T7y7GOBZI0zBbNQeuZpNnVS2eC85OMAr/RFL2xqr7fy8qr6rhJFj1vgroFnDLJes4Bzullm5IkSYOip5sKmkuQq/ociyRJkro41qckSVJLmahJkiS11JSJWpKdknxrtoKRJEnSQ6a8R62q7k9yc5Jfqqr/nK2gJEmarybqjbvuzKPmIBINgl46E+wJ3JjkauDescKqOrpvUUmSJKmnRO3P+x6FJEmSttLLc9SuSPLLwIFV9W9JfgHYqf+hSZIkDbdpe30m+QPgQuDvm6KFwGf6GJMkSZLo7fEcpwDPBu4GqKpbgF/sZ1CSJEnqLVG7r6p+PjaTZGeg+heSJEmSoLdE7YokbwJ2SfJ84J+Bf+lvWJIkSeql1+dy4GRgDfBq4FLgw/0MSpK0pYmezSVp8PXS6/OBJOcCV9G55HlzVXnpU5Ikqc+mTdSSHAV8CPg2EGD/JK+uqs/2OzhJkqRh1sulz7OAw6pqLUCSxwOXACZqkiRJfdRLZ4J7xpK0xq3APX2KR5IkSY1JW9SSvKSZvDbJpcAFdO5RexlwzSzEJkmSNNSmuvT5e13TtwO/3Uz/ANilbxFJkiQJmCJRq6qTZjMQSZIkbamXXp/7A68DFnXXr6qj+xeWJEmSeun1+RngbDqjETzQ12gkSZL0oF4StZ9V1XtnaoNJfgX4RFfRAcBbgD2AP6BzDxzAm6rq0uY1p9MZHeF+4PVV9bmZikeSJKmteknU3pPkDODzwH1jhVX1te3ZYFXdDBwEkGQnYAPwaeAk4F1V9bfd9ZM8CTgWeDLwOODfkjyxqu7fnu1LkiTNF70kaouBVwDP5aFLn9XM76jnAd+uqu8mmazOMcDKqroP+E6StcAhwH/MwPYlSZJaq5dE7WXAAVX18z5s/1jg/K751yZ5JXAtcFpV3QUsBK7sqrO+KZMkSRpomW589SSfAZZV1R0zuuHkEcB/AU+uqtuTjAA/pNNa91Zgn6p6VZL3A1dW1T81rzsb+GxVXTjBOpcBywBGRkaevnLlypkMeSt33LmR23+6Zdnihbv3dZtts2nTJhYsWDDXYcyZYd9/8BjM1v6v2bCx79vYXiO7sNXfwmHSy/4P+neDfwd2fP8PO+yw1VW1ZHx5Ly1qewDfSnINW96jtqOP53gh8LWqur1Z3+1jC5L8A3BxM7sB2K/rdfs2ZVupqhXACoAlS5bU0qVLdzDEqb3vvIs4a82Wh3Dd8f3dZtuMjo7S7+PcZsO+/+AxmK39P3H5JX3fxvY6bfHmrf4WDpOe9n/NvVsVrTvzqD5FNPv8O9C//e/lk3VGX7YMx9F12TPJPlV1WzP7YuCGZnoV8PEk76TTmeBA4Oo+xSRJktQa0yZqVXXFTG80ya7A84FXdxX/TZKD6Fz6XDe2rKpuTHIB8E1gM3CKPT4lSdIw6GVkgnvoJE8AjwAeDtxbVY/e3o1W1b3AY8eVvWKK+m8D3ra925Ok+WRRiy9zSppdvbSo7TY2nc4zNI4BDu1nUJIkSYKHbUvl6vgM8IL+hCNJkqQxvVz6fEnX7MOAJcDP+haRJEmSgN56ff5e1/RmOjf6H9OXaCRJkvSgXu5RO2k2ApEkSdKWJk3UkrxlitdVVb21D/FIkiSpMVWL2taPUYZdgZPpPFrDRE2SJKmPJk3UquqssekkuwGnAicBK4GzJnudJEmSZsaU96gleQzwx8DxwLnAwVV112wEJkmSNOymukftHcBL6AxyvriqNs1aVJIkSZrygben0RkE/c3AfyW5u/m5J8ndsxOeJEnS8JrqHrVtGrVAkiRJM8tkTJIkqaVM1CRJklrKRE2SJKmlehnrU5IkzbBFyy/ZqmzdmUfNQSRqM1vUJEmSWsoWNUmaQxO1qkjSGFvUJEmSWspETZIkqaVM1CRJklrKRE2SJKml5ixRS7IuyZokX09ybVP2mCSXJbml+b1nU54k702yNsn1SQ6eq7glSZJmy1y3qB1WVQdV1ZJmfjlweVUdCFzezAO8EDiw+VkGfHDWI5UkSZplc52ojXcMcG4zfS7woq7yj1bHlcAeSfaZg/gkSZJmzVwmagV8PsnqJMuaspGquq2Z/j4w0kwvBL7X9dr1TZkkSdLASlXNzYaThVW1IckvApcBrwNWVdUeXXXuqqo9k1wMnFlVX2nKLwfeWFXXjlvnMjqXRhkZGXn6ypUr+7oPd9y5kdt/umXZ4oW793WbbbNp0yYWLFgw12HMmWHff/AY7Oj+r9mwcQajmRsju7DV38JhMpP7P1+/Q/w7sOP7f9hhh63uuhXsQXM2MkFVbWh+35Hk08AhwO1J9qmq25pLm3c01TcA+3W9fN+mbPw6VwArAJYsWVJLly7t4x7A+867iLPWbHkI1x3f3222zejoKP0+zm027PsPHoMd3f8TB2BkgtMWb97qb+Ewmcn9n6/fIf4d6N/+z8mlzyS7JtltbBo4HLgBWAWc0FQ7AbiomV4FvLLp/XkosLHrEqkkSdJAmqt/gUaATycZi+HjVfWvSa4BLkhyMvBd4OVN/UuBI4G1wE+Ak2Y/ZEmSpNk1J4laVd0KPHWC8h8Bz5ugvIBTZiE0SZLmzKIJLoWvO/OoOYhEbdG2x3NIkiSpYaImSZLUUiZqkiRJLTW8/aklaZZNdP+RJE3FFjVJkqSWMlGTJElqKRM1SZKkljJRkyRJaik7E0hSH9hxQNJMsEVNkiSppWxRkySpxRxWarjZoiZJktRSJmqSJEktZaImSZLUUiZqkiRJLWWiJkmS1FImapIkSS3l4zkkSZpnfGTH8DBRk6Qd5CgEkvrFS5+SJEktZaImSZLUUiZqkiRJLTXriVqS/ZJ8Mck3k9yY5NSm/C+SbEjy9ebnyK7XnJ5kbZKbk7xgtmOWJEmaC3PRmWAzcFpVfS3JbsDqJJc1y95VVX/bXTnJk4BjgScDjwP+LckTq+r+WY1akiRpls16i1pV3VZVX2um7wFuAhZO8ZJjgJVVdV9VfQdYCxzS/0glSZLm1pzeo5ZkEfA04Kqm6LVJrk9yTpI9m7KFwPe6XraeqRM7SZKkgZCqmpsNJwuAK4C3VdWnkowAPwQKeCuwT1W9Ksn7gSur6p+a150NfLaqLpxgncuAZQAjIyNPX7lyZV/34Y47N3L7T7csW7xw975us202bdrEggUL5jqMOTPs+w8eg02bNvGdjcN9J8bILmz1t3CYtGX/5/L7x78DO77/hx122OqqWjK+fE4eeJvk4cAngfOq6lMAVXV71/J/AC5uZjcA+3W9fN+mbCtVtQJYAbBkyZJaunTpjMfe7X3nXcRZa7Y8hOuO7+8222Z0dJR+H+c2G/b9B4/B6OgoZ33l3rkOY06dtnjzVn8Lh0lr9n/N1u/D2RqtwL8D/dv/uej1GeBs4KaqemdX+T5d1V4M3NBMrwKOTfLIJPsDBwJXz1a8kiRJc2Uu/gV4NvAKYE2SrzdlbwKOS3IQnUuf64BXA1TVjUkuAL5Jp8foKfb4lCRJw2DWE7Wq+gqQCRZdOsVr3ga8rW9BSZIktZAjE0iSJLVUC+5+lKT5Y9HyS7aYP23xZvxTKqlfbFGTJElqKf8NlCRpQI1vAYbZe2SHZoYtapIkSS1loiZJktRSJmqSJEkt5T1qkiQNEe9bm19M1CRpEhN9oUnSbPLSpyRJUkuZqEmSJLWUiZokSVJLeY+apKHnvWiS2spETZKkIWdP0Pby0qckSVJLmahJkiS1lImaJElSS3mPmiRJ2or3rbWDLWqSJEktZaImSZLUUl76lDRUfGaatP28HDr7TNQkDSyTMknz3bxJ1JIcAbwH2An4cFWdOcchSZoj/lcvtcei5Zdw2uLNnNj1ufTzOHPmRaKWZCfg74DnA+uBa5Ksqqpvzm1kktrC1jOpPSb7PJrAbbt5kagBhwBrq+pWgCQrgWMAEzVpnjKxkoZPr597E7qHzJdEbSHwva759cAz5igWaeBtSxI1/pKHJO2oXm9v2JF6E2ljgpiqmusYppXkpcARVfW/mvlXAM+oqteOq7cMWNbM/gpwc59D2wv4YZ+30XbDfgyGff/BYzDs+w8eg2Hff/AYzMT+/3JV7T2+cL60qG0A9uua37cp20JVrQBWzFZQSa6tqiWztb02GvZjMOz7Dx6DYd9/8BgM+/6Dx6Cf+z9fHnh7DXBgkv2TPAI4Flg1xzFJkiT11bxoUauqzUleC3yOzuM5zqmqG+c4LEmSpL6aF4kaQFVdClw613GMM2uXWVts2I/BsO8/eAyGff/BYzDs+w8eg77t/7zoTCBJkjSM5ss9apIkSUPHRK0HSY5IcnOStUmWT7D8kUk+0Sy/KsmiOQizb3rY/xOT/CDJ15uf/zUXcfZLknOS3JHkhkmWJ8l7m+NzfZKDZzvGfuvhGCxNsrHrPfCW2Y6xn5Lsl+SLSb6Z5MYkp05QZ6DfBz0eg4F9HyR5VJKrk3yj2f//b4I6g/5d0MsxGOjvA+iMlpTkuiQXT7Bs5t8DVeXPFD90Oi98GzgAeATwDeBJ4+r8IfChZvpY4BNzHfcs7/+JwPvnOtY+HoPnAAcDN0yy/Ejgs0CAQ4Gr5jrmOTgGS4GL5zrOPu7/PsDBzfRuwP+d4HMw0O+DHo/BwL4PmvO6oJl+OHAVcOi4OgP7XbANx2Cgvw+affxj4OMTvdf78R6wRW16Dw5fVVU/B8aGr+p2DHBuM30h8LwkmcUY+6mX/R9oVfUl4M4pqhwDfLQ6rgT2SLLP7EQ3O3o4BgOtqm6rqq810/cAN9EZMaXbQL8PejwGA6s5r5ua2Yc3P+Nv8h7k74Jej8FAS7IvcBTw4UmqzPh7wERtehMNXzX+j9ODdapqM7AReOysRNd/vew/wP/TXO65MMl+EywfZL0eo0H3zOaSyGeTPHmug+mX5lLG0+i0JnQbmvfBFMcABvh90Fzy+jpwB3BZVU36HhjA7wKgp2MAg/198G7gT4EHJlk+4+8BEzXNhH8BFlXVrwOX8dB/ExoeX6Mz/MlTgfcBn5nbcPojyQLgk8AbquruuY5nLkxzDAb6fVBV91fVQXRGxzkkyVPmOKRZ18MxGNjvgyS/C9xRVatnc7smatPrZfiqB+sk2RnYHfjRrETXf9Puf1X9qKrua2Y/DDx9lmJri56GOBtkVXX32CWR6jzz8OFJ9prjsGZUkofTSVDOq6pPTVBl4N8H0x2DYXgfAFTVj4EvAkeMWzTI3wVbmOwYDPj3wbOBo5Oso3Mb0HOT/NO4OjP+HjBRm14vw1etAk5opl8KfKGaOwkHwLT7P+4+nKPp3LsyTFYBr2x6/R0KbKyq2+Y6qNmU5H+M3YeR5BA6f1sG5guq2bezgZuq6p2TVBvo90Evx2CQ3wdJ9k6yRzO9C/B84Fvjqg3yd0FPx2CQvw+q6vSq2reqFtH5LvxCVf2/46rN+Htg3oxMMFdqkuGrkvwlcG1VraLzx+tjSdbSueH62LmLeGb1uP+vT3I0sJnO/p84ZwH3QZLz6fRm2yvJeuAMOjfRUlUfojNixpHAWuAnwElzE2n/9HAMXgr87ySbgZ8Cxw7SFxSd/6RfAaxp7s8BeBPwSzA074NejsEgvw/2Ac5NshOdBPSCqrp4WL4LGr0cg4H+PphIv98DjkwgSZLUUl76lCRJaikTNUmSpJYyUZMkSWopEzVJkqSWMlGTJElqKRM1STskyabpa83Ytt6R5MYk7xhXfmKSB5L8elfZDc1QRzOx3VnZxyTnN0Pv/FFX2R5JftT1fLJnJqlmzEGS7J7kziTb9fc8yWiSJTOzB5Jmms9RkzSfLAMeU1X3T7BsPfBnwO/PbkhTS7JzM+bfdPX+B/AbVfWE7vKq+nGS24BfA74JPAu4rvl9AXAocHVVTTb24DbHIqk9bFGTNOOSHJTkyqZ16NNJ9mzKf6Mp+3rTOnbDBK/N2LIka5L8flO+ClgArB4rG+di4MlJfmWCdW7qmn5pko800x9J8sEm1luTLE1yTpKbxup0ve5dTWve5Un2bsoen+Rfk6xO8uUkv9q13g8luQr4m3HreVSSf2z27bokhzWLPg8sbI7Nb43bha/SScxofr9r3Py/T7beprVxVZIvAJcn2SXJymYfPw3s0tTbqYl77Lj/EZLmnImapH74KPDGZmDmNXRGMgD4R+DVzaDOE7WKAbwEOAh4KvA7wDuS7FNVRwM/raqDquoTE7zuATpJ0Zu2MdY9gWcCf0Rn+Jd3AU8GFic5qKmzK50njz8ZuKJrf1YAr6uqpwN/Anyga737As+qqj8et71TgKqqxcBxdJ70/ig6w+18u9m/L497zb/zUGJ2APDPwNjlymfRSeQmWy/AwcBLq+q3gf8N/KSqfq3Zj7GxGA8CFlbVU5p1/OPUh03SbDBRkzSjkuwO7FFVVzRF5wLPSWeMwN2q6j+a8o9PsorfBM6vqvur6nY6idFv9Lj5jwOHJtl/G0L+l2aYozXA7VW1prmMeCOwqKnzADCWHP4T8JtJFtBJkv65GVLp7+kMsTPmnye5RPubzTqoqm8B3wWeOE2MXwWe1ezXuqr6GZ3GxwV0Eq2rplnvZVV1ZzP9nK561wPXN+W3AgckeV+SI4C7p4lJ0izwHjVJA6MZm/Ys4I3jF3VNP2rcsvua3w90TY/NT/Y3suj8o/vjpnVwIvdOG3CPquqWJtH9PWAs0V1NZzzRdVW1qelrMJlpY6mqu5I8FXgB8Brg5cCrdiRuSTvOFjVJM6qqNgJ3dd1n9Qrgiqr6MXBPkmc05ZMNVvxl4Pebe6b2ptMCdPU2hPAROpdM9+4quz3JrzU9I1+8Desa8zA6A44D/E/gK1V1N/CdJC+DB++te2oP6/oycHzzmifSGdT85h5edyVwKg8lav8BvIHOZdFtWe+Xmn0gyVOAX2+m9wIeVlWfBN5M53KppDlmi5qkHfULSdZ3zb8TOAH4UJJfoHNJ7aRm2cnAPyR5gM4lzY0TrO/TdO4Z+wadlqs/rarv9xpMVf08yXuB93QVL6fT2eAHwLV0OiVsi3uBQ5K8GbiDh3qWHg98sCl/OLCyiXsqH2heswbYDJxYVfdN0yIGnYTsyCZ+6CRqB9C5LLot6/0g8I9JbgJuotMyB7CwKR/7B/706QKS1H/p3JohSf2XZEFVbWqmlwP7VNWpcxyWJLWWLWqSZtNRSU6n87fnu8CJcxuOJLWbLWqSJEktZWcCSZKkljJRkyRJaikTNUmSpJYyUZMkSWopEzVJkqSWMlGTJElqqf8f3YtYMnIYGiEAAAAASUVORK5CYII=\n",
Eva Zangerle's avatar
Eva Zangerle committed
932
933
934
935
      "text/plain": [
       "<Figure size 720x720 with 2 Axes>"
      ]
     },
936
937
938
     "metadata": {
      "needs_background": "light"
     },
Eva Zangerle's avatar
Eva Zangerle committed
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
     "output_type": "display_data"
    }
   ],
   "source": [
    "# shift + 1 due to log(0)\n",
    "news[\"log_n_tokens_content\"] = np.log10(news[\"n_tokens_content\"] + 1)\n",
    "\n",
    "fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 10))\n",
    "news[\"n_tokens_content\"].hist(ax=ax1, bins=100)\n",
    "ax1.set_xlabel(\"Number of Words in Article\")\n",
    "ax1.set_ylabel(\"Number of Articles\")\n",
    "news[\"log_n_tokens_content\"].hist(ax=ax2, bins=100)\n",
    "ax2.set_xlabel(\"Log of Number of Words\")\n",
    "ax2.set_ylabel(\"Number of Articles\");"
   ]
  },
  {
   "cell_type": "code",
957
   "execution_count": 15,
Eva Zangerle's avatar
Eva Zangerle committed
958
959
960
961
962
963
964
965
966
   "id": "8dfed8b5-cf59-4186-8f22-39b0013bf844",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.38045297261832045"
      ]
     },
967
     "execution_count": 15,
Eva Zangerle's avatar
Eva Zangerle committed
968
969
970
971
972
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
973
    "# box-cox transform\n",
Eva Zangerle's avatar
Eva Zangerle committed
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
    "# again, +1 as boxcox expects data to be positive\n",
    "# log transform\n",
    "news[\"n_tokens_content_lmbda0\"] = stats.boxcox(\n",
    "    news[\"n_tokens_content\"] + 1, lmbda=0\n",
    ")\n",
    "\n",
    "# as close to normal distribution as possible (optimal box-cox transform)\n",
    "# If the lmbda parameter is None, the second returned argument\n",
    "# is the lambda that maximizes the log-likelihood function.\n",
    "values, lambda_param = stats.boxcox(news[\"n_tokens_content\"] + 1)\n",
    "news[\"n_tokens_content_opt\"] = values\n",
    "lambda_param"
   ]
  },
  {
   "cell_type": "code",
990
   "execution_count": 16,
Eva Zangerle's avatar
Eva Zangerle committed
991
992
993
994
995
   "id": "792ae313-f920-4ddd-8f2d-d5fd6921ba24",
   "metadata": {},
   "outputs": [
    {
     "data": {
996
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmQAAANeCAYAAAC8hxLDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAABYuklEQVR4nO3df7xlZV33/9fbQRQYHU10vB3QwYZQhFQ8idh9dw9qCeqolSmEKUpMlpR1c6fgXWk/NCtNQ0HvSZAsYkTSYIDEn5PZ1wxHK0DkjhBlEBn54YFBFAY+3z/2Oro5c86cPTNnnXX23q/n47Efs9e1117rc62199mfua5rXStVhSRJkrrzgK4DkCRJGncmZJIkSR0zIZMkSeqYCZkkSVLHTMgkSZI6ZkImSZLUMRMySTstyZVJVg+wXiVZ1X5E7UhydpI/msftPTbJ1iRL5mubkkaDCZk0hpJsTHJbkgcNsO52SUlVPamqNrYY3/FJPtfW9tvYZ5KVTQK6x7TyHxy/qvpGVS2tqnvbjEXS8DEhk8ZMkpXA/wAKeOEc69qSM2LS499+aZHxSymNn1cA/wKcDbyy/4WmNee9SS5JcidwAnAc8Pqmq21Ds951SZ7TPF+S5I1J/ivJHUk2Jdl/+k6TPCjJ25N8I8lNSd6XZK+dDT7JE5J8IsmtSa5O8tJp8Z+e5OImli8k+dG+13+mec9kkjOS/GOSX07yROB9wBFNPb/Tt8uHz7a9XYj9fq1oTUvYtc22v5bkuNliSbIsyQeTfDvJ15P8zlRi1ZyDdyS5udnOSdP2szHJW5L8M/Bd4PFJXpXkqmbf1yb5lb44VyfZnOT1SbYkuTHJi5M8L8n/a479G3f1OEjangmZNH5eAZzTPJ6bZPm0138ReAvwEOCDzXp/2nS1rZlhe/8LOBZ4HvBQ4NX0fvSnexvwY8BTgFXACuD3dibwJPsAnwD+FngUcAxwRpKD+1Y7Bvh94OHANU1dSLIvcD5wKvAI4GrgmQBVdRXwGuDzTT0fNtf2dldTl9OAo6vqIU0s/7aDWN4NLAMeD/xPeufxVc1rJwJH0zu2hwEvnmGXvwSspXdevw5sAV5A75y9CnhnksP61n808GB+eJ7+Eng58DR6Lay/m+SA3TkGkn7IhEwaI0n+O/A44Lyq2gT8F70ErN8FVfXPVXVfVX1vgM3+MvA7VXV19fx7Vd0ybb+hlwz8VlXdWlV3AG+ll+zsjBcA11XVB6pqW1V9Gfg74Bf61vloVf1rVW2jl0w+pSl/HnBlVX2kee004FsD7HO27c3m5iTfmXqw/fHtdx9wSJK9qurGqrpyppWaruNjgFOr6o6qug54B70kC+ClwF9U1eaquo1e8jvd2VV1ZXPc7qmqi6vqv5pz9o/Ax+klWlPuAd5SVfcA64F9m33c0cT5FeDJcxwLSQMyIZPGyyuBj1fVzc3y3zKt2xK4fie3uT+9xG5HHgnsDWzqS1Q+1pTvjMcBh09LeI6j15ozpT/J+i6wtHn+GPrqVlUFbB5gn7Ntbzb7VtXDph70jvF2qupO4GX0WsNubLpFnzDbNoEH0mvZmvJ1eq1XMK1uzHwO71eW5Ogk/9J0P36HXsK6b98qt/RdfHBX8+9Nfa/fxdzHQtKA9ph7FUmjoBmv9VJgSZKpJONBwMOSPLmq/r0pq2lvnb483fXAjwJX7GCdm+n9gD+pqm7Yuci329c/VtVP78J7bwT2m1poWu3263t9rnrOu6q6FLi0OTd/RK9bcOqCi34302uxehy9limAxwJTx/J+daOXJG+3u6kn6V1d+3f0uj0vqKp7kvw9kN2pj6RdZwuZND5eDNwLHEyv2+0pwBOBf6L3wzybm+iNW5rN+4E/THJgen48ySP6V6iq++glG+9M8iiAJCuSPHcH202SB/c/gIuAH0vyS0ke2Dx+ohkIP5eLgUObwel7AK/l/i1rNwH7JdlzgG3ttiTLk7yoGUv2fWArvS7M7WJpWqrOA96S5CFJHkdv7N7fNOufB7yuOaYPA94wx+73pJeMfxvYluRo4Gfmr3aSdpYJmTQ+Xgl8oJkL61tTD+A9wHGZNn9WnzOBg5suwr+f4fU/p5cQfBy4vVl/pqsn30BvUPy/JLkd+CRw0A7ifSa9VrXpj5+hN57qm/S6E/+EXnKxQ0037S8AfwrcQi8x/SK9ZAjg08CVwLeS3DzjRubXA+glVd8EbqU3UP9XdxDLrwN3AtcCn6PXFXpW89pf0jv+/wF8GbgE2EYvAd9OM4bvN+idt9vojXO7cP6qJmlnpTeMQpLGSzNlxGbguKr6TNfxzKemxet9VfW4rmORNBhbyCSNjSTPTfKwZgzVG+mNmfqXjsPabUn2auYI2yPJCuBNwEe7jkvS4EzIJI2TI+hdEXozsAZ4cVXdteO3DIXQmyvtNnpdllexk3O8SeqWXZaSJEkds4VMkiSpY0M9D9m+++5bK1eubHUfd955J/vss0+r+1B3PL+jzfM72jy/o2tUz+2mTZturqoZJ8Qe6oRs5cqVfPGLX2x1Hxs3bmT16tWt7kPd8fyONs/vaPP8jq5RPbdJvj7ba3ZZSpIkdWwoE7Ika5Ksm5yc7DoUSZKk3TaUCVlVbaiqtcuWLes6FEmSpN02lAmZJEnSKBnKhMwuS0mSNEqGMiGzy1KSJI2SoUzIJEmSRokJmSRJUseGMiFzDJkkSRolQzlTf1VtADZMTEyc2HUsc1l5ysXblV33tud3EIkkSVqshjIhW6xmSr4kSZLmMpRdlpIkSaNkKBMyx5BJkqRRMpQJmfOQSZKkUTKUCZkkSdIoMSGTJEnqmFdZdsCpMCRJUj9byCRJkjo2lAmZV1lKkqRRMpQJmVdZSpKkUTKUCZkkSdIoMSGTJEnqmFdZ7oI27lnplZeSJI0vW8gkSZI6ZkImSZLUsaFMyJz2QpIkjZKhTMic9kKSJI0SB/UvYg70lyRpPAxlC5kkSdIoMSGTJEnqmAmZJElSx0zIJEmSOmZCJkmS1DGvshwyXnkpSdLosYVMkiSpYyZkkiRJHRvKhMxbJ0mSpFEylGPIqmoDsGFiYuLErmNZDBxXJknScBvKFjJJkqRRYkImSZLUMRMySZKkjg3lGDLNzXFlkiQND1vIJEmSOmYL2Rwuv2GS42dobZIkSZovtpBJkiR1zIRMkiSpY3ZZjhEH+kuStDjZQiZJktQxEzJJkqSO2WU55uzGlCSpe4umhSzJE5O8L8n5SX6163gkSZIWSqsJWZKzkmxJcsW08qOSXJ3kmiSnAFTVVVX1GuClwE+2GZckSdJi0nYL2dnAUf0FSZYApwNHAwcDxyY5uHnthcDFwCUtxyVJkrRopKra3UGyErioqg5plo8A3lxVz22WTwWoqj/ue8/FVTXjQKYka4G1AMuXL3/a+vXrW41/y62T3HRXq7tYdA5dsazrEBbM1q1bWbp0addhqCWe39Hm+R1do3pujzzyyE1VNTHTa10M6l8BXN+3vBk4PMlq4OeAB7GDFrKqWgesA5iYmKjVq1e3FScA7z7nAt5x+Zhd+3D5ndsVjepA/40bN9L2Z0jd8fyONs/v6BrHc7toMo2q2ghs7DgMSZKkBdfFVZY3APv3Le/XlA0syZok6yYnJ+c1MEmSpC50kZBdBhyY5IAkewLHABfuzAaqakNVrV22bHzGOkmSpNHV9rQX5wKfBw5KsjnJCVW1DTgJuBS4Cjivqq5sMw5JkqTFrNUxZFV17Czll7AbU1skWQOsWbVq1a5uQpIkadFYNDP17wy7LCVJ0igZyoRMkiRplAxlQuZVlpIkaZQsmnnIdkZVbQA2TExMnNh1LONi5SkXb1c2qpPFSpK00IayhUySJGmUmJBJkiR1bCgTMseQSZKkUTKUCZnTXkiSpFEylIP6tTg40F+SpPkxlC1kkiRJo8SETJIkqWNDmZA5qF+SJI2SoUzIHNQvSZJGyVAmZJIkSaPEhEySJKljTnuheTXTVBjgdBiSJO3IULaQOahfkiSNkqFMyBzUL0mSRslQJmSSJEmjxDFkWhDeZkmSpNnZQiZJktQxEzJJkqSOmZBJkiR1bCgTMqe9kCRJo2QoEzKnvZAkSaPEqyzVGa+8lCSpZyhbyCRJkkaJCZkkSVLHTMgkSZI6ZkImSZLUMQf1a1FxoL8kaRzZQiZJktQxEzJJkqSODdRlmSTAccDjq+oPkjwWeHRV/Wur0UnYjSlJGn2DtpCdARwBHNss3wGc3kpEA/DWSZIkaZQMmpAdXlWvBb4HUFW3AXu2FtUcvHWSJEkaJYMmZPckWQIUQJJHAve1FpUkSdIYGTQhOw34KPCoJG8BPge8tbWoJEmSxshAg/qr6pwkm4BnAwFeXFVXtRqZtAMO9JckjZJBr7J8BnBlVZ3eLD80yeFV9YVWo5MkSRoDg3ZZvhfY2re8tSmTJEnSbho0IUtV1dRCVd2Ht12SJEmaF4MmVdcm+Q1+2Cr2a8C17YQk7RrHlUmShtWgLWSvAZ4J3ABsBg4H1rYVlCRJ0jgZ9CrLLcAxLcciSZI0lga9yvKRwInAyv73VNWr2wlLkiRpfAw6huwC4J+ATwL3theOJEnS+Bk0Idu7qt7QaiSSJEljatBB/RcleV6rkQBJXpzkL5N8KMnPtL0/SZKkxWDQFrLXAW9McjdwN73bJ1VVPXSuNyY5C3gBsKWqDukrPwr4C2AJ8P6qeltV/T3w90keDrwd+PjOVEaazqkwJEnDYKAWsqp6SFU9oKoeXFUPbZbnTMYaZwNH9RckWQKcDhwNHAwcm+TgvlV+p3ldkiRp5KVvAv7ZV0oCHAccUFV/mGR/4L9V1b8OtJNkJXDRVAtZkiOAN1fVc5vlU5tV39Y8PlFVn5xlW2tp5kBbvnz509avXz9ICLtsy62T3HRXq7vQAjt0xbIfPN+6dStLly7tMBq1yfM72jy/o2tUz+2RRx65qaomZnpt0C7LM4D7gGcBf0jvXpanAz+xizGtAK7vW56abPbXgecAy5Ksqqr3TX9jVa0D1gFMTEzU6tWrdzGEwbz7nAt4x+XeJWqUXHfc6h8837hxI21/htQdz+9o8/yOrnE8t4NmGodX1WFJvgxQVbcl2XO+g6mq04DT5nu7kiRJi9mgCdk9zbivgh9MFHvfbuz3BmD/vuX9mrKBJFkDrFm1atVuhKBx1T/Q/+RDt3H8DAP/wcH/kqSFM+i0F6cBHwUeleQtwOeAt+7Gfi8DDkxyQNPSdgxw4aBvrqoNVbV22bJlc68sSZK0yM3ZQpbkAcDXgNcDz6Y35cWLq+qqQXaQ5FxgNbBvks3Am6rqzCQnAZfSm/birKq6cteqILXDKTMkSQtlzoSsqu5LcnpVPRX46s7uoKqOnaX8EuCSnd0e2GUpSZJGy6Bdlp9K8vPN9Beds8tSkiSNkkETsl8BPgx8P8ntSe5IcnuLcUmSJI2NOROyZgzZUc1M/Xvuwkz98y7JmiTrJicnuwpBkiRp3syZkFXVfcB7FiCWgdllKUmSRslQjiGTJEkaJY4hkyRJ6thAM/VX1UPaDmRnOO2FuuLcZJKkNgyUkCX5qZnKq+qz8xvOYKpqA7BhYmLixC72L0mSNJ8GvZflb/c9fzDwdGAT8Kx5j0iSJGnMDNpluaZ/Ocn+wLvaCEgaNnZjSpJ216AtZNNtBp44n4FIo2SmJA1M1CRJMxt0DNm7gWoWHwA8BfhSSzENEo+D+iVJ0sgYtIXsi33PtwHnVtU/txDPQBzUL0mSRsmgCdn5wPeq6l6AJEuS7F1V320vNEmSpPEw8Ez9wF59y3sBn5z/cCRJksbPoAnZg6tq69RC83zvdkKSJEkaL4MmZHcmOWxqIcnTgLvaCWluSdYkWTc5OdlVCJIkSfNm0ITsN4EPJ/mnJJ8DPgSc1FpUc6iqDVW1dtmyZV2FIEmSNG8GnRj2siRPAA5qiq6uqnvaC0saTU4iK0mayUAtZEleC+xTVVdU1RXA0iS/1m5okiRJ42HQaS9OrKrTpxaq6rYkJwJntBOWNN5sSZOk8TLoGLIlSTK1kGQJsGc7IUmSJI2XQVvILgU+lOT/NsuvAT7WTkiSJEnjZdCE7HeBE4GpcWOXAme2EpEkSdKY2WFClmQP4K3Aq4Drm+LHAtfS6+68t9XoZo/Lm4tLkqSRMdcYsj8DfgR4fFUdVlWHAQcAy4C3tx3cbJyHTJIkjZK5ErIX0LvC8o6pgub5rwLPazMwSZKkcTHXGLKqqpqh8N4k25VL2nkzTXEhSRovcyVkX0nyiqr6YH9hkpcDX20vLEnTOTeZJI2uuRKy1wIfSfJqYFNTNgHsBfxsm4FJkiSNix0mZFV1A3B4kmcBT2qKL6mqT7UemSRJ0pgY9ObinwY+3XIskiRJY2nQWydJkiSpJSZkkiRJHRv01kmLijP1S7PzakxJGj5D2ULmTP2SJGmUDGVCJkmSNEpMyCRJkjpmQiZJktSxoRzUL6nH+2BK0miwhUySJKljJmSSJEkdMyGTJEnqmAmZJElSx0zIJEmSOmZCJkmS1DETMkmSpI45D5k0BrzhuCQtboumhSzJ45OcmeT8rmORJElaSK0mZEnOSrIlyRXTyo9KcnWSa5KcAlBV11bVCW3GI0mStBi13UJ2NnBUf0GSJcDpwNHAwcCxSQ5uOQ5JkqRFK1XV7g6SlcBFVXVIs3wE8Oaqem6zfCpAVf1xs3x+Vb1kB9tbC6wFWL58+dPWr1/favxbbp3kprta3YU6tHwvPL9zOHTFsq5D2GVbt25l6dKlXYehlnh+R9eontsjjzxyU1VNzPRaF4P6VwDX9y1vBg5P8gjgLcBTk5w6laBNV1XrgHUAExMTtXr16laDffc5F/COy732YVSdfOg2z+8crjtuddch7LKNGzfS9t8IdcfzO7rG8dwuml+iqroFeE3XcUiSJC20LhKyG4D9+5b3a8oGlmQNsGbVqlXzGZekATmNhiTNry6mvbgMODDJAUn2BI4BLtyZDVTVhqpau2zZ8I5tkSRJmtL2tBfnAp8HDkqyOckJVbUNOAm4FLgKOK+qrmwzDkmSpMWs1S7Lqjp2lvJLgEt2dbt2WUqSpFGyaGbq3xl2WUqSpFEylAmZJEnSKFk0017sDLsspcWnjSsv53ubXh0qabEayhYyuywlSdIoGcqETJIkaZSYkEmSJHXMMWSSdmimcVfDvB9JWoyGsoXMMWSSJGmUDGVCJkmSNEpMyCRJkjpmQiZJktQxB/VLao0TsUrSYIayhcxB/ZIkaZQMZUImSZI0SkzIJEmSOmZCJkmS1LGhTMiSrEmybnJysutQJEmSdttQJmQO6pckSaNkKBMySZKkUWJCJkmS1DETMkmSpI6ZkEmSJHXMhEySJKljJmSSJEkd8+bikhbUTDccb+v9Jx+6jeN3c387G8s43jzd4yDtvqFsIXMeMkmSNEqGMiGTJEkaJSZkkiRJHTMhkyRJ6pgJmSRJUsdMyCRJkjpmQiZJktQxEzJJkqSOmZBJkiR1zJn6JY21+Z5lvo1Z650JfzztzF0p/DwMv6FsIXOmfkmSNEqGMiGTJEkaJSZkkiRJHTMhkyRJ6pgJmSRJUsdMyCRJkjpmQiZJktQxEzJJkqSOmZBJkiR1zIRMkiSpYyZkkiRJHTMhkyRJ6pgJmSRJUsf26DqAKUn2Ac4A7gY2VtU5HYckSZK0IFptIUtyVpItSa6YVn5UkquTXJPklKb454Dzq+pE4IVtxiVJkrSYtN1leTZwVH9BkiXA6cDRwMHAsUkOBvYDrm9Wu7fluCRJkhaNVFW7O0hWAhdV1SHN8hHAm6vquc3yqc2qm4HbquqiJOur6phZtrcWWAuwfPnyp61fv77V+LfcOslNd7W6C3Vo+V54fkfYuJ3fQ1csG2i9y2+Y3OX3LsT2BrV161aWLl26y/HM93rzbab97oxh/jzMdm7nS1fn9Mgjj9xUVRMzvdbFGLIV/LAlDHqJ2OHAacB7kjwf2DDbm6tqHbAOYGJiolavXt1epMC7z7mAd1y+aIbaaZ6dfOg2z+8IG7fze91xqwda7/hTLt7l9y7E9ga1ceNGZvoNGDSe+V5vvs20350xzJ+H2c7tfOnqnO7IovlLVVV3Aq/qOg5JkqSF1sW0FzcA+/ct79eUDSzJmiTrJid3rzlXkiRpMegiIbsMODDJAUn2BI4BLtyZDVTVhqpau2xZ+/29kiRJbWt72otzgc8DByXZnOSEqtoGnARcClwFnFdVV7YZhyRJ0mLW6hiyqjp2lvJLgEt2dbtJ1gBrVq1ataubkCRJWjSG8tZJdllKkqRRMpQJmSRJ0igZyoTMqywlSdIoGcqEzC5LSZI0Slq/dVKbknwb+HrLu9kXuLnlfag7nt/R5vkdbZ7f0TWq5/ZxVfXImV4Y6oRsIST54mz3ndLw8/yONs/vaPP8jq5xPLdD2WUpSZI0SkzIJEmSOmZCNrd1XQegVnl+R5vnd7R5fkfX2J1bx5BJkiR1zBYySZKkjpmQSZIkdcyEbAeSHJXk6iTXJDml63g0tyT7J/lMkq8kuTLJ65ryH0nyiST/2fz78KY8SU5rzvF/JDmsb1uvbNb/zySv7KpO2l6SJUm+nOSiZvmAJF9ozuOHkuzZlD+oWb6meX1l3zZObcqvTvLcjqqiaZI8LMn5Sb6a5KokR/j9HQ1Jfqv5u3xFknOTPNjv7g+ZkM0iyRLgdOBo4GDg2CQHdxuVBrANOLmqDgaeAby2OW+nAJ+qqgOBTzXL0Du/BzaPtcB7oZfAAW8CDgeeDrxp6kdAi8LrgKv6lv8EeGdVrQJuA05oyk8AbmvK39msR/OZOAZ4EnAUcEbznVf3/gL4WFU9AXgyvfPs93fIJVkB/AYwUVWHAEvofQf97jZMyGb3dOCaqrq2qu4G1gMv6jgmzaGqbqyqLzXP76D3x3wFvXP3V81qfwW8uHn+IuCD1fMvwMOS/DfgucAnqurWqroN+AS9L786lmQ/4PnA+5vlAM8Czm9WmX5+p877+cCzm/VfBKyvqu9X1deAa+h959WhJMuAnwLOBKiqu6vqO/j9HRV7AHsl2QPYG7gRv7s/YEI2uxXA9X3Lm5syDYmmifupwBeA5VV1Y/PSt4DlzfPZzrPnf/F6F/B64L5m+RHAd6pqW7Pcf65+cB6b1yeb9T2/i9MBwLeBDzRd0u9Psg9+f4deVd0AvB34Br1EbBLYhN/dHzAh00hKshT4O+A3q+r2/teqN9eL870MoSQvALZU1aauY1Er9gAOA95bVU8F7uSH3ZOA399h1XQZv4he0v0YYB9stbwfE7LZ3QDs37e8X1OmRS7JA+klY+dU1Uea4puargyaf7c05bOdZ8//4vSTwAuTXEdvGMGz6I05eljTDQL3P1c/OI/N68uAW/D8Llabgc1V9YVm+Xx6CZrf3+H3HOBrVfXtqroH+Ai977Pf3YYJ2ewuAw5srgDZk94gwgs7jklzaMYYnAlcVVV/3vfShcDUlVavBC7oK39Fc7XWM4DJpmvkUuBnkjy8+Z/dzzRl6lBVnVpV+1XVSnrfyU9X1XHAZ4CXNKtNP79T5/0lzfrVlB/TXMl1AL1B4f+6QNXQLKrqW8D1SQ5qip4NfAW/v6PgG8Azkuzd/J2eOrd+dxt7zL3KeKqqbUlOovclXgKcVVVXdhyW5vaTwC8Blyf5t6bsjcDbgPOSnAB8HXhp89olwPPoDQz9LvAqgKq6Nckf0kvMAf6gqm5dkBpoV7wBWJ/kj4Av0wwKb/796yTXALfSS+KoqiuTnEfvB2Eb8Nqqunfhw9YMfh04p/mP8LX0vpMPwO/vUKuqLyQ5H/gSve/cl+ndHuli/O4C3jpJkiSpc3ZZSpIkdcyETJIkqWMmZJIkSR0zIZMkSeqYCZkkSVLHTMgkSZI6ZkImSZLUMRMySZKkjpmQSZIkdcyETJIkqWMmZJIkSR0zIZMkSeqYCZkkSVLHTMgkSZI6ZkImSZLUMRMySZKkjpmQSZp3SfZKsiHJZJIPdx3PdEkqyaqu49iR+Y4xyRuTvH++tidpfpmQSQssyXVJntPi9q9MsrV53Jvke33Lb2xrv9O8BFgOPKKqfmGB9jkvkmxM8svDtM8kb07yNzOU/yCpq6q3VtWc++ii/pJgj64DkDS/qupJU8+TbAT+pqq2axlJskdVbWspjMcB/29Xtt9yXOqQ51aanS1k0iKR5EFJ3pXkm83jXUke1Pf665Pc2Lz2yzvbpZVkZfOeE5J8A/h0U/7hJN9quhc/m6Q/oTs7yelJLk5yR5IvJPnR5rUkeWeSLUluT3J5kkOS/D7we8DLmla5E5I8IMnvJPl6s/4HkyybLa4kxyf552b730lybZJnNuXXN9t45bRj9/Yk30hyU5L3Jdmr7/Xf7jt2r96Nc/TqJFcluS3JpUke1/daJXlNkv9sYj49SZrXliR5R5Kbk3wtyUnN+nskeQvwP4D3NMfrPX27fM5M29vF2H/QipbkwUn+JsktzbYvS7J8tliaY39Z8xm5LMkz+7Z7QPO5uSPJJ5s4p/azq5+5M5L8QxPDPyd5dHrfh9uSfDXJU3f1OEiLlQmZtHj8H+AZwFOAJwNPB34HIMlRwP8CngOsAlbvxn7+J/BE4LnN8j8ABwKPAr4EnDNt/WOA3wceDlwDvKUp/xngp4AfA5YBLwVuqao3AW8FPlRVS6vqTOD45nEk8HhgKdCfeMwU1+HAfwCPAP4WWA/8BL36v5xe0rC0WfdtTRxPaV5fQS8pnDp2/xv46aaeu9RdnORFwBuBnwMeCfwTcO601V7QxPjjzfGYqsuJwNFNfIcBL556Q1X9n2ZbJzXH66QBtre7XknvnO1P7/i+BrhrpliS/AhwMXBas+6fAxcneUSzrb8F/rV57c3AL82wv539zL2U3md/X+D7wOeb9fYFzm9ikEaKCZm0eBwH/EFVbamqb9NLgqZ+3F4KfKCqrqyq79L74dtVb66qO6vqLoCqOquq7qiq7zfbffJU61Xjo1X1r01X0zn0kgqAe4CHAE8AUlVXVdWNO6jbn1fVtVW1FTgVOCZJ/7CJ+8UFfK2qPlBV9wIfopc8/EFVfb+qPg7cDaxqWo3WAr9VVbdW1R30EsJjmu1MHbsrqupOdv3YvQb446ae25p9PKW/lQx4W1V9p6q+AXyGHx6rlwJ/UVWbq+o2egnkIGbb3kxe2rR2/eCxg3XvoZdAraqqe6tqU1XdPsu6zwf+s6r+uqq2VdW5wFeBNUkeSy9h/L2quruqPgdcOMM2duUzt6mqvgd8FPheVX2w77NgC5lGjgmZtHg8Bvh63/LXm7Kp167ve63/+c76wXubrrS3JfmvJLcD1zUv7du3/rf6nn+XXusWVfVpeq1cpwNbkqxL8tBZ9jlT3fagN/B/u7gaN/U9n/ohn162lF5r1d7Apr5E5GNN+dS++7fdH8fOeBzwF337uBUIvda4KTMeqxliGPT8zba9mZxXVQ/rf+xg3b8GLgXWN924f5rkgbOsO/3c0SyvaF67tflPwpSZ6razn7np53mm8y6NFBMyafH4Jr0f/SmPbcoAbgT263tt/93YT/U9/0XgRfS68ZYBK5vygcYqVdVpVfU04GB6XYa/PcuqM9VtG/f/oS12zc30fqSf1JeMLKuqqR/tG7n/8XrsLu7neuBXpiU9e1XV/zfAe+c6f7ta911SVfdU1e9X1cHAM+l1jb5illimnzvoHcMb6NXrR5Ls3ffaTJ/NefvMSaPKhEzqxgObgdVTjz3ojUf6nSSPTLIvvTFQU1MZnAe8KskTmx+/352nOB5Cb4zOLfRamd466BuT/ESSw5uWlTuB7wH3zbL6ucBvNQPAl/LDMWa7fcVdVd0H/CXwziSPamJbkWRqvNJ5wPFJDm6O3ZsG2Owe087PA4H3AadODUBPsizJoFN6nAe8ronrYcAbpr1+E72xdQsiyZFJDk2yBLidXhfm1LmbHsslwI8l+cXmIoSX0UvAL6qqrwNfBN6cZM8kRwBr5tj9Ln/mpFFmQiZ14xJ6rTpTjzcDf0Tvx+0/gMvpDWL+I4Cq+gd6g6o/Q29g/b802/n+bsbxQXrdTzcAX+nb7iAeSi8Ruq3Zxi3An82y7ln0usk+C3yNXvL267sW8ozeQHNcmm6wTwIHwQ+O3bvoXeF3TfPvXN7L/c/PB6rqo8Cf0Ovmux24gt5A/UH8JfBxeuf2y/TO/zbg3ub1vwBe0lxFeNqA29wdj6Y3OP524CrgH+mdn+1iqapb6LWgnUzvHL8eeEFV3dysfxxwRPPaH9Eb47Wjz+XufOakkZWqBW0plzQPkjyRXkLwIOd1Gj5JjgbeV1XTuwKHXpIPAV9trraVNCBbyKQhkeRn05tv6+H0Wmo2mIwNh/RuJfW8pstvBb1u0492Hdd8aLqufzS9ueaOojc+7O87DksaOiZk0vD4FWAL8F/0urp+tdtwtBNCbxqT2+h1WV5FM0/aCHg0sBHYSq9b/Ver6sudRiQNIbssJUmSOmYLmSRJUseG+ubi++67b61cubLVfdx5553ss88+re5D7fIcDjfP33Dz/A03z9/82rRp081V9ciZXhvqhGzlypV88YtfbHUfGzduZPXq1a3uQ+3yHA43z99w8/wNN8/f/Eoy651C7LKUJEnqmAmZJElSx0zIJEmSOmZCJkmS1DETMkmSpI6ZkEmSJHXMhEySJKljJmSSJEkdG8qELMmaJOsmJye7DkWSJGm3DeVM/VW1AdgwMTFxYtexSNKoWnnKxduVXfe253cQiTT6hjIhkyTNr5mSr0HXM0mTdp8JmSRpt5ikSbvPhEySNO+mkrSTD93G8c3zmZI0kzmpx4RMkrQg7BaVZmdCJkljZtDEaDGZLWYTNY0KEzJJ0tCyNU2jYijnIZMkSRoltpBJ0ggbxu7J3TVonW1J02JiC5kkSVLHbCGTpBExjq1h0qgwIZMkqeFFAuqKCZkkaSzZoqjFxDFkkiRJHbOFbA6X3zD5g9t+TLH5WlLXbN2RRsuiSciSPBF4HbAv8Kmqem/HIUmS5LgyLYhWuyyTnJVkS5IrppUfleTqJNckOQWgqq6qqtcALwV+ss24JEmSFpO2x5CdDRzVX5BkCXA6cDRwMHBskoOb114IXAxc0nJckiRJi0arCVlVfRa4dVrx04FrquraqrobWA+8qFn/wqo6GjiuzbgkSZIWk1RVuztIVgIXVdUhzfJLgKOq6peb5V8CDgfOB34OeBDwH1V1+izbWwusBVi+fPnT1q9f32r8W26d5Ka77l926Iplre5T82vr1q0sXbq06zC0izx/vYuLhtXyvdjub+goGJffAb9/8+vII4/cVFUTM722aAb1V9VGYOMA660D1gFMTEzU6tWrW43r3edcwDsuv/9huu64dvep+bVx40ba/pyoPZ4/trvSe5icfOi27f6GjoJx+R3w+7dwuviW3ADs37e8X1MmSdJQ8MpLzbcuJoa9DDgwyQFJ9gSOAS7cmQ0kWZNk3eTk8DbjS5IkTWm1hSzJucBqYN8km4E3VdWZSU4CLgWWAGdV1ZU7s92q2gBsmJiYOHG+Y5akrjjZqzS+Wk3IqurYWcovwaktJEmSgCG9l6VdlpIkaZQMZUJWVRuqau2yZeNx2bEkSRpto3ctsiRJHfDKS+0OEzJJ6oAD+CX1G8ouS8eQSZKkUTKUCZljyCRJ0igZyoRMkiRplJiQSZIkdWwoEzLHkEmSpFEylFdZeuskSdIwcCoMDWooEzJJGiZOcSFpLkPZZSlJkjRKTMgkSZI6ZkImSZLUsaFMyLzKUpIkjZKhHNTvVZaSpGHllZeayVC2kEmSJI0SEzJJkqSODWWXpSQtVs45JmlX2EImSZLUsaFMyLzKUpIkjZKh7LL0KktJi4Hdk5Lmy1AmZJIkjRKnwtBQdllKkiSNEhMySZKkjpmQSZIkdcyETJIkqWMO6pekAXhFpRaaA/3Hy1C2kDkPmSRJGiVDmZBV1YaqWrts2bKuQ5EkSdptQ5mQSZIkjRITMkmSpI6ZkEmSJHXMhEySJKljJmSSJEkdcx4ySZKGxGzz4Tk/2fCzhUySJKljJmSSJEkdMyGTJEnqmAmZJElSx4ZyUH+SNcCaVatWdR2KpBHkjcQlLbShbCHzXpaSJGmUDGVCJkmSNEqGsstSkiT90Ezd7M5NNlxsIZMkSeqYCZkkSVLHTMgkSZI6ZkImSZLUMQf1S5I0ghzoP1xsIZMkSeqYLWSSxpqz8ktaDGwhkyRJ6pgJmSRJUsdMyCRJkjpmQiZJktQxEzJJkqSOmZBJkiR1bFFNe5HkxcDzgYcCZ1bVx7uNSNIocYoLSYvVQC1k6Xl5kt9rlh+b5OkDvvesJFuSXDGt/KgkVye5JskpAFX191V1IvAa4GU7VxVJkqThNGgL2RnAfcCzgD8A7gD+DviJAd57NvAe4INTBUmWAKcDPw1sBi5LcmFVfaVZ5Xea1yVJ0jzxdkqLV6pq7pWSL1XVYUm+XFVPbcr+vaqePNBOkpXARVV1SLN8BPDmqnpus3xqs+rbmscnquqTs2xrLbAWYPny5U9bv379ICHssi23TnLTXfcvO3TFslb3qfm1detWli5d2nUY2kXzef4uv2FyXrajwS3fi+3+hmpx2dFvmn8/59eRRx65qaomZnpt0Baye5pWrQJI8kh6LWa7agVwfd/yZuBw4NeB5wDLkqyqqvdNf2NVrQPWAUxMTNTq1at3I4y5vfucC3jH5fc/TNcd1+4+Nb82btxI258TtWc+z9/xjiFbcCcfum27v6FaXHb0m+bfz4Uz6LfkNOCjwKOSvAV4Cb1uxXlVVac1+5IkSRobAyVkVXVOkk3As4EAL66qq3ZjvzcA+/ct79eUDSTJGmDNqlWrdiMESZKkxWHQqyyfAdxQVadX1XuAG5Icvhv7vQw4MMkBSfYEjgEuHPTNVbWhqtYuW+ZYLkmSNPwGnRj2vcDWvuWtTdmckpwLfB44KMnmJCdU1TbgJOBS4CrgvKq6cvCwJUmSRsegY8hSfZdjVtV9SQbt7jx2lvJLgEsG3L8kSdLIGrSF7Nokv5Hkgc3jdcC1bQa2I0nWJFk3Oekl7JIkafgNmpC9BngmvYH3U1NUrG0rqLk4hkySJI2SQbsdt9AbeC9JkkaIs/cvDgMlZM1EsCcCK/vfU1WvbiesOeNx2gtJkjQyBu2yvABYBnwSuLjv0Qm7LCVJ0igZ9CrLvavqDa1GIkmSNKYGbSG7KMnzWo1EkiRpTA2akL2OXlL2vSS3J7kjye1tBiZJkjQuBr3K8iFtB7IzHNQvSZJGyaD3skySlyf53WZ5/yRPbze02TmoX5IkjZJBuyzPAI4AfrFZ3gqc3kpEkiRJY2bQqywPr6rDknwZoKpuS7Jni3FJkiSNjUFbyO5JsgQo+MFEsfe1FpUkSdIYGTQhOw34KPCoJG8BPge8tbWo5uDNxSVJ0iiZMyFL8gDga8DrgT8GbgReXFUfbjm2WTmoX5IkjZI5x5BV1X1JTq+qpwJfXYCYJEmSxsqgg/o/leTngY9UVbUZkCTNh5WndHa7XWnoTX1/Tj50G8c3z6972/O7DGnkDTqG7FeADwPfd6Z+SZKk+TVnC1kzhuyoqvrnBYhHkiRp7MzZQlZV9wHvWYBYJEmSxtKgXZafSvLzSdJqNANy2gtJkjRKhnIMmdNeSJKkUTLQVZZV9ZC2A5GkXeUVlZKG3UAJWZKfmqm8qj47v+FIkiSNn0HnIfvtvucPBp4ObAKeNe8RSZIkjZlBuyzX9C8n2R94VxsBSZIkjZtBB/VPtxl44nwGIkmSNK4GHUP2bmDqlkkPAJ4CfKmlmCRJksbKoGPIvtj3fBtwbpcz9ydZA6xZtWpVVyFIkiTNm0ETsvOB71XVvQBJliTZu6q+215os6uqDcCGiYmJE7vYvyRJ0nwaNCH7FPAcYGuzvBfwceCZbQQlSZIWl5nm+7vubc/vIJLRNGhC9uCqmkrGqKqtSfZuKSZJAno/ACcfuo3j+34I/AGQNIoGvcryziSHTS0keRpwVzshSZIkjZdBW8h+E/hwkm8CAR4NvKytoCRJksbJoBPDXpbkCcBBTdHVVXVPe2FJ0sy8b6WkUTRQl2WS1wL7VNUVVXUFsDTJr7UbmiRJ0ngYtMvyxKo6fWqhqm5LciJwRjthSZKkxc4rL+fPoIP6lyTJ1EKSJcCe7YQkSZI0XgZtIbsU+FCS/9ssvwb4WDshSZIkjZdBE7LfBU4EpsaNXQqc2UpEkiRJY2aHCVmSPYC3Aq8Crm+KHwtcS6+7895Wo5s9Lu9lKUmSRsZcY8j+DPgR4PFVdVhVHQYcACwD3t52cLOpqg1VtXbZsmVdhSBJkjRv5krIXkDvCss7pgqa578KPK/NwCRJksbFXAlZVVXNUHgvsF25JEmSdt5cCdlXkrxiemGSlwNfbSckSZKk8TLXVZavBT6S5NXApqZsAtgL+Nk2A5MkSRoXO0zIquoG4PAkzwKe1BRfUlWfaj0ySSNptntROru3pHE26M3FPw18uuVYJEmSxtKgt06SJElSS0zIJEmSOmZCJkmS1DETMkmSpI4NenNxSZKkXTLT1dVeWX1/tpBJkiR1zBYySZI0b2aba1A7ZguZJElSxxZNQpbk8UnOTHJ+17FIkiQtpFa7LJOcBbwA2FJVh/SVHwX8BbAEeH9Vva2qrgVOMCGTRsfOdF3YzSFpnLXdQnY2cFR/QZIlwOnA0cDBwLFJDm45DkmSpEWr1YSsqj4L3Dqt+OnANVV1bVXdDawHXtRmHJIkSYtZF1dZrgCu71veDBye5BHAW4CnJjm1qv54pjcnWQusBVi+fDkbN25sNdjle8HJh267X1nb+9T82rp1q+esI9O/O7tipu+ghofnb7i1ef78u3x/i2bai6q6BXjNAOutA9YBTExM1OrVq1uN693nXMA7Lr//YbruuHb3qfm1ceNG2v6caGbHz8O4sJMP3bbdd1DDw/M33No8f/6W3l8XV1neAOzft7xfUyZJkjSWukjILgMOTHJAkj2BY4ALd2YDSdYkWTc5OdlKgJIkSQup1YQsybnA54GDkmxOckJVbQNOAi4FrgLOq6ord2a7VbWhqtYuW7Zs/oOWJElaYK127FfVsbOUXwJc0ua+JUmShsWimal/Z9hlKUmSRslQJmR2WUqSpFEylAmZJEnSKDEhkyRJ6thQztaXZA2wZtWqVV2HIqnhzcEl7YyZ/mZc97bndxDJ4jCULWSOIZMkSaNkKBMySZKkUWJCJkmS1DHHkEnaIceGSVL7hrKFzDFkkiRplAxlQiZJkjRKTMgkSZI6ZkImSZLUMRMySZKkjg1lQpZkTZJ1k5OTXYciSZK024YyIfMqS0mSNEqGMiGTJEkaJSZkkiRJHTMhkyRJ6pgJmSRJUse8l6UkSRp6s91397q3PX+BI9k1Q9lC5lWWkiRplAxlQiZJkjRKTMgkSZI6ZkImSZLUMRMySZKkjpmQSZIkdcyETJIkqWPOQyaNqdnm7JGkxWSmv1U7M7fY7r5/oQxlC5nzkEmSpFEylAmZJEnSKDEhkyRJ6pgJmSRJUsdMyCRJkjpmQiZJktQxEzJJkqSOmZBJkiR1zIRMkiSpYyZkkiRJHTMhkyRJ6pj3spRGzLDct02Sphv0Hru7ey/exfh3cihbyLyXpSRJGiVDmZBJkiSNEhMySZKkjpmQSZIkdcyETJIkqWMmZJIkSR0zIZMkSeqYCZkkSVLHTMgkSZI6ZkImSZLUMRMySZKkjpmQSZIkdcyETJIkqWMmZJIkSR0zIZMkSeqYCZkkSVLH9ug6gClJ9gHOAO4GNlbVOR2HJEmStCBabSFLclaSLUmumFZ+VJKrk1yT5JSm+OeA86vqROCFbcYlSZK0mLTdZXk2cFR/QZIlwOnA0cDBwLFJDgb2A65vVru35bgkSZIWjVRVuztIVgIXVdUhzfIRwJur6rnN8qnNqpuB26rqoiTrq+qYWba3FlgLsHz58qetX7++1fi33DrJTXfdv+zQFcta3afm19atW1m6dGnXYey2y2+Y3K5sps/iTOsNs+V7sd13UMPD8zfcxun8LcRv+5FHHrmpqiZmeq2LMWQr+GFLGPQSscOB04D3JHk+sGG2N1fVOmAdwMTERK1evbq9SIF3n3MB77j8/ofpuuPa3afm18aNG2n7c7IQjj/l4u3KZvoszrTeMDv50G3bfQc1PDx/w22czl/Xv+2L5ihX1Z3Aq7qOQ5IkaaF1Me3FDcD+fcv7NWUDS7ImybrJydHqmpEkSeOpi4TsMuDAJAck2RM4BrhwZzZQVRuqau2yZY7lkiRJw6/taS/OBT4PHJRkc5ITqmobcBJwKXAVcF5VXdlmHJIkSYtZq2PIqurYWcovAS5pc9+SJEnDYihvneQYMkmSNEqGMiFzDJkkSRolQ5mQSZIkjZKhTMjsspQkSaOk9VsntSnJt4Gvt7ybfYGbW96H2uU5HG6ev+Hm+Rtunr/59biqeuRMLwx1QrYQknxxtvtOaTh4Doeb52+4ef6Gm+dv4Qxll6UkSdIoMSGTJEnqmAnZ3NZ1HYB2m+dwuHn+hpvnb7h5/haIY8gkSZI6ZguZJElSx0zIJEmSOmZCtgNJjkpydZJrkpzSdTwaXJL9k3wmyVeSXJnkdV3HpJ2XZEmSLye5qOtYtHOSPCzJ+Um+muSqJEd0HZN2TpLfav5+XpHk3CQP7jqmUWZCNoskS4DTgaOBg4FjkxzcbVTaCduAk6vqYOAZwGs9f0PpdcBVXQehXfIXwMeq6gnAk/E8DpUkK4DfACaq6hBgCXBMt1GNNhOy2T0duKaqrq2qu4H1wIs6jkkDqqobq+pLzfM76P0YrOg2Ku2MJPsBzwfe33Us2jlJlgE/BZwJUFV3V9V3Og1Ku2IPYK8kewB7A9/sOJ6RZkI2uxXA9X3Lm/EHfSglWQk8FfhCx6Fo57wLeD1wX8dxaOcdAHwb+EDT5fz+JPt0HZQGV1U3AG8HvgHcCExW1ce7jWq0mZBppCVZCvwd8JtVdXvX8WgwSV4AbKmqTV3Hol2yB3AY8N6qeipwJ+A43CGS5OH0eoUOAB4D7JPk5d1GNdpMyGZ3A7B/3/J+TZmGRJIH0kvGzqmqj3Qdj3bKTwIvTHIdveECz0ryN92GpJ2wGdhcVVOt0ufTS9A0PJ4DfK2qvl1V9wAfAZ7ZcUwjzYRsdpcBByY5IMme9AYzXthxTBpQktAbv3JVVf151/Fo51TVqVW1X1WtpPfd+3RV+b/zIVFV3wKuT3JQU/Rs4CsdhqSd9w3gGUn2bv6ePhsvzGjVHl0HsFhV1bYkJwGX0ru65KyqurLjsDS4nwR+Cbg8yb81ZW+sqku6C0kaK78OnNP8h/Za4FUdx6OdUFVfSHI+8CV6V61/GW+j1CpvnSRJktQxuywlSZI6ZkImSZLUMRMySZKkjpmQSZIkdcyETJIkqWMmZJIkSR0zIZMkSeqYCZkkSVLHTMgkSZI6ZkImSZLUMRMySZKkjpmQSZIkdcyETJIkqWMmZJIkSR0zIZMkSeqYCZkkSVLHTMgkLRpJDkryb0nuSPIbXcfTL8nqJJu7jmNH2ogxyT8keeV8blPS9kzIpF2U5LokdyXZmuS2JBcn2b+lfT00ybuSfKPZ3381y/vO0/Yf22x36lFJ7uxb/h/zsZ8BvB74TFU9pKpOW6B9zovmmK0apn0m2Zjkl6eV3S+pq6qjq+qv2o5FGncmZNLuWVNVS4H/BtwEvHu+d5BkT+BTwJOAo4CHAkcAtwBPn499VNU3qmrp1KMpfnJf2T/1xbPHfOxzFo8DrtyVN7YclzrkudU4MCGT5kFVfQ84Hzh4qizJsiQfTPLtJF9P8jtJHpDkR5JsTrKmWW9pkmuSvGKWzb8CeCzws1X1laq6r6q2VNUfVtUlzTae2LR2fCfJlUle2JQ/M8nNUy13SZ7ctOY9YdC6JTk+yT8neWeSW4A3J/nRJJ9Ockuz/XOSPKzvPdcl+d9J/iPJZJIPJXlw89q+SS5qYr01yT81x+XTwJHAe5pWuR+b7RjuIK6zk5zRdLNtbV5/dNOaeFuSryZ5al+cj0nyd832v9bfTZpkr2Z7tyX5CvATgx6zacfvQUne3rRu3pTkfUn2al5b3XwWTk6yJcmNSV7V995HJNmQ5PYklyX5oySfa177bLPavzd1fVnf+2bc3i7G/4NWtCSrkvxjc05vTvKhHcWS5MTms31rkguTPKZvuz+T5OpmW2c0253az65+5n67+czdmeTMJMubz8IdST6Z5OG7cyykNpmQSfMgyd7Ay4B/6St+N7AMeDzwP+klVq+qqluBVwN/meRRwDuBf6uqD86y+ecAH6uqrbPs+4HABuDjwKOAXwfOSXJQVf1/wP8F/qpJAv4G+N2q+upOVvFw4FpgOfAWIMAfA48BngjsD7x52nteSq9F7wDgx4Hjm/KTgc3AI5vtvRGoqnoW8E/ASU2r3P9jlmO4g7im9vs7wL7A94HPA19qls8H/rw5bg9ojtu/AyuAZwO/meS5zXbeBPxo83gusKvjqN4G/BjwFGBVs6/f63v90U0dVwAnAKf3JQ6nA3c267yyP4aq+qnm6VRL5ocG2N7u+kN6n7OHA/vRtAjPFEuSZ9H7jLyUXgvy14H10EvK6Z2LU4FHAFcDz5y2r135zP088NP0jvca4B/ofb4eSe/3blGNS5Tup6p8+PCxCw/gOmAr8B3gHuCbwKHNa0uAu4GD+9b/FWBj3/K7gcuBG4BH7GA/nwDetoPX/wfwLeABfWXnAm9unj8Q2NTs62NABqhbAaua58cD35hj/RcDX552bF7et/ynwPua538AXDC1/Wnb2Qj88iDHcKa4gLOBv+xb/nXgqr7lQ4HvNM8Pn+H9pwIfaJ5fCxzV99paYPMgx6yvLPQSqh/tKzsC+FrzfDVwF7BH3+tbgGc09b8HOKjvtT8CPjfbPne0vVli3gh8l95neOqxtb+e087JB4F1wH5z1R84E/jTvuWlTX1W0kusPz/tOF3ft59d/cwd17f8d8B7p30W/n6uz74PH109bCGTds+Lq+phwIOBk4B/TPJoeq0xD6TXKjDl6/RaLaasAw4Bzq6qW2D7wfXNerfQa2GYzWOA66vqvpn2VVX30EtUDgHeUVW1C/W8vn+h6Qpan+SGJLfTa3mbfoHBt/qef5feDzLAnwHXAB9Pcm2SU2bZ5yDH8H5xNW7qe37XDMtTcTwOeEx6XaffSfIdeq0py5vXHzNt+/1xDOqRwN7Apr59fKwpn3JLVW3rW546Vo8E9pgWw0z1nW627c3mN6rqYVMP4AU7WPf19JKnf02va/zVO1j3MfQds+q18N5C7/zd79g2n8npV4fuymdu0HMvLTomZNI8qKp7q+ojwL3Afwduptca8Li+1R5LrzWMJEvoJWQfBH4tzdVpNfPg+k8Cz02yzyy7/yawf9MFN9O+VtDrfvsA8I4kD9qVKk5bfmtTdmhVPRR4Ob0f6rk3VHVHVZ1cVY8HXgj8ryTPnmHVHR7DWeLaGdfTa6l6WN/jIVX1vOb1G+l1i/Xve2fdTC8ReFLfPpb1ndsd+TawjV7X4JRWruIdVFV9q6pOrKrH0GutPCOzX1n5TfrOXfP5fQS983cjffVKEu5fT5jHz5w0DEzIpHmQnhfRG1tzVVXdC5wHvCXJQ5I8Dvhf9P5XD824KXpjyf4M+GCTpM3kr+klD3+X5AnpDYB/RJI3Jnke8AV6rSCvT/LAJKvpjZ9Z3/zQnU2v++gEej+EfzgPVX4Iva6tySbh++1B35jkBc3g8ACT9JLY+6avN8Ax3F3/CtyR5A3pDeBfkuSQJFOD988DTk3y8CT70evymsueSR489aCXMPwl8M5mvCBJVvSNU5tVU/+P0BvQvnd6F2JMv/DjJnrj6xZEkl9ojgXAbfQ+w1Pnbnos5wKvSvKU5j8BbwW+UFXXARcDhyZ5cXpXUL6W3ti3Hdnlz5w0DEzIpN2zoelavJ3ewONXVtXUtA2/Tm/80LXA54C/Bc5K8jR6icUrmh/dP6H3wzZj111VfZ/ewP6v0htPdju9ZGJfej9wd9NLwI6m1yJzRrPtr9IbxPwoegP5i96A+Fdl9+cV+33gMHoJ1cX0EodBHUiv1W8rvQH3Z1TVZ2ZZd8ZjuIsx309z7F9Ab7D91+gdu/fTGxAPvTp+vXnt4/QS47lcSa9FbOrxKuAN9Lpo/6XpavskcNCAYZ7UxPOtZv/n0rtQYcqb6V2w8Z0kLx1wm7vjJ4AvNJ/5C4HXVdW1M8VSVZ8EfpfeWK4b6V0ccQxAVd0M/AK9sYW30Ls6+Yvcv27T7c5nTlr0smvDSSRJCy3JnwCPrqqRmjm/6W7fTG9Q/mzJuTTSbCGTpEWq6aL+8aZL/On0up0/2nVc8yHJc5M8rOnOfCO97t1/meNt0shy9mNJWrweQq+b8jH0xmi9g96UIaPgCHpd0HsCX6F3xfJd3YYkdccuS0mSpI7ZZSlJktSxoe6y3HfffWvlypWt7uPOO+9kn31mm/5p9Fl/62/9rf+4Guf6j3Pdob36b9q06eaqeuRMrw11QrZy5Uq++MUvtrqPjRs3snr16lb3sZhZf+tv/Vd3HUZnrP/41n+c6w7t1T/JrHf8sMtSkiSpYyZkkiRJHTMhkyRJ6pgJmSRJUsdMyCRJkjpmQiZJktQxEzJJkqSODWVClmRNknWTk5NdhyJJkrTbhjIhq6oNVbV22bJlXYciSZK024Z6pn6pTStPuZiTD93G8adcvMP1rnvb8xcoIknSqDIhk+glX5IkdWUouywlSZJGiS1k0m6aqXXNbkxJ0s4wIdPYWYjuydn2YaImSZqJXZaSJEkdMyGTJEnqmF2WGmmL7erJQeOxa1OSxosJmbQIeaGAJI0XEzKNjMXWGjbfTNIkaXSZkElDzCRNkkaDg/olSZI6ZkImSZLUMbss53D5DZPb3VzaLqHujfp4sd3hlZySNHxsIZMkSerYoknIkjwxyfuSnJ/kV7uOR5IkaaG0mpAlOSvJliRXTCs/KsnVSa5JcgpAVV1VVa8BXgr8ZJtxSZIkLSZtjyE7G3gP8MGpgiRLgNOBnwY2A5clubCqvpLkhcCvAn/dclwaIo4Xa8egU2Y4tYYktS9V1e4OkpXARVV1SLN8BPDmqnpus3wqQFX9cd97Lq6qGf/iJ1kLrAVYvnz509avX99q/FtuneSmu+5fduiKZa3uczHZunUrS5cu7TSGy2+Y7Gzfy/diu/M/Tmar/7h8BxbD579L1n986z/OdYf26n/kkUduqqqJmV7r4irLFcD1fcubgcOTrAZ+DngQcMlsb66qdcA6gImJiVq9enVbcQLw7nMu4B2X3/8wXXdcu/tcTDZu3Ejbx3gu069yXUgnH7ptu/M/Tmar/7h8BxbD579L1n986z/OdYdu6r9ofmmqaiOwseMwJEmSFlwXV1neAOzft7xfUzawJGuSrJuc7K4rS5Ikab50kZBdBhyY5IAkewLHABfuzAaqakNVrV22bDzGsUiSpNHWapdlknOB1cC+STYDb6qqM5OcBFwKLAHOqqor24xD0vzanStfvUJTkrbXakJWVcfOUn4JOxi4P5cka4A1q1at2tVNaJFyigtJ0jhaNDP17wy7LCVJ0igZyoRMkiRplJiQSZIkdWzRzEO2MxxDJg2v2cYJOthf0jgbyoSsqjYAGyYmJk7sOhZJ88N7ZkoaZ3ZZSpIkdcyETJIkqWND2WWp0eCcY5Ik9QxlC5n3spQkSaNkKBMyJ4aVJEmjxC5LSYuWV15KGhdD2UImSZI0SkzIJEmSOjaUXZbO1D98vKJSkqTZDWULmYP6JUnSKBnKhEySJGmUDGWXpaTx5ZWXkkaRLWSSJEkdMyGTJEnq2FB2WXqVpaR+dmNKGnZD2ULmVZaSJGmUDGVCJkmSNEpMyCRJkjo2lGPItHg5I78WC8eVSRomtpBJkiR1zIRMkiSpYyZkkiRJHTMhkyRJ6thQJmRJ1iRZNzk52XUokiRJu20or7Ksqg3AhomJiRO7jkXS8PDKS0mL1VC2kEmSJI2SoWwhk6T5YquZpMXAFjJJkqSOmZBJkiR1zIRMkiSpYyZkkiRJHTMhkyRJ6phXWUrSNFNXXp586DaOb5575aWkNtlCJkmS1DETMkmSpI4NZZdlkjXAmlWrVnUdiqQx4QSykto0lC1kVbWhqtYuW7as61AkSZJ221AmZJIkSaNkKLssJWkxsBtT0nwxIdMum+nHSJIk7Ty7LCVJkjpmQiZJktQxuywlaR45rkzSrrCFTJIkqWMmZJIkSR0zIZMkSeqYY8gkqWWOK5M0F1vIJEmSOmZCJkmS1DETMkmSpI6ZkEmSJHVsUQ3qT/Ji4PnAQ4Ezq+rj3UYkSe1woL+kfq23kCU5K8mWJFdMKz8qydVJrklyCkBV/X1VnQi8BnhZ27FJkiQtBgMlZOl5eZLfa5Yfm+TpA+7jbOCoadtbApwOHA0cDByb5OC+VX6neV2SJGnkDdpCdgZwBHBss3wHAyZMVfVZ4NZpxU8Hrqmqa6vqbmA98KIm8fsT4B+q6ksDxiZJkjTUUlVzr5R8qaoOS/LlqnpqU/bvVfXkgXaSrAQuqqpDmuWXAEdV1S83y78EHA78P+CVwGXAv1XV+2bY1lpgLcDy5cuftn79+kFC2GVbbp3kprvuX3boimWt7nMx2bp1K0uXLp3xtctvmFzgaBbe8r3Y7vyPE+u/sPVfbH9bdvT9HwfjXP9xrju0V/8jjzxyU1VNzPTaoIP672m6GQsgySOB++Ypvh+oqtOA0+ZYZx2wDmBiYqJWr14932Hcz7vPuYB3XH7/w3Tdce3uczHZuHEjsx3j42cYlDxqTj5023bnf5xY/4Wt/2x/W2a6AGDG98/zRQE7+v6Pg3Gu/zjXHbqp/6BdlqcBHwUeleQtwOeAt+7Gfm8A9u9b3q8pkyRJGjsD/devqs5Jsgl4NhDgxVV11W7s9zLgwCQH0EvEjgF+cdA3J1kDrFm1atVuhKCdMej/0CVJ0s4bKCFL8gzgyqo6vVl+aJLDq+oLA7z3XGA1sG+SzcCbqurMJCcBlwJLgLOq6spBg66qDcCGiYmJEwd9jyQtdv7HRxpfgw6OeC9wWN/y1hnKZlRVx85SfglwyYD7lyRJGlmDjiFL9V2OWVX30eEs/0nWJFk3OTn6V/lJkqTRN2hCdm2S30jywObxOuDaNgPbkaraUFVrly1bXJeIS5Ik7YpBE7LXAM+kNwB/M705w9a2FZQkSdI4GfQqyy30roSUJEnSPBv0KstHAicCK/vfU1WvbiesOeNx2gtJkjQyBu2yvABYBnwSuLjv0QnHkEmSpFEy6JWSe1fVG1qNRJIkaUwN2kJ2UZLntRqJJEnSmBq0hex1wBuT3A3cTe/2SVVVD20tsh1wDJkkDWam2f/n+ybkknbfQC1kVfWQqnpAVT24qh7aLHeSjDXxOIZMkiSNjIESsvS8PMnvNsv7J3l6u6FJkiSNh0HHkJ0BHAH8YrO8FTi9lYgkSZLGzKBjyA6vqsOSfBmgqm5LsmeLcUmSdtJM48UkDYdBW8juSbIEKPjBRLH3tRaVJEnSGBk0ITsN+CjwqCRvAT4HvLW1qOaQZE2SdZOTk12FIEmSNG/m7LJM8gDga8DrgWfTm/LixVV1VcuxzaqqNgAbJiYmTuwqhlHW3+1x8qHbON5uEGmkOBWGtPjMmZBV1X1JTq+qpwJfXYCYJEmSxsqgXZafSvLzSdJqNJIkSWNo0ITsV4APA99PcnuSO5Lc3mJckiRJY2PQMWRHVdU/L0A8kiRJY2fOFrKqug94zwLEMjCvspQkSaNkKMeQeS9LSZI0Sgadqf9XgP8FbEvyPXpTX1SXNxjX/HBmb0kw89+Cmaa9cXoMqR0DJWRV9ZC2A5EkSRpXAyVkSX5qpvKq+uz8hiNJkjR+Bu2y/O2+5w8Gng5sAp417xFJkiSNmUG7LNf0LyfZH3hXGwFJkiSNm0GvspxuM/DE+QxEkiRpXA06huzdQDWLDwCeAnyppZgGiWcNsGbVqlVdhSBJkjRvBh1D9sW+59uAc7ucub+qNgAbJiYmTuwqBkmSpPkyaEJ2PvC9qroXIMmSJHtX1XfbC02SJGk8DJqQfQp4DrC1Wd4L+DjwzDaCkiQtTjNNIOtksdLuG3RQ/4OraioZo3m+dzshSZIkjZdBE7I7kxw2tZDkacBd7YQkSZI0XgbtsvxN4MNJvknvPpaPBl7WVlCSJEnjZNCJYS9L8gTgoKbo6qq6p72wJEmSxseg85C9Fjinqq5olh+e5NiqOqPV6CRJi54D/aXdN+gYshOr6jtTC1V1G+AcYJIkSfNg0IRsSZJMLSRZAuzZTkiSJEnjZdBB/ZcCH0ryf5vl1wAfayckSZKk8TJoQva79Loof61ZvhQ4s5WIBuC9LCVJ0ijZYZdlkj2S/CnwDeB44ADgfwIHzvXeNlXVhqpau2zZsq5CkCRJmjdztZD9GfAQ4PFVdQdAkocA7wDeDryu3fA0n2a6EkqSJHVvrlauF9C7wvKOqYLm+a8Cz2szMEmSpHExV0JWVVUzFN4LbFcuSZKknTdXl+VXkryiqj7YX5jk5cBX2wtLkjTMnCxW2jlzJWSvBT6S5NXApqZsAtgL+Nk2A5MkSRoXO0zIquoG4PAkzwKe1BRfUlWfaj0ySZKkMTHozcU/DXy65VgkSZLG0qATw2rIOMWFJEnDo7PJXSVJktRjQiZJktQxEzJJkqSOOYZMkrQgnJtMmp0tZJIkSR0zIZMkSeqYCZkkSVLHFs0YsiSPB/4PsKyqXtJ1PJKkbjjWTOOo1RayJGcl2ZLkimnlRyW5Osk1SU4BqKprq+qENuORJElajNrusjwbOKq/IMkS4HTgaOBg4NgkB7cchyRJ0qKVqmp3B8lK4KKqOqRZPgJ4c1U9t1k+FaCq/rhZPn9HXZZJ1gJrAZYvX/609evXtxr/llsnuemu+5cdumJZq/ucD5ffMDkv21m+F9vVf5xYf+tv/dvdx0x/T3fm79eg79+Vv9tbt25l6dKlO/2+UTDOdYf26n/kkUduqqqJmV7rYgzZCuD6vuXNwOFJHgG8BXhqklOnErTpqmodsA5gYmKiVq9e3Wqw7z7nAt5x+f0P03XHtbvP+XD8PN3L8uRDt21X/3Fi/a2/9W+3/jP9Pd2Zv1+Dvn9X/m5v3LiRtn9jFqtxrjt0U/9F85emqm4BXtN1HJIkSQuti4TsBmD/vuX9mrKBJVkDrFm1atV8xiVJWmAzXVEpjaMu5iG7DDgwyQFJ9gSOAS7cmQ1U1YaqWrts2eIfyyVJkjSXtqe9OBf4PHBQks1JTqiqbcBJwKXAVcB5VXVlm3FIkiQtZq12WVbVsbOUXwJc0ua+JUmShsWiGdS/MxxDJklqQ/+YtpMP3cbxp1zsXQK0IIbyXpaOIZMkSaNkKBMySZKkUWJCJkmS1LGhTMiSrEmybnJyfm4PJEmS1KWhTMgcQyZJkkbJUCZkkiRJo8SETJIkqWPOQzYCvBecpHHl3z+NiqFsIXMMmSRJGiVDmZBJkiSNEhMySZKkjpmQSZIkdcxB/ZKkseQFAVpMhrKFzEH9kiRplAxlQiZJkjRKTMgkSZI6ZkImSZLUMRMySZKkjpmQSZIkdcxpLyRJI2++p7iYaXvXve3587oPjZehbCFz2gtJkjRKhjIhkyRJGiUmZJIkSR0zIZMkSeqYCZkkSVLHTMgkSZI6ZkImSZLUMechGzLzPZeOJGl+dDk32WKfF22xx7cYDGULmfOQSZKkUTKUCZkkSdIoMSGTJEnqmAmZJElSx0zIJEmSOmZCJkmS1DETMkmSpI6ZkEmSJHXMhEySJKljJmSSJEkdMyGTJEnqmPeylCRpB+b7HsLe17HH43B/Q9lC5r0sJUnSKBnKhEySJGmUmJBJkiR1zIRMkiSpYyZkkiRJHTMhkyRJ6pgJmSRJUsdMyCRJkjpmQiZJktQxEzJJkqSOmZBJkiR1zIRMkiSpYyZkkiRJHTMhkyRJ6pgJmSRJUsdMyCRJkjq2R9cBTEmyD3AGcDewsarO6TgkSZKkBdFqC1mSs5JsSXLFtPKjklyd5JokpzTFPwecX1UnAi9sMy5JkqTFpO0uy7OBo/oLkiwBTgeOBg4Gjk1yMLAfcH2z2r0txyVJkrRopKra3UGyErioqg5plo8A3lxVz22WT21W3QzcVlUXJVlfVcfMsr21wFqA5cuXP239+vWtxr/l1kluuuv+ZYeuWNbqPqdcfsPkguxnR5bvxXb1HyfW3/pb/66j6M5irP9svz8z/V7szm/VTL99g5ppv7vzezbo9namvnO9f+vWrSxdunTg7Q3qyCOP3FRVEzO91sUYshX8sCUMeonY4cBpwHuSPB/YMNubq2odsA5gYmKiVq9e3V6kwLvPuYB3XH7/w3Tdce3uc8rxp1y8IPvZkZMP3bZd/ceJ9bf+1t/6Lyaz/f7M9HuxO79VM/32DWqm/e7O79mg29uZ+s71/o0bN9J2fjHdovmkVdWdwKu6jkOSJGmhdTHtxQ3A/n3L+zVlA0uyJsm6ycnuu/QkSZJ2VxcJ2WXAgUkOSLIncAxw4c5soKo2VNXaZcsWZiyXJElSm9qe9uJc4PPAQUk2JzmhqrYBJwGXAlcB51XVlW3GIUmStJi1Ooasqo6dpfwS4JJd3W6SNcCaVatW7eomJEmSFo2hvHWSXZaSJGmUDGVCJkmSNEpMyCRJkjo2lAmZ015IkqRR0vqtk9qU5NvA11vezb7AzS3vYzGz/tbf+o8v6z++9R/nukN79X9cVT1ypheGOiFbCEm+ONt9p8aB9bf+1t/6dx1HV8a5/uNcd+im/kPZZSlJkjRKTMgkSZI6ZkI2t3VdB9Ax6z/erP94s/7ja5zrDh3U3zFkkiRJHbOFTJIkqWMmZJIkSR0zIduBJEcluTrJNUlO6TqetiU5K8mWJFf0lf1Ikk8k+c/m34d3GWObkuyf5DNJvpLkyiSva8pH/hgkeXCSf03y703df78pPyDJF5rvwIeS7Nl1rG1KsiTJl5Nc1CyPTf2TXJfk8iT/luSLTdnIf/anJHlYkvOTfDXJVUmOGJf6JzmoOe9Tj9uT/Oa41B8gyW81f/uuSHJu8zdxQb//JmSzSLIEOB04GjgYODbJwd1G1bqzgaOmlZ0CfKqqDgQ+1SyPqm3AyVV1MPAM4LXNOR+HY/B94FlV9WTgKcBRSZ4B/AnwzqpaBdwGnNBdiAvidcBVfcvjVv8jq+opffMvjcNnf8pfAB+rqicAT6b3ORiL+lfV1c15fwrwNOC7wEcZk/onWQH8BjBRVYcAS4BjWODvvwnZ7J4OXFNV11bV3cB64EUdx9SqqvoscOu04hcBf9U8/yvgxQsZ00Kqqhur6kvN8zvo/UFewRgcg+rZ2iw+sHkU8Czg/KZ8JOs+Jcl+wPOB9zfLYYzqP4uR/+wDJFkG/BRwJkBV3V1V32FM6j/Ns4H/qqqvM1713wPYK8kewN7AjSzw99+EbHYrgOv7ljc3ZeNmeVXd2Dz/FrC8y2AWSpKVwFOBLzAmx6Dprvs3YAvwCeC/gO9U1bZmlVH/DrwLeD1wX7P8CMar/gV8PMmmJGubsrH47AMHAN8GPtB0Wb8/yT6MT/37HQOc2zwfi/pX1Q3A24Fv0EvEJoFNLPD334RMA6veHCkjP09KkqXA3wG/WVW39782ysegqu5tuiz2o9dC/IRuI1o4SV4AbKmqTV3H0qH/XlWH0Rum8dokP9X/4ih/9um1jhwGvLeqngrcybTuuRGvPwDNGKkXAh+e/too178ZG/cieon5Y4B92H74TutMyGZ3A7B/3/J+Tdm4uSnJfwNo/t3ScTytSvJAesnYOVX1kaZ4rI5B01XzGeAI4GFNEz6M9nfgJ4EXJrmO3vCEZ9EbUzQu9Z9qJaCqttAbP/R0xuezvxnYXFVfaJbPp5egjUv9pxwNfKmqbmqWx6X+zwG+VlXfrqp7gI/Q+5uwoN9/E7LZXQYc2FxlsSe9ZtwLO46pCxcCr2yevxK4oMNYWtWMGToTuKqq/rzvpZE/BkkemeRhzfO9gJ+mN4buM8BLmtVGsu4AVXVqVe1XVSvpfdc/XVXHMSb1T7JPkodMPQd+BriCMfjsA1TVt4DrkxzUFD0b+ApjUv8+x/LD7koYn/p/A3hGkr2b34Gp87+g339n6t+BJM+jN65kCXBWVb2l24jaleRcYDWwL3AT8Cbg74HzgMcCXwdeWlXTB/6PhCT/Hfgn4HJ+OI7ojfTGkY30MUjy4/QGrS6h9x+186rqD5I8nl6L0Y8AXwZeXlXf7y7S9iVZDfzvqnrBuNS/qedHm8U9gL+tqrckeQQj/tmfkuQp9C7o2BO4FngVzXeB8aj/PvQSk8dX1WRTNk7n//eBl9G72v7LwC/TGzO2YN9/EzJJkqSO2WUpSZLUMRMySZKkjpmQSZIkdcyETJIkqWMmZJIkSR0zIZMkSeqYCZkkSVLH/n8jP9q/61BISwAAAABJRU5ErkJggg==\n",
Eva Zangerle's avatar
Eva Zangerle committed
997
998
999
1000
      "text/plain": [
       "<Figure size 720x1080 with 3 Axes>"
      ]
     },
1001
1002
1003
     "metadata": {
      "needs_background": "light"
     },
Eva Zangerle's avatar
Eva Zangerle committed
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, (ax1, ax2, ax3) = plt.subplots(3, 1, figsize=(10, 15))\n",
    "\n",
    "news[\"n_tokens_content\"].hist(ax=ax1, bins=100)\n",
    "ax1.set_yscale(\"log\")\n",
    "ax1.set_title(\"Article Length Histogram\")\n",
    "ax1.set_xlabel(\"\")\n",
    "ax1.set_ylabel(\"Occurrence\")\n",
    "\n",
    "news[\"n_tokens_content_lmbda0\"].hist(ax=ax2, bins=100)\n",
    "ax2.set_yscale(\"log\")\n",
    "ax2.set_title(\"Log Transformed Length Histogram\")\n",
    "ax2.set_xlabel(\"\")\n",
    "ax2.set_ylabel(\"Occurrence\")\n",
    "\n",
    "news[\"n_tokens_content_opt\"].hist(ax=ax3, bins=100)\n",
    "ax3.set_yscale(\"log\")\n",
    "ax3.set_title(\"Box-Cox Transformed Length Histogram\")\n",
    "ax3.set_xlabel(\"\")\n",
    "ax3.set_ylabel(\"Occurrence\");"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d978ee33-f2e4-4941-a369-f053466316de",
   "metadata": {},
   "source": [
    "### Discretization"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7be77ad3-8608-4577-a57c-6bf757a9e75a",
   "metadata": {},
   "source": [
    "In a first step, we will look at synthetic count data: we create uniformly distributed random counts (once small values, once with a wide range)."
   ]
  },
  {
   "cell_type": "code",
1047
   "execution_count": 17,
Eva Zangerle's avatar
Eva Zangerle committed
1048
1049
1050
1051
1052
1053
   "id": "a72e595e-dbf2-4247-b9cc-4a258ea6e3a6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
1054
1055
       "array([ 6, 19, 29, 68, 78, 47, 37, 32, 41, 50, 29, 26, 70, 93, 76, 53, 36,\n",
       "       24, 88,  1])"
Eva Zangerle's avatar
Eva Zangerle committed
1056
1057
      ]
     },
1058
     "execution_count": 17,
Eva Zangerle's avatar
Eva Zangerle committed
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# uniformly distributed, small values\n",
    "small_counts = np.random.randint(0, 100, 20)\n",
    "small_counts"
   ]
  },
  {
   "cell_type": "code",
1071
   "execution_count": 18,
Eva Zangerle's avatar
Eva Zangerle committed
1072
1073
1074
1075
1076
1077
   "id": "82b66c99-f869-4330-a93e-522ec78ea7b2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
1078
       "array([0, 1, 2, 6, 7, 4, 3, 3, 4, 5, 2, 2, 7, 9, 7, 5, 3, 2, 8, 0])"
Eva Zangerle's avatar
Eva Zangerle committed
1079
1080
      ]
     },
1081
     "execution_count": 18,
Eva Zangerle's avatar
Eva Zangerle committed
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# fixed width binning by division\n",
    "np.floor_divide(small_counts, 10)"
   ]
  },
  {
   "cell_type": "code",
1093
   "execution_count": 19,
Eva Zangerle's avatar
Eva Zangerle committed
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
   "id": "70968305-2047-46fe-a71c-ea4e87d2fe1e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# counts spanning a wide value range\n",
    "large_counts = [\n",
    "    296,\n",
    "    8286,\n",
    "    64011,\n",
    "    80,\n",
    "    3,\n",
    "    725,\n",
    "    867,\n",
    "    2215,\n",
    "    7689,\n",
    "    11495,\n",
    "    91897,\n",
    "    44,\n",
    "    28,\n",
    "    7971,\n",
    "    926,\n",
    "    122,\n",
    "    22222,\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
1122
   "execution_count": 20,
Eva Zangerle's avatar
Eva Zangerle committed
1123
1124
1125
1126
1127
1128
1129
1130
1131
   "id": "03396b9f-c3bb-4f18-8930-30253bf4470b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([2., 3., 4., 1., 0., 2., 2., 3., 3., 4., 4., 1., 1., 3., 2., 2., 4.])"
      ]
     },
1132
     "execution_count": 20,
Eva Zangerle's avatar
Eva Zangerle committed
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# fixed width binning via powers of 10 (0-9, 10-99, 100-999, 1000-999, etc.)\n",
    "np.floor(np.log10(large_counts))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "be6e9522-b474-4d1e-8a90-3952acceae56",
   "metadata": {},
   "source": [
    "In the next step, we look at quantile binning to avoid empty bins."
   ]
  },
  {
   "cell_type": "code",
1152
   "execution_count": 21,
Eva Zangerle's avatar
Eva Zangerle committed
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
   "id": "09f2515a-439a-40f9-a350-dffeda1b27a0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.1      2.0\n",
       "0.2      5.0\n",
       "0.3      8.0\n",
       "0.4     13.0\n",
       "0.5     21.0\n",
       "0.6     34.0\n",
       "0.7     56.0\n",
       "0.8    104.0\n",
       "0.9    230.0\n",
       "Name: rating, dtype: float64"
      ]
     },
1171
     "execution_count": 21,
Eva Zangerle's avatar
Eva Zangerle committed
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# compute 10 deciles\n",
    "deciles = rating_counts.quantile([0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])\n",
    "deciles"
   ]
  },
  {
   "cell_type": "code",
1184
   "execution_count": 22,
Eva Zangerle's avatar
Eva Zangerle committed
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
   "id": "3c6a23d2-0fb2-4e87-b158-9833176856cf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "movieID\n",
       "1        (230.0, 1670.0]\n",
       "2        (230.0, 1670.0]\n",
       "3        (230.0, 1670.0]\n",
       "4           (34.0, 56.0]\n",
       "5         (104.0, 230.0]\n",
       "              ...       \n",
       "65088       (0.999, 2.0]\n",
       "65091       (0.999, 2.0]\n",
       "65126       (0.999, 2.0]\n",
       "65130       (0.999, 2.0]\n",
       "65133         (2.0, 5.0]\n",
       "Name: rating, Length: 10109, dtype: category\n",
       "Categories (10, interval[float64, right]): [(0.999, 2.0] < (2.0, 5.0] < (5.0, 8.0] < (8.0, 13.0] ... (34.0, 56.0] < (56.0, 104.0] < (104.0, 230.0] < (230.0, 1670.0]]"
      ]
     },
1207
     "execution_count": 22,
Eva Zangerle's avatar
Eva Zangerle committed
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# actually use deciles to bin data\n",
    "pd.qcut(rating_counts, 10)"
   ]
  },
  {
   "cell_type": "code",
1219
   "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1220
1221
1222
1223
1224
1225
1226
1227
1228
   "id": "fe53b730-6fe8-41b4-b70d-0eec41627b10",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
1229
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1230
1231
1232
1233
1234
1235
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1236
       "<matplotlib.legend.Legend at 0x7f6c0748f1c0>"
Eva Zangerle's avatar
Eva Zangerle committed
1237
1238
      ]
     },
1239
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1240
1241
1242
1243
1244
1245
1246
1247
1248
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1249
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1250
1251
1252
1253
1254
1255
1256
1257
1258
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Occurrence (log)')"
      ]
     },
1259
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1260
1261
1262
1263
1264
1265
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1266
       "<matplotlib.legend.Legend at 0x7f6c04b385b0>"
Eva Zangerle's avatar
Eva Zangerle committed
1267
1268
      ]
     },
1269
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1270
1271
1272
1273
1274
1275
1276
1277
1278
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1279
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1280
1281
1282
1283
1284
1285
1286
1287
1288
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Occurrence (log)')"
      ]
     },
1289
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1290
1291
1292
1293
1294
1295
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1296
       "<matplotlib.legend.Legend at 0x7f6c04992310>"
Eva Zangerle's avatar
Eva Zangerle committed
1297
1298
      ]
     },
1299
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1300
1301
1302
1303
1304
1305
1306
1307
1308
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1309
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1310
1311
1312
1313
1314
1315
1316
1317
1318
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Occurrence (log)')"
      ]
     },
1319
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1320
1321
1322
1323
1324
1325
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1326
       "<matplotlib.legend.Legend at 0x7f6c0748feb0>"
Eva Zangerle's avatar
Eva Zangerle committed
1327
1328
      ]
     },
1329
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1330
1331
1332
1333
1334
1335
1336
1337
1338
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1339
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1340
1341
1342
1343
1344
1345
1346
1347
1348
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Occurrence (log)')"
      ]
     },
1349
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1350
1351
1352
1353
1354
1355
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1356
       "<matplotlib.legend.Legend at 0x7f6c0748fe80>"
Eva Zangerle's avatar
Eva Zangerle committed
1357
1358
      ]
     },
1359
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1360
1361
1362
1363
1364
1365
1366
1367
1368
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1369
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1370
1371
1372
1373
1374
1375
1376
1377
1378
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Occurrence (log)')"
      ]
     },
1379
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1380
1381
1382
1383
1384
1385
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1386
       "<matplotlib.legend.Legend at 0x7f6c04b38c10>"
Eva Zangerle's avatar
Eva Zangerle committed
1387
1388
      ]
     },
1389
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1390
1391
1392
1393
1394
1395
1396
1397
1398
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1399
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1400
1401
1402
1403
1404
1405
1406
1407
1408
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Occurrence (log)')"
      ]
     },
1409
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1410
1411
1412
1413
1414
1415
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1416
       "<matplotlib.legend.Legend at 0x7f6c04b38b20>"
Eva Zangerle's avatar
Eva Zangerle committed
1417
1418
      ]
     },
1419
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1420
1421
1422
1423
1424
1425
1426
1427
1428
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1429
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1430
1431
1432
1433
1434
1435
1436
1437
1438
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Occurrence (log)')"
      ]
     },
1439
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1440
1441
1442
1443
1444
1445
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1446
       "<matplotlib.legend.Legend at 0x7f6c04b38c10>"
Eva Zangerle's avatar
Eva Zangerle committed
1447
1448
      ]
     },
1449
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1450
1451
1452
1453
1454
1455
1456
1457
1458
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1459
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1460
1461
1462
1463
1464
1465
1466
1467
1468
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Occurrence (log)')"
      ]
     },
1469
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1470
1471
1472
1473
1474
1475
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1476
       "<matplotlib.legend.Legend at 0x7f6c04b380d0>"
Eva Zangerle's avatar
Eva Zangerle committed
1477
1478
      ]
     },
1479
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1480
1481
1482
1483
1484
1485
1486
1487
1488
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1489
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1490
1491
1492
1493
1494
1495
1496
1497
1498
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Occurrence (log)')"
      ]
     },
1499
     "execution_count": 23,
Eva Zangerle's avatar
Eva Zangerle committed
1500
1501
1502
1503
1504
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
1505
      "image/png": "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\n",
Eva Zangerle's avatar
Eva Zangerle committed
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Visualize the deciles on the histogram\n",
    "sns.set_style(\"white\")\n",
    "fig, ax = plt.subplots()\n",
    "rating_counts.hist(ax=ax, bins=100)\n",
    "for pos in deciles:\n",
    "    handle = plt.axvline(pos, color=\"r\")\n",
    "    ax.legend([handle], [\"deciles\"])\n",
    "    ax.set_yscale(\"log\")\n",
    "    ax.set_xscale(\"log\")\n",
    "    ax.set_xlabel(\"Review Count (log)\")\n",
    "    ax.set_ylabel(\"Occurrence (log)\");"
   ]
  },
  {
   "cell_type": "code",
1530
   "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1531
1532
1533
1534
1535
1536
1537
1538
1539
   "id": "752c20ea-849a-4c99-886f-4c202214f0d9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
1540
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1541
1542
1543
1544
1545
1546
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1547
       "<matplotlib.legend.Legend at 0x7f6c0454ad30>"
Eva Zangerle's avatar
Eva Zangerle committed
1548
1549
      ]
     },
1550
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1551
1552
1553
1554
1555
1556
1557
1558
1559
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1560
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1561
1562
1563
1564
1565
1566
1567
1568
1569
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Occurrence')"
      ]
     },
1570
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1571
1572
1573
1574
1575
1576
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1577
       "<matplotlib.legend.Legend at 0x7f6bfd9150a0>"
Eva Zangerle's avatar
Eva Zangerle committed
1578
1579
      ]
     },
1580
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1581
1582
1583
1584
1585
1586
1587
1588
1589
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1590
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1591
1592
1593
1594
1595
1596
1597
1598
1599
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Occurrence')"
      ]
     },
1600
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1601
1602
1603
1604
1605
1606
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1607
       "<matplotlib.legend.Legend at 0x7f6bfda1b640>"
Eva Zangerle's avatar
Eva Zangerle committed
1608
1609
      ]
     },
1610
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1611
1612
1613
1614
1615
1616
1617
1618
1619
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1620
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1621
1622
1623
1624
1625
1626
1627
1628
1629
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Occurrence')"
      ]
     },
1630
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1631
1632
1633
1634
1635
1636
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1637
       "<matplotlib.legend.Legend at 0x7f6c0473b820>"
Eva Zangerle's avatar
Eva Zangerle committed
1638
1639
      ]
     },
1640
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1641
1642
1643
1644
1645
1646
1647
1648
1649
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1650
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1651
1652
1653
1654
1655
1656
1657
1658
1659
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Occurrence')"
      ]
     },
1660
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1661
1662
1663
1664
1665
1666
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1667
       "<matplotlib.legend.Legend at 0x7f6bfda06d00>"
Eva Zangerle's avatar
Eva Zangerle committed
1668
1669
      ]
     },
1670
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1671
1672
1673
1674
1675
1676
1677
1678
1679
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1680
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1681
1682
1683
1684
1685
1686
1687
1688
1689
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Occurrence')"
      ]
     },
1690
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1691
1692
1693
1694
1695
1696
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1697
       "<matplotlib.legend.Legend at 0x7f6bfda12070>"
Eva Zangerle's avatar
Eva Zangerle committed
1698
1699
      ]
     },
1700
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1701
1702
1703
1704
1705
1706
1707
1708
1709
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1710
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1711
1712
1713
1714
1715
1716
1717
1718
1719
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Occurrence')"
      ]
     },
1720
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1721
1722
1723
1724
1725
1726
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1727
       "<matplotlib.legend.Legend at 0x7f6bfda1b9d0>"
Eva Zangerle's avatar
Eva Zangerle committed
1728
1729
      ]
     },
1730
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1731
1732
1733
1734
1735
1736
1737
1738
1739
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1740
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1741
1742
1743
1744
1745
1746
1747
1748
1749
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Occurrence')"
      ]
     },
1750
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1751
1752
1753
1754
1755
1756
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1757
       "<matplotlib.legend.Legend at 0x7f6bfdb86f70>"
Eva Zangerle's avatar
Eva Zangerle committed
1758
1759
      ]
     },
1760
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1761
1762
1763
1764
1765
1766
1767
1768
1769
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1770
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1771
1772
1773
1774
1775
1776
1777
1778
1779
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Occurrence')"
      ]
     },
1780
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1781
1782
1783
1784
1785
1786
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
1787
       "<matplotlib.legend.Legend at 0x7f6bfda12730>"
Eva Zangerle's avatar
Eva Zangerle committed
1788
1789
      ]
     },
1790
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1791
1792
1793
1794
1795
1796
1797
1798
1799
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Review Count (log)')"
      ]
     },
1800
     "execution_count": 24,
Eva Zangerle's avatar
Eva Zangerle committed
1801
1802
1803