1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
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
528
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
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
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
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
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
837
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
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
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
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
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
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
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
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
|
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# A typical machine workflow\n",
"\n",
"_this notebook gives an example of a machine learning workflow. We will also illustrate the machine learning challenges through some examples_\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Setup"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This project requires Python 3.7 or above:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"outputs": [],
"source": [
"import sys\n",
"\n",
"assert sys.version_info >= (3, 7)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Scikit-Learn ≥1.0.1 is required:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"ename": "ModuleNotFoundError",
"evalue": "No module named 'sklearn'",
"output_type": "error",
"traceback": [
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
"\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)",
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[2]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[32m 1\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpackaging\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m version\n\u001b[32m----> \u001b[39m\u001b[32m2\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01msklearn\u001b[39;00m\n\u001b[32m 4\u001b[39m \u001b[38;5;28;01massert\u001b[39;00m version.parse(sklearn.__version__) >= version.parse(\u001b[33m\"\u001b[39m\u001b[33m1.0.1\u001b[39m\u001b[33m\"\u001b[39m)\n",
"\u001b[31mModuleNotFoundError\u001b[39m: No module named 'sklearn'"
]
}
],
"source": [
"from packaging import version\n",
"import sklearn\n",
"\n",
"assert version.parse(sklearn.__version__) >= version.parse(\"1.0.1\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's define the default font sizes, to plot pretty figures:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"plt.rc('font', size=12)\n",
"plt.rc('axes', labelsize=14, titlesize=14)\n",
"plt.rc('legend', fontsize=12)\n",
"plt.rc('xtick', labelsize=10)\n",
"plt.rc('ytick', labelsize=10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Make this notebook's output stable across runs:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"\n",
"np.random.seed(42)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# A small code to begin\n",
"## _Load the data -> optionnaly visualize them -> Select and learn a model -> make a prediction_\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[6.30165767]]\n"
]
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n",
"from sklearn.linear_model import LinearRegression\n",
"\n",
"# Download and prepare the data\n",
"data_root = \"data/\"\n",
"lifesat = pd.read_csv(data_root + \"lifesat.csv\")\n",
"X = lifesat[[\"GDP per capita (USD)\"]].values\n",
"y = lifesat[[\"Life satisfaction\"]].values\n",
"\n",
"# Visualize the data\n",
"lifesat.plot(kind='scatter', grid=True,\n",
" x=\"GDP per capita (USD)\", y=\"Life satisfaction\")\n",
"plt.axis([23_500, 62_500, 4, 9])\n",
"plt.show()\n",
"\n",
"# Select a linear model\n",
"model = LinearRegression()\n",
"\n",
"# Train the model\n",
"model.fit(X, y)\n",
"\n",
"# Make a prediction for Cyprus\n",
"X_new = [[37_655.2]] # Cyprus' GDP per capita in 2020\n",
"print(model.predict(X_new)) # outputs [[6.30165767]]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Replacing the Linear Regression model with k-Nearest Neighbors (in this example, k = 3) regression in the previous code is as simple as replacing these two\n",
"lines:\n",
"\n",
"```python\n",
"from sklearn.linear_model import LinearRegression\n",
"\n",
"model = LinearRegression()\n",
"```\n",
"\n",
"with these two:\n",
"\n",
"```python\n",
"from sklearn.neighbors import KNeighborsRegressor\n",
"\n",
"model = KNeighborsRegressor(n_neighbors=3)\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[6.33333333]]\n"
]
}
],
"source": [
"# Select a 3-Nearest Neighbors regression model\n",
"from sklearn.neighbors import KNeighborsRegressor\n",
"\n",
"model = KNeighborsRegressor(n_neighbors=3)\n",
"\n",
"# Train the model\n",
"model.fit(X, y)\n",
"\n",
"# Make a prediction for Cyprus\n",
"print(model.predict(X_new)) # outputs [[6.33333333]]\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Generating the data and figures — please skip"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is the code I used to generate the `lifesat.csv` dataset. You can safely skip this."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a function to save the figures:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"from pathlib import Path\n",
"\n",
"# Where to save the figures\n",
"IMAGES_PATH = Path() / \"images\" / \"fundamentals\"\n",
"IMAGES_PATH.mkdir(parents=True, exist_ok=True)\n",
"\n",
"def save_fig(fig_id, tight_layout=True, fig_extension=\"png\", resolution=300):\n",
" path = IMAGES_PATH / f\"{fig_id}.{fig_extension}\"\n",
" if tight_layout:\n",
" plt.tight_layout()\n",
" plt.savefig(path, format=fig_extension, dpi=resolution)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load and prepare Life satisfaction data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To create `lifesat.csv`, I downloaded the Better Life Index (BLI) data from [OECD's website](http://stats.oecd.org/index.aspx?DataSetCode=BLI) (to get the Life Satisfaction for each country), and World Bank GDP per capita data from [OurWorldInData.org](https://ourworldindata.org/grapher/gdp-per-capita-worldbank). The BLI data is in `datasets/lifesat/oecd_bli.csv` (data from 2020), and the GDP per capita data is in `datasets/lifesat/gdp_per_capita.csv` (data up to 2020).\n",
"\n",
"If you want to grab the latest versions, please feel free to do so. However, there may be some changes (e.g., in the column names, or different countries missing data), so be prepared to have to tweak the code."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# the code for downloading and preparing the datasets is omitted. "
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"datapath = Path() / \"datasets\" / \"lifesat\"\n",
"oecd_bli = pd.read_csv(datapath / \"oecd_bli.csv\")\n",
"gdp_per_capita = pd.read_csv(datapath / \"gdp_per_capita.csv\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Preprocess the GDP per capita data to keep only the year 2020:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"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>GDP per capita (USD)</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Country</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Afghanistan</th>\n",
" <td>1978.961579</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Africa Eastern and Southern</th>\n",
" <td>3387.594670</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Africa Western and Central</th>\n",
" <td>4003.158913</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Albania</th>\n",
" <td>13295.410885</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Algeria</th>\n",
" <td>10681.679297</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" GDP per capita (USD)\n",
"Country \n",
"Afghanistan 1978.961579\n",
"Africa Eastern and Southern 3387.594670\n",
"Africa Western and Central 4003.158913\n",
"Albania 13295.410885\n",
"Algeria 10681.679297"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gdp_year = 2020\n",
"gdppc_col = \"GDP per capita (USD)\"\n",
"lifesat_col = \"Life satisfaction\"\n",
"\n",
"gdp_per_capita = gdp_per_capita[gdp_per_capita[\"Year\"] == gdp_year]\n",
"gdp_per_capita = gdp_per_capita.drop([\"Code\", \"Year\"], axis=1)\n",
"gdp_per_capita.columns = [\"Country\", gdppc_col]\n",
"gdp_per_capita.set_index(\"Country\", inplace=True)\n",
"\n",
"gdp_per_capita.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Preprocess the OECD BLI data to keep only the `Life satisfaction` column:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"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>Indicator</th>\n",
" <th>Air pollution</th>\n",
" <th>Dwellings without basic facilities</th>\n",
" <th>Educational attainment</th>\n",
" <th>Employees working very long hours</th>\n",
" <th>Employment rate</th>\n",
" <th>Feeling safe walking alone at night</th>\n",
" <th>Homicide rate</th>\n",
" <th>Household net adjusted disposable income</th>\n",
" <th>Household net wealth</th>\n",
" <th>Housing expenditure</th>\n",
" <th>...</th>\n",
" <th>Personal earnings</th>\n",
" <th>Quality of support network</th>\n",
" <th>Rooms per person</th>\n",
" <th>Self-reported health</th>\n",
" <th>Stakeholder engagement for developing regulations</th>\n",
" <th>Student skills</th>\n",
" <th>Time devoted to leisure and personal care</th>\n",
" <th>Voter turnout</th>\n",
" <th>Water quality</th>\n",
" <th>Years in education</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Country</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Australia</th>\n",
" <td>5.0</td>\n",
" <td>NaN</td>\n",
" <td>81.0</td>\n",
" <td>13.04</td>\n",
" <td>73.0</td>\n",
" <td>63.5</td>\n",
" <td>1.1</td>\n",
" <td>32759.0</td>\n",
" <td>427064.0</td>\n",
" <td>20.0</td>\n",
" <td>...</td>\n",
" <td>49126.0</td>\n",
" <td>95.0</td>\n",
" <td>NaN</td>\n",
" <td>85.0</td>\n",
" <td>2.7</td>\n",
" <td>502.0</td>\n",
" <td>14.35</td>\n",
" <td>91.0</td>\n",
" <td>93.0</td>\n",
" <td>21.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Austria</th>\n",
" <td>16.0</td>\n",
" <td>0.9</td>\n",
" <td>85.0</td>\n",
" <td>6.66</td>\n",
" <td>72.0</td>\n",
" <td>80.6</td>\n",
" <td>0.5</td>\n",
" <td>33541.0</td>\n",
" <td>308325.0</td>\n",
" <td>21.0</td>\n",
" <td>...</td>\n",
" <td>50349.0</td>\n",
" <td>92.0</td>\n",
" <td>1.6</td>\n",
" <td>70.0</td>\n",
" <td>1.3</td>\n",
" <td>492.0</td>\n",
" <td>14.55</td>\n",
" <td>80.0</td>\n",
" <td>92.0</td>\n",
" <td>17.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Belgium</th>\n",
" <td>15.0</td>\n",
" <td>1.9</td>\n",
" <td>77.0</td>\n",
" <td>4.75</td>\n",
" <td>63.0</td>\n",
" <td>70.1</td>\n",
" <td>1.0</td>\n",
" <td>30364.0</td>\n",
" <td>386006.0</td>\n",
" <td>21.0</td>\n",
" <td>...</td>\n",
" <td>49675.0</td>\n",
" <td>91.0</td>\n",
" <td>2.2</td>\n",
" <td>74.0</td>\n",
" <td>2.0</td>\n",
" <td>503.0</td>\n",
" <td>15.70</td>\n",
" <td>89.0</td>\n",
" <td>84.0</td>\n",
" <td>19.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Brazil</th>\n",
" <td>10.0</td>\n",
" <td>6.7</td>\n",
" <td>49.0</td>\n",
" <td>7.13</td>\n",
" <td>61.0</td>\n",
" <td>35.6</td>\n",
" <td>26.7</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>90.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2.2</td>\n",
" <td>395.0</td>\n",
" <td>NaN</td>\n",
" <td>79.0</td>\n",
" <td>73.0</td>\n",
" <td>16.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Canada</th>\n",
" <td>7.0</td>\n",
" <td>0.2</td>\n",
" <td>91.0</td>\n",
" <td>3.69</td>\n",
" <td>73.0</td>\n",
" <td>82.2</td>\n",
" <td>1.3</td>\n",
" <td>30854.0</td>\n",
" <td>423849.0</td>\n",
" <td>22.0</td>\n",
" <td>...</td>\n",
" <td>47622.0</td>\n",
" <td>93.0</td>\n",
" <td>2.6</td>\n",
" <td>88.0</td>\n",
" <td>2.9</td>\n",
" <td>523.0</td>\n",
" <td>14.56</td>\n",
" <td>68.0</td>\n",
" <td>91.0</td>\n",
" <td>17.3</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 24 columns</p>\n",
"</div>"
],
"text/plain": [
"Indicator Air pollution Dwellings without basic facilities \\\n",
"Country \n",
"Australia 5.0 NaN \n",
"Austria 16.0 0.9 \n",
"Belgium 15.0 1.9 \n",
"Brazil 10.0 6.7 \n",
"Canada 7.0 0.2 \n",
"\n",
"Indicator Educational attainment Employees working very long hours \\\n",
"Country \n",
"Australia 81.0 13.04 \n",
"Austria 85.0 6.66 \n",
"Belgium 77.0 4.75 \n",
"Brazil 49.0 7.13 \n",
"Canada 91.0 3.69 \n",
"\n",
"Indicator Employment rate Feeling safe walking alone at night \\\n",
"Country \n",
"Australia 73.0 63.5 \n",
"Austria 72.0 80.6 \n",
"Belgium 63.0 70.1 \n",
"Brazil 61.0 35.6 \n",
"Canada 73.0 82.2 \n",
"\n",
"Indicator Homicide rate Household net adjusted disposable income \\\n",
"Country \n",
"Australia 1.1 32759.0 \n",
"Austria 0.5 33541.0 \n",
"Belgium 1.0 30364.0 \n",
"Brazil 26.7 NaN \n",
"Canada 1.3 30854.0 \n",
"\n",
"Indicator Household net wealth Housing expenditure ... Personal earnings \\\n",
"Country ... \n",
"Australia 427064.0 20.0 ... 49126.0 \n",
"Austria 308325.0 21.0 ... 50349.0 \n",
"Belgium 386006.0 21.0 ... 49675.0 \n",
"Brazil NaN NaN ... NaN \n",
"Canada 423849.0 22.0 ... 47622.0 \n",
"\n",
"Indicator Quality of support network Rooms per person Self-reported health \\\n",
"Country \n",
"Australia 95.0 NaN 85.0 \n",
"Austria 92.0 1.6 70.0 \n",
"Belgium 91.0 2.2 74.0 \n",
"Brazil 90.0 NaN NaN \n",
"Canada 93.0 2.6 88.0 \n",
"\n",
"Indicator Stakeholder engagement for developing regulations Student skills \\\n",
"Country \n",
"Australia 2.7 502.0 \n",
"Austria 1.3 492.0 \n",
"Belgium 2.0 503.0 \n",
"Brazil 2.2 395.0 \n",
"Canada 2.9 523.0 \n",
"\n",
"Indicator Time devoted to leisure and personal care Voter turnout \\\n",
"Country \n",
"Australia 14.35 91.0 \n",
"Austria 14.55 80.0 \n",
"Belgium 15.70 89.0 \n",
"Brazil NaN 79.0 \n",
"Canada 14.56 68.0 \n",
"\n",
"Indicator Water quality Years in education \n",
"Country \n",
"Australia 93.0 21.0 \n",
"Austria 92.0 17.0 \n",
"Belgium 84.0 19.3 \n",
"Brazil 73.0 16.2 \n",
"Canada 91.0 17.3 \n",
"\n",
"[5 rows x 24 columns]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"oecd_bli = oecd_bli[oecd_bli[\"INEQUALITY\"]==\"TOT\"]\n",
"oecd_bli = oecd_bli.pivot(index=\"Country\", columns=\"Indicator\", values=\"Value\")\n",
"\n",
"oecd_bli.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's merge the life satisfaction data and the GDP per capita data, keeping only the GDP per capita and Life satisfaction columns:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"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>GDP per capita (USD)</th>\n",
" <th>Life satisfaction</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Country</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>South Africa</th>\n",
" <td>11466.189672</td>\n",
" <td>4.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Colombia</th>\n",
" <td>13441.492952</td>\n",
" <td>6.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Brazil</th>\n",
" <td>14063.982505</td>\n",
" <td>6.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mexico</th>\n",
" <td>17887.750736</td>\n",
" <td>6.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Chile</th>\n",
" <td>23324.524751</td>\n",
" <td>6.5</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" GDP per capita (USD) Life satisfaction\n",
"Country \n",
"South Africa 11466.189672 4.7\n",
"Colombia 13441.492952 6.3\n",
"Brazil 14063.982505 6.4\n",
"Mexico 17887.750736 6.5\n",
"Chile 23324.524751 6.5"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"full_country_stats = pd.merge(left=oecd_bli, right=gdp_per_capita,\n",
" left_index=True, right_index=True)\n",
"full_country_stats.sort_values(by=gdppc_col, inplace=True)\n",
"full_country_stats = full_country_stats[[gdppc_col, lifesat_col]]\n",
"\n",
"full_country_stats.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To illustrate the risk of overfitting, I use only part of the data in most figures (all countries with a GDP per capita between `min_gdp` and `max_gdp`). Later in the chapter I reveal the missing countries, and show that they don't follow the same linear trend at all."
]
},
{
"cell_type": "code",
"execution_count": 13,
"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>GDP per capita (USD)</th>\n",
" <th>Life satisfaction</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Country</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Russia</th>\n",
" <td>26456.387938</td>\n",
" <td>5.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Greece</th>\n",
" <td>27287.083401</td>\n",
" <td>5.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Turkey</th>\n",
" <td>28384.987785</td>\n",
" <td>5.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Latvia</th>\n",
" <td>29932.493910</td>\n",
" <td>5.9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hungary</th>\n",
" <td>31007.768407</td>\n",
" <td>5.6</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" GDP per capita (USD) Life satisfaction\n",
"Country \n",
"Russia 26456.387938 5.8\n",
"Greece 27287.083401 5.4\n",
"Turkey 28384.987785 5.5\n",
"Latvia 29932.493910 5.9\n",
"Hungary 31007.768407 5.6"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"min_gdp = 23_500\n",
"max_gdp = 62_500\n",
"\n",
"country_stats = full_country_stats[(full_country_stats[gdppc_col] >= min_gdp) &\n",
" (full_country_stats[gdppc_col] <= max_gdp)]\n",
"country_stats.head()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"country_stats.to_csv(datapath / \"lifesat.csv\")\n",
"full_country_stats.to_csv(datapath / \"lifesat_full.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAVwAAADMCAYAAAA/BxvbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABCr0lEQVR4nO2dd3gV1daH350eUgiEEJAUFBBBBBTwoqCAiigXEaV3LGABVEREIiJ4lSJ6raifglIVsYGACqJU9QIiAelSAiT0kpBCIGV9f8zkcNJPktOS7Pd55snMnpm9fzPnnJU9a9ZeW4kIGo1Go3E8Hq4WoNFoNJUFbXA1Go3GSWiDq9FoNE5CG1yNRqNxEtrgajQajZPQBlej0WichFMNrlLqaaXUDqXUTqXUM85sW6PRaFyN0wyuUqoJMBS4GWgGdFFK1XdW+xqNRuNqnNnDbQRsFJE0EckE1gIPOrF9jUajcSnONLg7gNuUUqFKqSpAZyDSie1rNBqNS/FyVkMislspNQ1YCaQCsUBW3uOUUsOAYQD+/v4tIiNts8nZ2dl4eLjnO0CtrXS4qzZ31QVaW2mxp7Z9+/adEZGwAneKiEsWYDLwZFHHtGjRQmxl9erVNh/rbLS20uGu2txVl4jWVlrsqQ34UwqxaU7r4QIopWqKyCmlVBSG/7a1M9vXaDQaV+JUgwt8o5QKBTKA4SKS6OT2NRqNxmU41eCKyG3ObE+j0WjcCff0YGs0Gpcxe/Zs2rZt62oZFRJtcDUaB1C3bl38/f0JCgoiJCSEW2+9lY8++ojs7GxXS9O4EG1wNRoHsXTpUpKTkzl8+DAvvPAC06ZN45FHHnG1rCLJzMx0tYQKjTa4Go2DqVq1Kl27duXLL79kzpw57Nixg0uXLvHcc88RFRVFeHg4jz/+OBcvXgRgzZo1RERE8Oabb1KzZk1q167NZ599ZqlvyJAhPPnkk9x7770EBgbSpk0bTpw4wTPPPMN9993Hddddx9atWy3HT506lXr16hEUFETjxo357rvvLPtmz55NmzZtGDVqFKGhoUycODGf/jFjxtC2bVuSkpIcd5MqCdrgajRO4uabbyYiIoL169fzwgsvsG/fPmJjY9m/fz8JCQm88sorlmNPnDhBUlISCQkJzJo1i+HDh3P+/HnL/kWLFvHqq69y5swZfH19ueWWW7jppptYvHgxPXr04Nlnn7UcW69ePdavX09SUhIvv/wyAwYM4Pjx45b9Gzdu5JprruHkyZO8+OKLlvLs7GyGDh3K9u3bWblyJVWrVnXwHar4aIOr0TiRq666inPnzvHxxx/z1ltvUb16dYKCgoiJiWHhwoWW47y9vZkwYQLe3t507tyZwMBA9u7da9n/wAMP0KJFC/z8/HjggQfw8/Nj0KBBeHp60rt371w93J49e3LVVVfh4eFB7969adCgAZs2bcqlaeTIkXh5eeHv7w9ARkYGffv25dy5cyxdupQqVao44e5UfJwdh6vRVGoSEhLIzMwkLS2NFi1aWMpFhKysKyPdQ0ND8fK68vOsUqUKKSkplu3w8HDLur+/f75t62Pnzp3Lf//7X+Li4gBISUnhzJkzlv0FDZ/fv38/27ZtY9OmTfj4+JTyajV50T1cjcZJbN68mYSEBLp164a/vz87d+4kMTGRxMREkpKSchlJe3H48GGGDh3K+++/z9mzZ0lMTKRJkyY5w+sBUErlO69Ro0Z89tln3Hvvvbl61pqyoQ2uRuNgLly4wLJly+jTpw8DBgygWbNmDB06lFGjRnHq1CnA6PmuWLHC7m2npqailCIszMil8tlnn7Fjxw6bzu3bty+TJ0/mrrvu4sCBA3bXVhnRBreS06dPH1atWmX3euPi4lBKVeowo/vuu4+goCAiIyN57bXXePbZZy3RBtOmTaN+/fq0bt2a4OBg7rrrLof0JBs3bszo0aO55ZZbCA8P5++//6ZNmzY2nz948GAmTJjAHXfcYXFJaMpAYVlt3GFxt2xh0dHREhYWJikpKZayTz75RNq1a1fkeWXRNn/+fAkICMi3ADJp0qRS15tDeHi4/Pzzz2WuJy+HDh0SQDIyMkpdh7tml3JXXSJaW2lxVrYw3cMtIVlZWbzzzjtOa69///6kpKTkWt5++23Cw8MZOnSo03RoNJqyow1uCRkzZgxvvPEGiYmJBe7fs2cPHTt2pHr16jRs2JBFixYBcOjQIUJCQixDO4cOHUrNmjUt5w0cOJC333672Pa3bt3KM888w8KFC6lduzYASUlJPPLII9SuXZs6deowfvx4yxvvAwcOcMcddxAaGkqNGjXo379/odo3bdrELbfcQkhICLVr12bEiBFcvnzZsl8pxUcffUSDBg0ICQlh+PDhlpcvWVlZPPfcc9SoUYNrrrmG5cuXF3stGk1lQxvcEtKyZUvat2/PG2+8kW9famoqHTt2pF+/fpw6dYqFCxfy5JNPEhcXx9VXX01wcLAlPnLdunUEBgaye/duANauXUu7du2KbDsxMZEePXrw0ksv0b59e0v5kCFD8PLyYv/+/WzdupWVK1cyc+ZMwHAZjRs3jmPHjrF7926OHj1a4GgiAE9PT9566y3OnDnDH3/8wS+//MIHH3yQ65hly5axefNmtm/fzqJFiywvej755BOWLVvG1q1b+fPPP/n6669tup8aTWVCG9xS8Morr/Dee+9x+vTpXOXLli2jbt26PPTQQ3h5eXHjjTfSvXt31q5dC0C7du1Yu3YtJ06cAKBHjx6sXbuWQ4cOceHCBZo1a1ZomyLCoEGDaNKkCc8//7yl/OTJk/zwww+8/fbbBAQEULNmTUaNGmUJoq9fvz4dO3bE19eXsLAwnn32WYuevLRo0YLWrVvj5eVF3bp1eeyxx/Id+8ILLxASEkJUVBQdOnQgNjYWMEY+PfPMM0RGRlK9enXGjRtXspuq0VQC9MCHUtCkSRO6dOnC1KlTadSokaX88OHDbNy4kZCQEEtZZmYmd955J2AY3O+//56IiAhuv/122rdvz7x58/Dz8+O2224rck6ladOmsXPnTrZs2ZIrbvLw4cNkZGRY3AtgDMnMCWY/efIkTz/9NOvXryc5OZns7GyqVatWYBv79u3j2Wef5c8//yQtLY3MzMxcwfkAtWrVsqxbB+MfO3YsVwB9dHR0odei0VRWdA+3lEyaNIlPPvmEhIQES1lkZCTt2rWzBLMnJiaSkpLCqFGjAMPgrl+/njVr1tCuXTvatm3Lb7/9Vqw7Yc2aNbz22mt8/fXXuYx5Tpu+vr6cOXPG0uaFCxfYuXMnADExMSil+Pvvv7lw4QLz58/PFfRuzRNPPMF1113HP//8w4ULF5g8eXKhx+aldu3aHD161LJ95MgRm87TlF82b95MrVq1cn3umqKx2eAqpXorpT5WSi1WSn1vvThSoLtSv359evfuzbvvvmsp69KlC/v27WPevHlkZGSQkZHB5s2bOXz4MAANGjTA39+f+fPn065dO4KDgwkPD+ebb74p1OAeP36cPn368Pbbb3PjjTfm21+7dm3uvvtuRo8ezYULF8jOzubAgQMWV0BycjKBgYFUrVqVhIQEpk+fXug1JScnExwcTGBgIHv27OHDDz+0+X706tWLd999l/j4eM6fP8/UqVNtPldTPgkMDOTkyZNERUVx7tw5V8spF9hkcJVS04H5QF0gETibZ6mUTJgwgdTUVMt2UFAQK1euZOHChVx11VXUqlWLsWPHkpGRYTmmXbt2hIaGWh6/27Vrh4hw0003FdjGJ598YnELBAYG5loef/xxwBgrf/nyZRo3bky1atXo0aOHJRvUyy+/zF9//UXVqlX597//zYMPPljo9bzxxht8/vnnBAUFMXToUHr37m3zvRg6dCidOnWiWbNm3HTTTUW2o6kYNGrUiNWrVwOGCyk9Pd3FisoBhQXoWi/ASaCHLcfac3G3gQ+lRWsrHe6qzV11ibhG24IFCwSQpk2bSmZmZqHHVZb7hh0GPngAsY4x+RqNpjzTr18/XnvtNbZv306vXr1s9vtXRmw1uB8DA8ramFJqlFJqp1Jqh1LqC6WUX1nr1Gg0ricmJoYhQ4bw7bffEhMT42o5boutYWEhQD+lVEdgO5BhvVNEniquAqVUHeApoLGIXFRKLQL6ALNLIlij0bgns2bNYt++fUydOpVrrrlGDz0vAFsNbmOuuBSuy7OvJM8PXoC/UioDqAIcK8G5Go3GjfHw8GD16tVER0czbNgwIiIiuPfeewG0m8HEJpeCiHQoYrnDxjoSgDeAI8BxIElEVpZeuqY8kpmZyYoVK/QPsILi4+NjSTPZuXNnNm/ezKJFiwgLC7Pk/q3MqJJ88U2fa32MXu0BEbE5DkQpVQ34BuiNEVr2FfC1iMzPc9wwYBhAeHh4C+t5nooiJSWFwMBAW+U4Fa3tCn/88QcxMTFEREQwY8YMgoOD3UabrbirLnAfbefOnaN79+4A+Pr6kpGRQatWrdw2Ptue961Dhw5bRKRlgTsLC1+wXgBvYDpwEcgCss311wFvG+voCcyy2h4EfFDUOToszPE4W1t2dra89tprgvFPWzZs2FDose5639xVl4j7aMvOzpbBgwdbPmdAfH19Zf369a6WViDuFhY2DSNK4XHgWqAB8AQwEJhiYx1HgNZKqSrKSAZwJ7DbxnM1FQSlFDExMWzevBmAtm3bMm7cOEvaSk3F4LnnniPv0+mlS5d45JFHck2WWdmw1eD2Ax4RkTkicsBcZgOPAv1tqUBENgJfA38Bf5ttf1xyyZqKQMuWLUlMTKRly5ZMnTqViIgITp486WpZGjvxwAMPUKVKFby9vXOVJyQk8Omnn7pIleux1eBWBQqaRe4ARsiYTYjIyyJynYg0EZGBInLJ1nM1FY+qVauyadMm3nvvPY4fP06tWrX45ZdfXC1LYwfatm3Lnj17aN26NQEBAZby1NRUxowZQ1JSkgvVuQ5bDe42jBjavDyNHoGmKQNKKUaMGMH27dsBuOuuuxgxYkSlnnyyolCzZk3WrFlDTEwM/v7+lvJLly7x0ksvuVCZ67DV4D4PDFZK7VVKzTGXvRh+3TGOk6epLNxwww2kpKRw5513MmPGDKpXr54vwbum/OHh4UFMTAy//vorISEh+Pj4kJ6ezsyZM9m3b5+r5TkdW+Nw12G8LPsaCDSXr4CGIrLBcfI0lYmAgABWrVrF7NmzSU5OplevXixbtszVsjR2oHXr1sybN48777yTgIAA0tPTLdnuKhM258MVkWMi8qKIdDeX8SKiR4pp7M7gwYMtwfP33XcfgwYNyjWZpaZ8EhgYyPLly5k6dSo+Pj6sXr2an376ydWynEqhBlcpdZNSysNqvdDFeXI1lYVrr72WFStW8OCDDzJv3jx8fX05ePAgYEwhNGfOnHJthM+mXGLb0UTOplSu98Y5PvuNGzcSERHBk4MGcTkyCvHwICsqGhYscLVEh1JULoU/gVrAKXNdAFXAcQJ42l+aprLj4+PDN998w9dff03Pnj2pV68eX3zxBQcOHGDChAksWbKEr7/+usi54NyRJbEJjP1mO94eHmRkZ/N696Z0bV7H1bKcSrNmzdgzcSLvPvY4ZGWiAM+jR8h8dKhhlPrbFG1a7ijqm3o1cNpq/Rrzb97lGkcK1Gh69OjBwYMH8fT0pG/fvrz00ktkZ2ezYsUKy3xx5YWzKZcY+8120jOySb6USXpGNs9/s73S9XQB/Ca9wrisTHysyrzSL5I1ruKmdyzU4IrIYXOYGhi92CNmWa6FkmUL02hKxdVXX82xY8Yrg5yvZVpaGjNnzuTNN990pbQSEX/+It55euTeHh7En7/oIkX5cZa7wyO+4MknCyuvCNianvEQUBvDvWBBKRVq7tMuBY3Defjhh/H29s41R1xaWhovvfQSERERJZqDzVVEVPMnI88w5ozsbCKq+RdyhnNxprsjOyISz6P5Z3fOjoissAbFVueXouCebCCgZ47TOIVmzZrh7e2dK4ge4OLFizz00EOWmYrdmdBAX17v3hQ/bw+CfL3w8/bg9e5NCQ30dbU0p7s7PKdMJtMv92eZ6eeP55TJDmnPHSiyh6uUypkDXIApSqk0q92ewM3okWYaJ/Haa68xZswYPvjgA6ZPn05mZiYpKSmAYXS7dOnCH3/8QZMmTVyi72zKJeLPXySimn+RBrRr8zq0qV/DpmOdSY67I50rPfAcd4etGm29BwD0748XkDUuBo/4o2RHROI1ZXKFfWEGxbsUbjD/KqARYB2HcxkjEc0bDtCl0RRISEgIMTExjB49mrlz5zJp0iSSkpJISUkhJSWF9u3bExsbS0REhFN1lfRRPDTQ120MbQ5ldXeUyh3Rvz+epoGtqG4Ea4p0KYg5qwMwB7hXcs/00ElEHhORf5wjVaO5gq+vL0OHDuXIkSPMnz+fJk2aEBAQwLlz57j99ttJTEx0mpaKEnlQFndHRbkHjsZWH+44IF9qfqVUhFIq3L6SNBrb8fDw4P777+fvv/9mxYoVdOjQgUOHDtGpUycy5swhKyra4UH1Do08WLCgzNdQkqiDrs3r8NvYO5j/6L/4bewdNr8wKw/RF+6ArQZ3PnBvAeWdgHn2k6PRlJ42bdrwyy+/sGvXLtpUr86Fxx7H8+gRlIglqN4RRtdhkQcLFpD56NAyXcOS2ATaTPuVATM30mbar3wfm1DsOaGBvjSLDCmRy8Pdoy/cBVsNbktgXQHl6819Go3b0KhRI6bv3EXopdwBNI4KqndU5EHWuBi80nP3EEtyDc58zHfn6At3wtY4XC+goDvnV0i5RmOhRG+u7YSzg+odEXlQ1muwR9RBSXDX6At3wlaDuxFjDrMn8pQPBzbbVZGmQuGqvAGuCKq3d+RBWa/BFY/57hh94U7Y6lJ4ESMB+W9Kqf+Yy28Yk0hW3IHPmjLhyjfXFSGovqzXoB/z3Q+bergi8j+l1C0Yszs8aBZvBZ4UkW2OEqcp3zj7kTYXFSGo3uoaPj16BKlWjWHvvVeia7D1Md8Vbp/KSEkSkG8TkQEicr25DKhsxrZu3bqsWrUqV9ns2bNp27atixS5Ny5/c92/P55HDqOys/E8crh8GdsczGvY99xzxHh4kNGrV4mrKC7qoDSRDJrSUeJEokqpWkqpKOvFEcI0pcddJmDUj7T2w8/Pj7Nnz7Jw4UK71qsHLDgXmwyuUqqqOXHkRSABI0OY9WJLHQ2VUrFWywWl1DOlFe6OKKXYv3+/ZXvIkCGMHz8egDVr1hAREcGbb75JzZo1qV27Np999pnl2LNnz3LfffcRHBxMq1atGD9+fK6e89NPP01kZCTBwcG0aNGC9evXW/ZNnDiRHj16MGDAAIKDg5k6dSpVqlTh7NmzlmP++usvwsLCcmXacgalDaTX5MbHx8ga+/LLL3Mla6rtFDb4QQ9YcC629nDfAJoB3TCyg/XD8OfGAzblxBORvSLSXESaAy2ANOC7Euot15w4cYKkpCQSEhKYNWsWw4cP5/z58wAMHz6cgIAATpw4wZw5c5gzZ06uc1u1akVsbCznzp2jX79+9OzZk/T0K3GmS5YsoUePHiQmJjJ69Gjat2/PokWLLPvnzZtHnz598Pb2ds7FWlGaQHpNbry8vPDw8OD06dOsXLmyROcW5TJwudunkmGrwb0XGCkiK4AsYIuI/Bd4AXisFO3eCRwwE5iXK7p160ZISIhlefLJJ20+19vbmwkTJuDt7U3nzp0JDAxk7969ZGVl8c033zBp0iSqVKlC48aNGTx4cK5zBwwYQGhoKF5eXowePZpLly5ZJloEuOWWW+jWrRseHh74+/szePBg5s+fD0BWVhZffPEFAwcOtM9N0Dgdb29vPDw8SElJYcKECTafV5zLQLt9nIutcbghQI5xTAJCgf3AH8DMUrTbB/iioB1KqWHAMIDw8HDWrFljU4UpKSk2H1ta0tPTmTRpEi1atLCU/fTTTyxfvtzS9saNG4mPjweMHm1WVhYpKSns37+fwMBANmy4Mqu8h4cHv/32G8eOHSMzM5NDhw5x/PhxwEisnZSUZKn3yy+/5IcffrC4CdLS0li1ahXnz58nLi4OHx+fXNdfrVo1tm/fzhdffMHRo0fx8fEhLS0t3z1yxn0rLe6qzdG6srKFy1nZ+Hh64OlhTCMYFxeHUsb6tm3b+Pjjj7n22muL1XYxI4unGmWQZeWG8FSKTX9swN/biOYNBmZ08LvSZuI/rFlj/5xU7vp5AgQvW8bF3r3xO32a9LAwDg0dyqm77rJ/QyJS7AJsA9qb6yuBtzBSNj4LHLWlDqu6fIAzQHhxx7Zo0UJsZfXq1TYfW1qio6Pl559/zlX22WefSZs2bUREpEqVKrJt2zbLvk6dOsmLL74oq1evltWrV0udOnUKrC8zM1O8vLxk7969ln0vvviipd5169ZJWFiYbN++XbKyskREJCQkxKLl5Zdflv79++fTO2zYMHnllVekX79+8p///KfAa3LGfSst7qrNkboWb42XhuN/kCYTfpKG43+QJVvjRURkxowZ4ufnJ4AopaRr1642aTuTnC4Nx/8g0WOXWZaG43+QM8npDruGwnDXz1Pmz5cMX18RsCwZfv4i8+eXqjrgTynEptnqUpgNNDXXp2K4ES4D04FpJbTx9wJ/icjJEp7n9jRv3pzPP/+crKwsfvrpJ5tnIPD09OTBBx9k4sSJpKWlsWfPHubOnWvZn5ycjJeXF2FhYWRmZvLKK69w4cKFYusdNGgQs2fP5vvvv9fuhHJAUY//Xl5elh6uiLBy5UoOHy7eI6ddBsWTNS4Gr0u5XyY6Ku+GTQZXRN4SkXfN9V+B6zBeljUXkfdL2GZfCnEnlHfeeecdli5dSkhICAsWLKBbt242n/v++++TlJRErVq1GDhwIH379sXX1/hRdOrUiXvuuYdrr72W6Oho/Pz8iIyMLLbONm3a4OHhwU033UR0dHRpL6tc4KyJDx1JUREDOT7cHLKyspgyZYpN9epIkaJxZt6NQn24SqksoLaInFJKfQo8LSLJACJyBMg/yLsYlFIBQEdK96LN5cTFxeUrGzJkCEOGDAGgZcuW7Ny5M98xa9asoX379hbfbkH1hYWFsXz5csv22LFjLbMWeHp68umnn/Lpp59a9j///POW9YkTJxaqOTIykn79+hV1WeUeV+VrsDdFRQz87e1t6eECZGRkMHfuXCZPnkz16tWLrVvnOCgcZ+bdKKqHexFjkkiAwRiZwcqEiKSKSKiIJJW1rorGnj172L59OyLCpk2bmDVrFg888ECZ6ty8eTN//fVXuZjNtrRUpMD9oh7/rV0KOWRmZjJ79mzXiK1AeE6ZTKavLycxYlXBcXk3iopS+B1YrJTagvGC7F1z4EM+RORhuyurZCQnJ9O3b1+OHTtGeHg4o0eP5v777y91fYMHD2bx4sW88847BAUF2VGpe+HSfA0OoLDcBz4+Ply6dAk/Pz/S09Np3Lgxjz32GD169HCx4gpA//7s272bsW++Sev0dF6IjHJY3o2iDO5A4DmgPsasvaFA+es2lBNatWqVa5RaWck7cKKiUhED9wt6/L/zzjtZuHAhLVu2JCoqCqUUTz31lIsUVjxO3XUXOz//nGPVqvHili0Oa6dQg2tGEYwBUEodAvqKyNnCjtdoXEHOY/jzeXy45bF3WxRVq1a1uJiaNGnCjh07XKyoYpGdnU18fDwJCQmkpaVRpUoVh7Rja3rGq/OWKaW8RcS5A/M1mgKobDMNPProozzzzDMcPXrUpmgVTfGcPXsWLy8vvL29WbduHffcc49D2rE1ec1TSqnuVtuzgItKqb1KqYYOUVbJWL58OZs2bXK1jHJLZcrXkJPU6Pfff3exkopDzmjMlJSUXNFC9sbWgQ9PAacBlFK3A70wEtjEAm86RFklo0uXLgwbNszVMjTlgKZNjTFI331XqXI/OZT4+HguX75MdnY2y5Ytc1g7thrcOlxJw3gf8JWILAImAq0doKtSUtEHJziFBQvIiopGPDzIiop2yLTorsbb2xsvLy++/PJLV0upMBw8eJCLF40grOPHj3PypGMGwtpqcC8ANc31jsAv5noGdojPreyImVikQYMGLlZSzlmwgMxHh+J59AhKBM+jR8h8dGiFNLrDhw8HIDU11cVKKgYHDx60rHt7e+eb2cVe2GpwVwKfKKVmYoSJ/WiWX4+NCcg1hZOcnAxArVq1XKykfJM1Lgav9Nyh4o4aE+9q7r77bgDt97cTCQlXcgSnpKSwePFih7Rjq8EdDvwGhAE9ROScWX4TFTQvgjPJSUJerVo1Fysp3zhzTLyrad3a8OS5a7rD8kRGRgaJiYm5ylatWlWqmTWKw9bkNRdEZKSI3C8iP1mVvywi5WfeaTdFG1z7kB1RcIhUYeXlmZz8CTNmzHCxkvLPoUOHLImicsjIyGD37t12b6tQg6uUqm69XtRid1WVDG1w7YPnlMlk+hkjzNZjzAXlqDHx7kDHjh05e/Ys2XlG2mlKxr59+/L1Zi9dulTiqYxsoage7mmlVM6LsjMYYWF5l5xyTRlwZ4NbrtIe9u+P18xPyIqMYjDwRbXqeM38pHxOj24Dffv2BYzER5rS4+3tTWBgIHXr1gXghhtuoHv37txwww12b6uokWZ3AOes1u3v0NAA7mtwy2Xaw/798ezfn5MBAcy+oQkPVVBjC3DrrbcCxgCIxo0bu1hN+aVTp0589dVXXHvttdSpU4fhw4fz2GOOySBbVC6FtVbraxzSugZwT4NrnfYwJxPX899sp039Gm4/misjI4P09HQ2btzI+fPn3eq+2pOcOc3mzp3Lo48+6mI15Z+qVasCkJTkuOyxtg7tzbJyL1iXh5qJyjVl4MSJEwBulUaxqNkH3J3Tp0/j6+uLt7e3w8J73AGlFLVr12b9+vWullIhyElY46hBD2B7WJgqpNwXY24zTRn45x9jhtS8CaZdSXlOe3jq1Cm8vb1JSUlh1qxZrpbjUJ544gkAzpw542Il5Z+c39+hQ44bWlBktjCl1LPmqgCPK6VSrHZ7ArcB2mNfRg4cOOBqCfkoz2kPT506Zfnx/Pnnn5w7d86maWjKI+3atQPgjz/+4L777nOxmorBkSMlnj3MZopLzzjS/KuARwFr98FlIA543P6yKhdHjxYdmH825ZJLUg+W17SHp06dIivL+Kp6eXnx3Xff8cgjj7hYlWNo1aoVAD/++KM2uHbCetSZvSnSpSAiV5u5cNcCzXK2zaWhiHQSkY0OU1dJuHDhAgEBAQXuWxKbQJtpvzJg5kbaTPuV72Md92UoiPKY9vDUqVNcMqe9Tk1NrdBuBX9/w8Xz4YcfulhJxSHnnYojsHWkWQcROe8wFZWU5ORkMjMzAYiKisq3vyJNkOhMjh07RkbGldz4f/31F2fPVtzJSgYMGADA5cv6dUpZCQsLc2j9tr40Qyl1rVIqRin1kVLqU+ulBHWEKKW+VkrtUUrtVkrdUjrZ5Z9jx45RtWpVfHx8ANi9ezdXX301I0eOtBxTniMFisORAyry+uC8vLz49ttv7d6Ou5Az2WhsbKxrhVQA6tRxbJy5rWFh/wa2Y+TCfRhoCHQGHgBqlKC9d4CfROQ6oBlg/8HK5YTQ0FA8PDxyDSmMi4vL5T8qz5ECReFoN8mxY8dybVd0t0LOAAgdHlZ2CnrStCe29nBfASaJyC0YM/cOBOoCq4A1tlSglKoK3A7MAhCRyyKSWDK5FQdfX19CQkJylQUGBtK9u2UmI0ukgJ+3B0G+Xvh5e5SbSIHCcIab5NSpU5Z1T09PAgMD2bx5syXBdEXjqquuAuCLL3TivrJy9dXG9I2OyBQGoGyp2AwHayoiB5VS54DbRWSHUuoGYLmIFPtvQSnVHPgY2IXRu90CPC0iqXmOGwYMAwgPD2+xcOFCmy4kJSWFwMBAm451JlnZQmpqCgEBgXh65I6zfeyxx9i3b59l29vbmy+//DLfyKisbOFyVjY+nh756igrJblvWdnCxQzj7b+/t2eptFzMyOLQ6VSyrL53nkpxdVgA/t6epdZmzeTJkzl58iRHjx7l/PnzvPTSS0RGRtotwbs7ftc2btxIUFAQUVFRbqctB3e8bznkaPv888/55JNP+PHHH/HzK93cCh06dNgiIi0L3CkixS7AcaCxub4T6Gau3wgk21hHSyAT+Je5/Q7wn6LOadGihdjK6tWrbT7WWSzeGi8Nx/8gMxYskYbjf5AlW+Nz7R80aJBgxDgLIPXr13e6Rlvv2+Kt8VJv3DKJHmss9WOW57seWziTnC4Nx/9gqSd67DJpOP4HOZOcXmpthTFt2jQBJDExsUz15MUdv2s5aG2lI0fbBx98IIAcO3as1HUBf0ohNs1Wl8JGoK25vhx4Uyn1MvAZ8IeNdcQD8XIljOxrjATmFRLrR+cskQIfnZs0aYK3tzdgPPp269bNRWqL5mzKJZ7/ehuZVu7kjCxhzNcldwU4002Sk/3JkYHsmoqFo/MpFDfwIYdngZxngYlAENAd2GfuKxYROaGUOqqUaigie4E7MdwLTscZAwlyIgxyEr/AlQiDnDbr16+Pv78/GRkZVKlShS5dujhES1mJP38RT+VB7nEv4Omhcl2PrThrQEXOC5AjR444JNWepuLhFgZXRA5aracBT5SyvZHAAqWUD3AQeKiU9ZQaZ6UctCXCoH79+hbnfEZGhuVts7sRUc2fLMmf5DorW0odMREa6Ovwl385syAfPnzYoe1oKg6ONri2hoWFKaXCrLZvUEq9qpTqW5LGRCRWRFqKSFMR6SZOHkzhzIEE1o/OnkoV+Oh8zTXXWN6c33rrrRb3grsRGujL9B7N8LL6tnh7Kqb3cO+IifDwcAB27NjhYiWa8kJwcDBgjP50BLa6FBYB84BPlVI1gHXAMWCkUuoqEXnTIersjC2P+fYk59F50x8b+K1r23xtBAQEEBgYSFpaWq5wMFdSmLsl51p2HrsACNdfVdWtjS2AhzloZN26dS5WogH46aefGD9+PBs2bACMMMjt27dzzTXXuFjZFWrXrg1Q6FD7smKrwW0K/M9c7wHsF5FWSqn7gelAuTC4rhhIEBroi7+3Z6HGKSoqiu3bt3PPPfc4TIOtFOduCQ305fZrHTv00d54e3uzc+dOV8twCe3bt2fbtm2cOHEi3ySJJWXIkCFERETw6quv2kmdEYrlboSFhTksBhdsH/jgD+TcnbuA7831v4ByMyWqOw4kuO6666hdu7bL/8tX1LwNN998s6sluIS4uDjWr1+PUorvv/+++BPKSE5OEE3R2Gpw/wEeVEpFAncDOdNZhgOJDtDlMLo2r8NvY+9g/qP/4rexd7h2jq4FC7h5xUq6Hz9OVlQ0LFjgMikVNW/D7bffDlS+xC5z586ldevWDBkyhDlz5ljK27dvz8yZMy3bs2fPpm1bI+JTRBg1ahQ1a9YkODiYG264gR07dvDxxx+zYMECXn/9dQIDAy1pIOvWrcu0adNo2rQpAQEBZGZmMnXqVOrVq0dQUBCNGzfmu+++K1SjUor9+/cDsHz5cm688UaCg4OJjIxk4sSJDrgrrsdWl8Ik4AsM18EvVrG0nYCtjhDmSJzxhrxYFiwg89GhjE6/iADq6BEyHx1qfCAumPiwouZtqF+/PgDx8fEuf4pwJnPnzuXZZ5/lX//6F61bt+bkyZOWl4iFsXLlStatW8e+ffuoWrUqe/bsISQkhGHDhvH7778X6FL44osvWL58OTVq1MDLy4t69eqxfv16atWqxVdffcWAAQPYv3+/xTdaGAEBAcydO5frr7+eHTt20LFjR5o3b+62semlxdb0jN8CURijxaydjauwMQ5Xk5uscTF4pRu9x5wBsl7pF8kaF+MSPe7obrEHOaFhlWnww4YNGzh8+DC9evWiRYsW1KtXj88//7zY87y9vUlOTmbPnj2ICI0aNSrWUD711FNERkZa8vL27NmTq666Cg8PD3r37k2DBg3YtGlTsW23b9+eG264AQ8PD5o2bUrfvn1Zu3ZtseeVN2xOzygiJ0Vkq8iVgEwR2SgilWOKnQULyIqKRjw87PL47xFf8CwPhZU7A7dyt9iJnMEPlSkWd86cOdx9993UqGEk8uvXr18ut0Jh3HHHHYwYMYLhw4dTs2ZNhg0bVmx4VGRk7lc4c+fOpXnz5oSEhBASEsKOHTtsmm9t48aNdOjQgbCwMKpWrcpHH31UIedps9ngVmrMx3/Po0dQIniaj/9lMbrZEQW/ayys3FmUxxkeiiLHILjjvHGO4NKlSyxatIi1a9dSq1YtatWqxVtvvcW2bdvYtm0bAQEBpKWlWY7PO7vBU089xZYtW9i1axf79u1j+vTpQOETnFqXHz58mKFDh/L+++9z9uxZEhMTadKkiU1v/fv160fXrl05evQoSUlJPP7443aPFrD2GecwceJESwL3vCQmJvLwww9Tq1YtgoKCuPbaa5k6dWqZNGiDawPWj/85lPXx33PKZDL9cvtHM/388ZwyudR1avKTk/GpsuSK3bBhA56enuzatYvY2FhiY2PZvXs3t912m6X3+e2335KWlsb+/ftz5QnevHkzGzduJCMjg4CAAPz8/CyxzOHh4Rw8eLCwZgEj77BSyjJrwmeffWbzoJPk5GSqV6+On58fmzZtsskF4mhGjRpFSkoKu3fvJikpie+//97yTqC0aINrRWGzEDjk8b9/f7xmfkJWZBSiFFmRUXjN/KTAF2aOnB2hslCcsagorFixgoceeoioqChLD7dWrVqMGDGCBQsWMGrUKHx8fAgPD2fw4MH0t/q+XbhwgaFDh1KtWjWio6MJDQ1lzJgxADzyyCPs2rWLkJCQQl9kNW7cmNGjR3PLLbcQHh7O33//TZs2bWzS/cEHHzBhwgSCgoJ45ZVX6NWrV5nvRVnZvHkz/fr1o1q1anh4eHDdddfRo0ePslVaWBoxd1icmZ4xJ5Vikwk/5UulmBkZJQL5lszIKIdrK0qXPSgPKfPKyt69eyUuLs4udYlUjnvmCFytDZB//vknV9nLL78s/fv3L1DbI488Io0bN5ZPP/1U9u3bV5J2ypyeEaVUuFLqOaXUh+bwXpRSbZRSV5fN5Lue4oL+rR//9wHv45zH/4o6GMHZXHvttZZoBY3GVt577z369+/P+++/T+PGjalfvz4//vhjmeq0NXlNC2Av0B94BAg2d3UEXiuTAjeg2KB/q8f/w8AzQNyr/3F4vGxFHYyg0bgCT0/PXLM5g5Glr7CkUf7+/sTExLBlyxbOnj1Lr1696NmzJ+fOnSu1Blt7uG8A74jIjRhzmuWwArDNSePG2BT0378/nkcOUzM2lizgWSfECFbUwQgajSuIiooiLi4uV9mhQ4dsevoJDg4mJiaG1NRUDh06VGoNthrcFkBBgXzHMYb3lmtKEvQfFhaGt7c3q1atYsuWLW6jS6PRFE3v3r159dVXiY+PJzs7m1WrVrF06dJCX4T95z//YfPmzVy+fJn09HTeeecdQkJCaNiwYak12Dq09yJQrYDy64BTBZSXO2ydhaBGjRpkZWWRkZHByJEj+f33391Cl0ajKZoJEyYwYcIE2rZty/nz56lXrx4LFiygSZMmrFmzhiNHjtC4cWN27dpFVFQUSikeeughjhw5gpeXF02bNmX58uWWiTCvv/56YmJickV6FIetBncJ8LJSqqe5LUqpusA04BvbL9m9sSXHgo+PDz4+PqSnp7Nt2zZ+/vlnOnbs6HJdFZW6dety8uRJPD2vzOi7b98+y9TgGo2t+Pv7M336dMtgjrxERUXlShk5fvx4xo8fX2h9pUn7aatL4TmgOnAaqAJsAPZjZAorXFEFJWcajrS0NEaOHEl2dv7pZzT2Y+nSpaSkpFgWa2Or0wJqyhO2Jq+5ICJtgW7AWIwpzu8RkXYikupAfW5J9erVLevx8fEsWrTIhWoqH0opZsyYQYMGDWjQoAEATz/9NJGRkQQHB9OiRYtcI8smTpxIr169GDRoEEFBQVx//fX8+eeflv1Hjx7lwQcfJCwsjNDQUEaMGGHZ9+mnn9KoUSOqVatGp06dKlVOBo39KdTgKqWylFI1zfVPlVJBIvKriLwhIq+LyCrnyXQvatasaVlPTU1l1KhR+cJNNI5l8eLFbNy4kV27jImfW7VqRWxsLOfOnaNfv3707NmT9PR0y/Hff/89ffr0ITExka5du1qMalZWFl26dCE6Opq4uDgSEhLo06cPAEuWLGHy5Ml8++23nD59mttuu42+fUs0jZ9Gk4uiergXuTI1+mDAz/Fyygd5U9YlJyfzf//3fy5SU/Hp1q2bJftUzrDScePGUb16dUtawAEDBhAaGoqXlxejR4/m0qVL7N2711JH27Zt6dy5M56engwcOJBt27YBsGnTJo4dO8b06dMt+QNyEnJ/9NFHjBs3jkaNGuHl5UVMTAyxsbH5Er5oNLZS1Euz34HFSqktGClb31VKFRhxLyIP29KYUioOSAaygEwRaVkyue5BREREru3U1FTGjx/PkCFDLG8wNfZj8eLF3HXXXZZtpVS+tIBvvPEGs2bN4tixYyiluHDhQq70frVq1bKsV6lShfT0dDIzMzl69CjR0dF4eeX/KRw+fJinn36a0aNHW8pEpEKmDdQ4h6J6uAMxBjaEAAKEAmGFLCWhg4g0L6/GFowero+Pj2VbKUVaWhrffFNhAjbcHuu0gOvXr+f1119n0aJFnD9/nsTERKpWrWpTer/IyEiOHDlS4Mu3yMhI/u///o/ExETLcvHiRZo0aWLXa9FUHgo1uGIkHB8jIg8AR4C+InJfQYvz5LoHOennqlSpAkDr1q1ZunQp/fr1c6WsSktycjJeXl6EhYWRmZnJK6+8Umzi7BxuvvlmateuzQsvvEBqairp6en89ttvADz++ONMmTLFEv6TlJTEV1995bDr0FR8bI1SuFpEztqhPQFWKqW2KKWG2aE+l3DnnXcydepUNm/eDMA///xDp06dCh2TrXEsnTp14p577rEkqfHz88vncigMT09Pli5dyv79+4mKiiIiIoIvv/wSgAceeICxY8fSp08fgoODadKkSZmTl2gqN6qwxy6l1LPAByKSbq4Xioj816bGlKojIglm9MPPwEgRWZfnmGHAMIDw8PAWCxcutKVqUlJSXOI/nTx5Mj///DM//PCD5QVOXlylzRa0tpLjrrpAayst9tTWoUOHLYW6TAvL2wgcAkKt1gtbDhZWR1ELMBF4rqhjnJkPt7SsWrVKAFmyZEmhx7g6D2hRaG0lx111iWhtpcWe2ihNPlyxciOY64UtNs09rZQKUEoF5awDdwO2zb/hxtx2222AEUKk0Wg0RVGmKXaUUtFKKVuHWYUDG5RS24BNwHIR+aks7bsDPj4+NGzYkB9//NHuk95pNJqKRVnnNAsButtyoIgcFJFm5nK9iJT7xOU5jB07FsASTK/RaDQFoSeRtAOdO3cG0CFDGo2mSLTBtQPh4UYO9smT9RTnGo2mcLTBtRPjxo0D4NSpCpGPXaPROIAiE5Arpb4v5vzgYvZXGnr27MmUKVP48ccfGTx4sKvlaDQaN6S4GR+KG112FiMWt9LTvHlzQPdwNRpN4RRpcEXkIWcJKe8opXRYmEajKRLtw9VoNBonoQ2uRqPROAltcDUajcZJaIPr5rRv356ZM2e6WoZGo7ED2uA6gMDAQMvi4eFBp06dLNsLFixwtTyNRuMiigsL05SClJQUy3rdunUZOXJkrnmxbEGupLHUaDQVBN3DdSITJ05kwIABlu24uDiUUpb5tNq3b8+LL75ImzZtqFKlCgcPHsx1/vHjx2natCnTp08H4H//+x+33norISEhNGvWjDVr1gBGTocWLVrkOve///0v999/vwOvTqPRFIc2uG7GvHnz+Pjjj0lOTiY6OtpSfujQIdq1a8eIESMYM2YMCQkJ/Pvf/2b8+PGcO3eON954g+7du3P69Gm6du3KoUOH2L17d656Bw0a5IpL0mg0JtrguhlDhgzh+uuvx8vLyzJH2q5du+jQoQOTJk1i2DBjKrj58+fTuXNnOnfujIeHBx07dqRly5b88MMP+Pr60rt3b+bPnw/Azp07iYuLo0uXLi67Lo1Gow2u21HQ5IcLFiygTp069OjRw1J2+PBhvvrqK0JCQizLhg0bOH78OACDBw/m888/R0SYN28evXr1wtfX12nXodFo8qMNrhMJCAggLS3Nsn3ixIl8xyil8pVNnDiRGjVq0K9fP7KysgDDMA8cOJDExETLkpqaygsvvAAYU7f7+Piwfv16Pv/8cwYOHOigq9JoNLaiDa4Tad68OevWrePIkSMkJSUxZcoUm87z9vbmq6++IjU1lUGDBpGdnc2AAQNYunQpK1asICsri/T0dNasWUN8fLzlvEGDBjFixAi8vb1p27atoy5Lo9HYiDa4TqRjx4707t2bpk2b0qJFixL5VH18fPj22285efIkDz/8MHXq1GHJkiVMnjyZsLAwIiMjmT59OtnZ2ZZzBg4cyI4dO3JFRmg0Gteh43AdTFxcnCVcC2DGjBnMmDHDsj106FDLuvVxBZX5+fmxatUqy/a//vUv1q5dW2jbYWFhBAQEaIOr0bgJuodbgfnwww9p1aoVDRo0cLUUjUaDC3q4SilP4E8gQUR0nJKDqFu3LiLC4sWLXS1Fo9GYuMKl8DSwGz09j0OJi4tztQSNRpMHp7oUlFIRwL8Bnf5Ko9FUOpztw30beB7ILuY4jUajqXA4zaWglOoCnBKRLUqp9kUcNwwYZm6mKKX22thEDeBMmUQ6Dq2tdLirNnfVBVpbabGntujCdihnpQBUSk0BBgKZgB+GD/dbEbFLzJJS6k8RaWmPuuyN1lY63FWbu+oCra20OEub01wKIjJORCJEpC7QB/jVXsZWo9FoygM6Dlej0WichEtGmonIGmCNnav92M712ROtrXS4qzZ31QVaW2lxijan+XA1Go2msqNdChqNRuMsciYrdIcFiARWA7uAncDTZvlEIAGINZfOVueMA/YDe4FOVuX3mGX7gResyq8GNprlXwI+NmrzAzYB20xtk4qqD/A1t/eb++uWVnMZtM0GDlndt+ZmuQLeNdvZDtxkVddg4B9zGWxV3gL42zznXcynIxv1eQJbgWXucs+K0OYu9yzOPDcW+NMsqw78bLbzM1DNjbRNxMW/UfPcEOBrYA/GiNZb3OW+iYjbGdzaORcNBAH7gMbmh/lcAcc3xjAyvuaHdADjB+Rprl8D+JjHNDbPWQT0Mdc/Ap6wUZsCAs11b/ML0bqw+oAngY/M9T7Al6XVXAZts4EeBRzfGfjRPK81sNHqB33Q/FvNXM/5cm4yj1XmufeW4HN9FvicK0bN5fesCG3ucs/igBp5yl7HNEzAC8A0N9I2ERf/Rs3j5wCPmus+GAbYLe6biLiXS0FEjovIX+Z6MsZ/qDpFnHI/sFBELonIIYz/Ojeby34ROSgil4GFwP3KmE7hDoz/gGB8ON1s1CYikjP/ube5SBH13W9uY+6/02y/RJrLqK0w7gfmmuf9DwhRStUGOgE/i8g5ETmP0Ru4x9wXLCL/E+NbNxcb71ve4dzFfAZOu2cFaSsGp92zYjTk3J+8983V2orS7JTfqFKqKnA7MAtARC6LSCJudN/cyuBao5SqC9yI0VsDGKGU2q6U+lQpVc0sqwMctTot3iwrrDwUSBSRzDzltmryVErFAqcwPoQDRdRn0WDuTzLbL6nmUmkTkZz79pp5395SSuVMalZSDXXM9dJoe5vcw7mL+gyces8K0JaDq+8ZGP8wVyqltpijLwHCReS4uX4CCHcjbeD63+jVwGngM6XUVqXUTKVUAO5z39zT4CqlAoFvgGdE5ALwIVAPaA4cB950hS4RyRKR5kAExn/o61yhoyDyalNKNcHwnV0HtMJ4PBrrTE3Ww7md2a4tFKHNpffMirYichNwLzBcKXW79U6zh+WqEKOCtLnDb9QLuAn4UERuBFIxXAgWXHzf3M/gKqW8MYztAhH5FkBETpoGJRv4BMPYgeGkt57mNsIsK6z8LMZjg1ee8hJhPqasxnDIF1afRYO5v6rZfkk1l1bbPaaLRkTkEvAZpb9vCeZ6SbW1AboqpeIwHhnvAN7BPe5ZPm1KqflucM8AEJEE8+8p4DtTx0nzsRbz7yl30eYmv9F4IN7q6e5rDAPsFvcNcLuXZgrDL/J2nvLaVuujMHxCANeT2yF/EMMZ72WuX80Vh/z15jlfkdsh/6SN2sKAEHPdH1gPdCmsPmA4uV8ALSqt5jJoq211X98Gpprb/yb3y4JNcuVlwSGMFwXVzPXqUvDLgs62aLPS2J4rL6Zcfs+K0ObyewYEAEFW679jvNGfTu6XP6+7kTaX/0bN49cDDc31ieY9c/l9s+gr6ZfTkQvQFqO7vx2r8BJgHkYoxnbg+zwf7osYvtS9WL0xNM/bZ+570ar8GvOm7Tc/WF8btTXFCB/aDuwAJhRVH0ao1ldm+SbgmtJqLoO2X837tgOYz5VIBgXMMNv5G2hpVdfDpub9wENW5S3Neg4A71PScJjcRs3l96wIbS6/Z+b92caVML8XzfJQ4BeMUKVVXDEC7qDN5b9R89zmGDPKbAcWYxhMl9+3nEWPNNNoNBon4XY+XI1Go6moaIOr0Wg0TkIbXI1Go3ES2uBqNBqNk9AGV6PRaJyENrgajQ0opeoqpUQp5ZB5r5RS3kqpvXlHlDkbpdQNSqkEc0isxs5og1vBUEqFmzkA/lFKpSulTimlfldKjTSHTOccF2caEDGPO6qU+k4pdV8BdYrVkqyU+lMp9aBzr8zlHMXIZhcLoJRqb96PGnaqfxhwTETWmfUXauCVUmuUUu9bbTdTSi1RSp0wP8sjSqlvlFLRVsdYf4ZpSqmDSqnPlVK3WdctIn8D/8PIoqaxM9rgViDMhD9/YYz8eQljWOO/gMnAnUDXPKe8gmFErsUY2RUHfGf9Y7ZiqHlsK4yg96+UUrfY/SKKQCnl48z2rBFj2OoJuZJUxW6YGbKewsxyVcJzwzCC+lMwRk5dhzE79gGMmbGtyfkMGwGPAJeBtUqpMXmO+wx4wmp4rcZelGZkjl7cc8EYangUCChkv7Jaj6Pg/KXDMEb7dbAqE6xyxGKkf0wDphTSTl3znH7ABiAdIyH03XmOawwsB5Ixxrd/AdSy2j8bWIaRQCYeI9lMYdfeGmOUWCpGlrFfgavMffdgDPk8D5wDVgCNSqLX6piWVuvWy2xb2ipEe0uMjGUhBbVXwPFrgPfN9W5AFsUk6c77GVqVTwYygfpWZT7mPbjL1d/pirboHm4FQSkVipHHc4aIpBZ0jJi/pmKYhWEsuhd2gIhkABkYhrcoXsfIit8cI53lEqVUHVNvbWAdxjDJm4G7gEDzGOvvZTuMocv3YPTS86GUaoaRsGc/RlKa1hgzBeT00AIw8iLcjDGMNwlYWkCPuVC9eTjKlftzPUav8ekStmXNbcABMRIPlZQTGE+qPcyeckl50zy/W06BGPlpYzHuvcaO6EeGikN9jLHhe60LlVLxGFnvAeaLyONFVSIiWUqpfRjj2fNh5ocdg/G4+ksxmj4UkUXmeU9j/EN4Ahhv/t0mIpb0h0qpQRi9wpYYY+nB6Gk9LEb2rsJ4HogVEevcrLutrumbPNfwEHABwyhusFGvBfMenTM3T4nImVK0ZU00cKyI6ysUEfmfUmoyRmLtGUqpzRg94AUictiG888qpU6R//M+htHL1tgR3cOt+NyG0WPbhJEcxhYU+XOGzlNKpWC4Ep7FcEf8WEw9f+SsiJG2byOGGwGMuaFuV0ql5CxcSfpcz6qOHcUYWzAS1f9a6MUoVc98QXRAKXUBOInx3Y8qgV6bKEFb1vhj/GMpFSLyIlALwx30N4Z/dpdSqsAngoJkk//zvmjq0tgR3cOtOOzH+NHkSoouxrQmKKXSbKlEKeWJ8RJtU55dY4CfgAti5EEtKx4Y/tvnCth30mq9QPdICVmG4QN+DCN/aSbGRKWOeAlXmrbOYPzTsOaC+bdqAceHYLgqLIjIWYzMWl8ppcZhZI97iWKeQswoizCMVInWVMfw82vsiO7hVhDMH9xKjGlOAos7vgge5crMp9acEJH9JTS2rXNWTP/izVx51P8Lw/952KzXekkuoeatGMnN82H6tq8DJovIKhHZjTFBaUGdjaL05uWy+dezlG3l1d/Q2nctIucwDHGLPNcTjOE+yuU6ssb0wR7A8IkXx2iMF3aL85Q3wfiMNHZE93ArFk8CvwFblFITMcK3MjF+tM0wDLI1QUqpWhgvvyKBnsBIjDfga+2g5wnTH/y3qS0aYyoWMPKQDgW+VEpNw5iL6hqgFzC6hEZ3OvA/pdTHZr3pGK6UlRi9zTPAUKXUUYw5qKZj3JeS6M3LYYwnin8rpZZiPIKfL0Fb1qzGcPc0xYzzNfkv8IJS6hiGuyMUo9d6GqM3mzNVUB+MWSv2YbgH7sPINftynnZCzM/bB8NtMxgYBDwvIgdyDjLDC+uQ//uiKSuuDpPQi30XDF/eOxguhksY8ZmbMebqCrI6Lo4rIU2XMAzTYqBrAXUWGFJUhIa65jn9MWYESCdP8mnzuAYYPenzGAZrL/AeZogTZliYjW22xYh6uAgkYiSazpm94Q6MaIh0828n874MsVUvBYRpYRi/4xg9xNm2tFWE/i+A6XnKPDH+AW4364jHMKx1rY65BmNWhD1cCYmLBZ4hdxigdQhbOsYsBl8AtxegZRzwk6u/yxVx0QnINXbH7CEdAlqJyJ8ullMs7qBXKXU9Rk+3vhgTp7oEMwrlH6CviPzmKh0VFe3D1WjcABHZifEC8WoXS4kGXtPG1jFoH65G4yaIyFw30LAPwxescQDapaDRaDROQrsUNBqNxklog6vRaDROQhtcjUajcRLa4Go0Go2T0AZXo9FonIQ2uBqNRuMk/h+7fL0jz8kH2AAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 360x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"country_stats.plot(kind='scatter', figsize=(5, 3), grid=True,\n",
" x=gdppc_col, y=lifesat_col)\n",
"\n",
"min_life_sat = 4\n",
"max_life_sat = 9\n",
"\n",
"position_text = {\n",
" \"Turkey\": (29_500, 4.2),\n",
" \"Hungary\": (28_000, 6.9),\n",
" \"France\": (40_000, 5),\n",
" \"New Zealand\": (28_000, 8.2),\n",
" \"Australia\": (50_000, 5.5),\n",
" \"United States\": (59_000, 5.3),\n",
" \"Denmark\": (46_000, 8.5)\n",
"}\n",
"\n",
"for country, pos_text in position_text.items():\n",
" pos_data_x = country_stats[gdppc_col].loc[country]\n",
" pos_data_y = country_stats[lifesat_col].loc[country]\n",
" country = \"U.S.\" if country == \"United States\" else country\n",
" plt.annotate(country, xy=(pos_data_x, pos_data_y),\n",
" xytext=pos_text, fontsize=12,\n",
" arrowprops=dict(facecolor='black', width=0.5,\n",
" shrink=0.08, headwidth=5))\n",
" plt.plot(pos_data_x, pos_data_y, \"ro\")\n",
"\n",
"plt.axis([min_gdp, max_gdp, min_life_sat, max_life_sat])\n",
"\n",
"save_fig('money_happy_scatterplot')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"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>GDP per capita (USD)</th>\n",
" <th>Life satisfaction</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Country</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Turkey</th>\n",
" <td>28384.987785</td>\n",
" <td>5.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hungary</th>\n",
" <td>31007.768407</td>\n",
" <td>5.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>France</th>\n",
" <td>42025.617373</td>\n",
" <td>6.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>New Zealand</th>\n",
" <td>42404.393738</td>\n",
" <td>7.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Australia</th>\n",
" <td>48697.837028</td>\n",
" <td>7.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Denmark</th>\n",
" <td>55938.212809</td>\n",
" <td>7.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>United States</th>\n",
" <td>60235.728492</td>\n",
" <td>6.9</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" GDP per capita (USD) Life satisfaction\n",
"Country \n",
"Turkey 28384.987785 5.5\n",
"Hungary 31007.768407 5.6\n",
"France 42025.617373 6.5\n",
"New Zealand 42404.393738 7.3\n",
"Australia 48697.837028 7.3\n",
"Denmark 55938.212809 7.6\n",
"United States 60235.728492 6.9"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"highlighted_countries = country_stats.loc[list(position_text.keys())]\n",
"highlighted_countries[[gdppc_col, lifesat_col]].sort_values(by=gdppc_col)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 360x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"country_stats.plot(kind='scatter', figsize=(5, 3), grid=True,\n",
" x=gdppc_col, y=lifesat_col)\n",
"\n",
"X = np.linspace(min_gdp, max_gdp, 1000)\n",
"\n",
"w1, w2 = 4.2, 0\n",
"plt.plot(X, w1 + w2 * 1e-5 * X, \"r\")\n",
"plt.text(40_000, 4.9, fr\"$\\theta_0 = {w1}$\", color=\"r\")\n",
"plt.text(40_000, 4.4, fr\"$\\theta_1 = {w2}$\", color=\"r\")\n",
"\n",
"w1, w2 = 10, -9\n",
"plt.plot(X, w1 + w2 * 1e-5 * X, \"g\")\n",
"plt.text(26_000, 8.5, fr\"$\\theta_0 = {w1}$\", color=\"g\")\n",
"plt.text(26_000, 8.0, fr\"$\\theta_1 = {w2} \\times 10^{{-5}}$\", color=\"g\")\n",
"\n",
"w1, w2 = 3, 8\n",
"plt.plot(X, w1 + w2 * 1e-5 * X, \"b\")\n",
"plt.text(48_000, 8.5, fr\"$\\theta_0 = {w1}$\", color=\"b\")\n",
"plt.text(48_000, 8.0, fr\"$\\theta_1 = {w2} \\times 10^{{-5}}$\", color=\"b\")\n",
"\n",
"plt.axis([min_gdp, max_gdp, min_life_sat, max_life_sat])\n",
"\n",
"save_fig('tweaking_model_params_plot')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"θ0=3.75, θ1=6.78e-05\n"
]
}
],
"source": [
"from sklearn import linear_model\n",
"\n",
"X_sample = country_stats[[gdppc_col]].values\n",
"y_sample = country_stats[[lifesat_col]].values\n",
"\n",
"lin1 = linear_model.LinearRegression()\n",
"lin1.fit(X_sample, y_sample)\n",
"\n",
"t0, t1 = lin1.intercept_[0], lin1.coef_[0][0]\n",
"print(f\"θ0={t0:.2f}, θ1={t1:.2e}\")"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 360x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"country_stats.plot(kind='scatter', figsize=(5, 3), grid=True,\n",
" x=gdppc_col, y=lifesat_col)\n",
"\n",
"X = np.linspace(min_gdp, max_gdp, 1000)\n",
"plt.plot(X, t0 + t1 * X, \"b\")\n",
"\n",
"plt.text(max_gdp - 20_000, min_life_sat + 1.9,\n",
" fr\"$\\theta_0 = {t0:.2f}$\", color=\"b\")\n",
"plt.text(max_gdp - 20_000, min_life_sat + 1.3,\n",
" fr\"$\\theta_1 = {t1 * 1e5:.2f} \\times 10^{{-5}}$\", color=\"b\")\n",
"\n",
"plt.axis([min_gdp, max_gdp, min_life_sat, max_life_sat])\n",
"\n",
"save_fig('best_fit_model_plot')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"37655.1803457421"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cyprus_gdp_per_capita = gdp_per_capita[gdppc_col].loc[\"Cyprus\"]\n",
"cyprus_gdp_per_capita"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"6.301656332738056"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cyprus_predicted_life_satisfaction = lin1.predict([[cyprus_gdp_per_capita]])[0, 0]\n",
"cyprus_predicted_life_satisfaction"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 360x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"country_stats.plot(kind='scatter', figsize=(5, 3), grid=True,\n",
" x=gdppc_col, y=lifesat_col)\n",
"\n",
"X = np.linspace(min_gdp, max_gdp, 1000)\n",
"plt.plot(X, t0 + t1 * X, \"b\")\n",
"\n",
"plt.text(min_gdp + 22_000, max_life_sat - 1.1,\n",
" fr\"$\\theta_0 = {t0:.2f}$\", color=\"b\")\n",
"plt.text(min_gdp + 22_000, max_life_sat - 0.6,\n",
" fr\"$\\theta_1 = {t1 * 1e5:.2f} \\times 10^{{-5}}$\", color=\"b\")\n",
"\n",
"plt.plot([cyprus_gdp_per_capita, cyprus_gdp_per_capita],\n",
" [min_life_sat, cyprus_predicted_life_satisfaction], \"r--\")\n",
"plt.text(cyprus_gdp_per_capita + 1000, 5.0,\n",
" fr\"Prediction = {cyprus_predicted_life_satisfaction:.2f}\", color=\"r\")\n",
"plt.plot(cyprus_gdp_per_capita, cyprus_predicted_life_satisfaction, \"ro\")\n",
"\n",
"plt.axis([min_gdp, max_gdp, min_life_sat, max_life_sat])\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Using KNN**\n",
"https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsRegressor.html\n"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"6.333333333333333"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#With KNN\n",
"knn_model = KNeighborsRegressor(n_neighbors=3)\n",
"\n",
"# Train the model\n",
"knn_model.fit(X_sample, y_sample)\n",
"\n",
"# Make a prediction for Cyprus\n",
"knn_model.predict([[cyprus_gdp_per_capita]])[0, 0]\n",
"\n",
"#print(model.predict(X_new)) # outputs [[6.33333333]]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Partial conclusion\n",
"\n",
"The model makes good prediction. Otherwise, you may need to **use more attributes** (employment rate, meteo, health, pollution, etc.), **get more or better quality training data**, or perhaps **select a more powerful model** (in that case, a polynomial regression model). \n",
"\n",
"\n",
"## In summary ## \n",
"\n",
"Study the data -> Select the model -> Train the model on the training data -> Apply it to make predictions on new cases (aka _inference_) hoping that the model will generalize well. \n",
"\n",
"## Now let's look at what can go wrong in learning and prevent making accurate predictions. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's consider more data !"
]
},
{
"cell_type": "code",
"execution_count": 24,
"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>GDP per capita (USD)</th>\n",
" <th>Life satisfaction</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Country</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>South Africa</th>\n",
" <td>11466.189672</td>\n",
" <td>4.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Colombia</th>\n",
" <td>13441.492952</td>\n",
" <td>6.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Brazil</th>\n",
" <td>14063.982505</td>\n",
" <td>6.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mexico</th>\n",
" <td>17887.750736</td>\n",
" <td>6.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Chile</th>\n",
" <td>23324.524751</td>\n",
" <td>6.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Norway</th>\n",
" <td>63585.903514</td>\n",
" <td>7.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Switzerland</th>\n",
" <td>68393.306004</td>\n",
" <td>7.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ireland</th>\n",
" <td>89688.956958</td>\n",
" <td>7.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Luxembourg</th>\n",
" <td>110261.157353</td>\n",
" <td>6.9</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" GDP per capita (USD) Life satisfaction\n",
"Country \n",
"South Africa 11466.189672 4.7\n",
"Colombia 13441.492952 6.3\n",
"Brazil 14063.982505 6.4\n",
"Mexico 17887.750736 6.5\n",
"Chile 23324.524751 6.5\n",
"Norway 63585.903514 7.6\n",
"Switzerland 68393.306004 7.5\n",
"Ireland 89688.956958 7.0\n",
"Luxembourg 110261.157353 6.9"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"missing_data = full_country_stats[(full_country_stats[gdppc_col] < min_gdp) |\n",
" (full_country_stats[gdppc_col] > max_gdp)]\n",
"missing_data"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"position_text_missing_countries = {\n",
" \"South Africa\": (20_000, 4.2),\n",
" \"Colombia\": (6_000, 8.2),\n",
" \"Brazil\": (18_000, 7.8),\n",
" \"Mexico\": (24_000, 7.4),\n",
" \"Chile\": (30_000, 7.0),\n",
" \"Norway\": (51_000, 6.2),\n",
" \"Switzerland\": (62_000, 5.7),\n",
" \"Ireland\": (81_000, 5.2),\n",
" \"Luxembourg\": (92_000, 4.7),\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"full_country_stats.plot(kind='scatter', figsize=(8, 3),\n",
" x=gdppc_col, y=lifesat_col, grid=True)\n",
"\n",
"for country, pos_text in position_text_missing_countries.items():\n",
" pos_data_x, pos_data_y = missing_data.loc[country]\n",
" plt.annotate(country, xy=(pos_data_x, pos_data_y),\n",
" xytext=pos_text, fontsize=12,\n",
" arrowprops=dict(facecolor='black', width=0.5,\n",
" shrink=0.08, headwidth=5))\n",
" plt.plot(pos_data_x, pos_data_y, \"rs\")\n",
"\n",
"X = np.linspace(0, 115_000, 1000)\n",
"plt.plot(X, t0 + t1 * X, \"b:\")\n",
"\n",
"lin_reg_full = linear_model.LinearRegression()\n",
"Xfull = np.c_[full_country_stats[gdppc_col]]\n",
"yfull = np.c_[full_country_stats[lifesat_col]]\n",
"lin_reg_full.fit(Xfull, yfull)\n",
"\n",
"t0full, t1full = lin_reg_full.intercept_[0], lin_reg_full.coef_[0][0]\n",
"X = np.linspace(0, 115_000, 1000)\n",
"plt.plot(X, t0full + t1full * X, \"k\")\n",
"\n",
"plt.axis([0, 115_000, min_life_sat, max_life_sat])\n",
"\n",
"save_fig('representative_training_data_scatterplot')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Bad algorithms / overfitting\n"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from sklearn import preprocessing\n",
"from sklearn import pipeline\n",
"\n",
"full_country_stats.plot(kind='scatter', figsize=(8, 3),\n",
" x=gdppc_col, y=lifesat_col, grid=True)\n",
"\n",
"poly = preprocessing.PolynomialFeatures(degree=10, include_bias=False)\n",
"scaler = preprocessing.StandardScaler()\n",
"lin_reg2 = linear_model.LinearRegression()\n",
"\n",
"pipeline_reg = pipeline.Pipeline([\n",
" ('poly', poly),\n",
" ('scal', scaler),\n",
" ('lin', lin_reg2)])\n",
"pipeline_reg.fit(Xfull, yfull)\n",
"curve = pipeline_reg.predict(X[:, np.newaxis])\n",
"plt.plot(X, curve)\n",
"\n",
"plt.axis([0, 115_000, min_life_sat, max_life_sat])\n",
"\n",
"save_fig('overfitting_model_plot')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Country\n",
"New Zealand 7.3\n",
"Sweden 7.3\n",
"Norway 7.6\n",
"Switzerland 7.5\n",
"Name: Life satisfaction, dtype: float64"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w_countries = [c for c in full_country_stats.index if \"W\" in c.upper()]\n",
"full_country_stats.loc[w_countries][lifesat_col]"
]
},
{
"cell_type": "code",
"execution_count": 29,
"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>GDP per capita (USD)</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Country</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Malawi</th>\n",
" <td>1486.778248</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rwanda</th>\n",
" <td>2098.710362</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zimbabwe</th>\n",
" <td>2744.690758</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Africa Western and Central</th>\n",
" <td>4003.158913</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Papua New Guinea</th>\n",
" <td>4101.218882</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lower middle income</th>\n",
" <td>6722.809932</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Eswatini</th>\n",
" <td>8392.717564</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Low & middle income</th>\n",
" <td>10293.855325</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Arab World</th>\n",
" <td>13753.707307</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Botswana</th>\n",
" <td>16040.008473</td>\n",
" </tr>\n",
" <tr>\n",
" <th>World</th>\n",
" <td>16194.040310</td>\n",
" </tr>\n",
" <tr>\n",
" <th>New Zealand</th>\n",
" <td>42404.393738</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sweden</th>\n",
" <td>50683.323510</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Norway</th>\n",
" <td>63585.903514</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Switzerland</th>\n",
" <td>68393.306004</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" GDP per capita (USD)\n",
"Country \n",
"Malawi 1486.778248\n",
"Rwanda 2098.710362\n",
"Zimbabwe 2744.690758\n",
"Africa Western and Central 4003.158913\n",
"Papua New Guinea 4101.218882\n",
"Lower middle income 6722.809932\n",
"Eswatini 8392.717564\n",
"Low & middle income 10293.855325\n",
"Arab World 13753.707307\n",
"Botswana 16040.008473\n",
"World 16194.040310\n",
"New Zealand 42404.393738\n",
"Sweden 50683.323510\n",
"Norway 63585.903514\n",
"Switzerland 68393.306004"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all_w_countries = [c for c in gdp_per_capita.index if \"W\" in c.upper()]\n",
"gdp_per_capita.loc[all_w_countries].sort_values(by=gdppc_col)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"country_stats.plot(kind='scatter', x=gdppc_col, y=lifesat_col, figsize=(8, 3))\n",
"missing_data.plot(kind='scatter', x=gdppc_col, y=lifesat_col,\n",
" marker=\"s\", color=\"r\", grid=True, ax=plt.gca())\n",
"\n",
"X = np.linspace(0, 115_000, 1000)\n",
"plt.plot(X, t0 + t1*X, \"b:\", label=\"Linear model on partial data\")\n",
"plt.plot(X, t0full + t1full * X, \"k-\", label=\"Linear model on all data\")\n",
"\n",
"ridge = linear_model.Ridge(alpha=10**9.5)\n",
"X_sample = country_stats[[gdppc_col]]\n",
"y_sample = country_stats[[lifesat_col]]\n",
"ridge.fit(X_sample, y_sample)\n",
"t0ridge, t1ridge = ridge.intercept_[0], ridge.coef_[0][0]\n",
"plt.plot(X, t0ridge + t1ridge * X, \"b--\",\n",
" label=\"Regularized linear model on partial data\")\n",
"plt.legend(loc=\"lower right\")\n",
"\n",
"plt.axis([0, 115_000, min_life_sat, max_life_sat])\n",
"\n",
"save_fig('ridge_model_plot')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.14.2"
},
"metadata": {
"interpreter": {
"hash": "22b0ec00cd9e253c751e6d2619fc0bb2d18ed12980de3246690d5be49479dd65"
}
},
"nav_menu": {},
"toc": {
"navigate_menu": true,
"number_sections": true,
"sideBar": true,
"threshold": 6,
"toc_cell": false,
"toc_section_display": "block",
"toc_window_display": true
},
"toc_position": {
"height": "616px",
"left": "0px",
"right": "20px",
"top": "106px",
"width": "213px"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
|