Import Libraries


In [2]:
import matplotlib.pyplot as plt
import urllib
from bs4 import BeautifulSoup
from selenium import webdriver
import re
import os,sys, shutil
import time
from datetime import date
try:
    import cPickle as pickle
except:
    import pickle
import pprint
from collections import deque
from shutil import copyfile
import random
import glob
# Import the required modules
import cv2, os
import numpy as np
from PIL import Image
from sklearn.cross_validation import KFold
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# Logistic Regression
from sklearn import datasets
from sklearn import metrics

In [3]:
pkl_fl = open("linkedin_profiles.pickle","rb")
my_original_list=pickle.load(pkl_fl) # errors out here
pkl_fl.close()

In [3]:
my_original_list[0]


Out[3]:
{'Full_Name': 'Eryn Olson',
 'Gender': 'Female',
 'Profile_Url': 'https://media.licdn.com/mpr/mpr/shrinknp_400_400/AAEAAQAAAAAAAAbyAAAAJDMzZjQ4NjViLTIwZTctNDM0Yi05ODI5LTk0NmYzZWZmZDI5Yg.jpg',
 'Recommended_Ids': ['erynolson',
  'eryn-olson-62639510a',
  'eryn-olson-432679b1',
  'eryn-olson-1351aa74',
  'courtney-tillman-8b62a664',
  'chance-cozby-13235224',
  'bill-gates-b1a606b0',
  'sarah-eves-2937a719',
  'andrew-solheim-810a3517',
  'andrea-cundiff-76020535',
  'mollie-harper-6b850947',
  'tyler-shaw-934b7',
  'donna-conroy-66987340',
  'paul-wood-73455920'],
 'User_ID': 'eryn-olson-50328143',
 'age': 20}

label the Images and store into respective folders


In [26]:
directory = "Male"
    
if os.path.exists(directory):
    shutil.rmtree(directory)
    os.makedirs(directory)     
else:
    os.makedirs(directory) 

directory1 = "Female"

if os.path.exists(directory1):
    shutil.rmtree(directory1)
    os.makedirs(directory1)     
else:
    os.makedirs(directory1)     

directory2 = "Label_Images_Age"

if os.path.exists(directory2):
    shutil.rmtree(directory2)
    os.makedirs(directory2)     
else:
    os.makedirs(directory2)     
    
fileList = glob.glob("./Images/*.*")

for id,fp in enumerate(fileList):
    filename, file_extension = os.path.splitext(fp)
    uid = filename.split('/')[-1]
    #print fp
    for prof in my_original_list:
        if prof['User_ID'] == uid:
            prof_age = prof['age']
            
            if (0 <= prof_age <= 30):
                new_file_extension = 'Youth'
            else:
                new_file_extension = 'Senior'
            
            copyfile(filename + ".jpg", './Label_Images_Age/'+ uid + '.' + str(id) + "." + new_file_extension +'.jpg')

In [4]:
# For face detection we will use the Haar Cascade provided by OpenCV.
cascadePath = "haarcascade_frontalface_default.xml"
faceCascade = cv2.CascadeClassifier(cascadePath)

# For face recognition we will the the LBPH Face Recognizer 
recognizer = cv2.createLBPHFaceRecognizer()

In [5]:
def get_images_and_labels(path):
    # Append all the absolute image paths in a list image_paths
    
    image_paths = [os.path.join(path, f) for f in os.listdir(path)]
    # images will contains face images
    images = []
    # labels will contains the label that is assigned to the image
    labels = []
    #gender will contains 1 or 0 indecating male or female
    age =[]
    
    for image_path in image_paths:
        # Read the image and convert to grayscale
        try:
            image_pil = Image.open(image_path).convert('L')
            # Convert the image format into numpy array
            image = np.array(image_pil, 'uint8')
            # Get the label of the image
        except:
            pass
        
        nbr = int(os.path.split(image_path)[1].split(".")[1])
        age_current = os.path.split(image_path)[1].split(".")[2]
        #print nbr
        
        # Detect the face in the image
        faces = faceCascade.detectMultiScale(image)
        # If face is detected, append the face to images and the label to labels
        try:
            for (x, y, w, h) in faces:

                ref_image = image[y: y + h, x: x + w]
                resized = cv2.resize(ref_image, (100, 100), interpolation = cv2.INTER_AREA)
                edge_images = cv2.Canny(resized,100,200)
                
                images.append(np.hstack((resized.reshape(1,10000), edge_images.reshape(1,10000))))
                labels.append(nbr)

                if age_current == 'Youth':
                    age.append(0)
                else:
                    age.append(1)
                
                #face_file_name = "faces/face_" + str(y) + ".jpg"
                #cv2.imwrite(face_file_name, sub_face)
                
                cv2.imshow("Adding faces to traning set...", resized)
                cv2.waitKey(1)
        except:
            pass
    # return the images list and labels list
    #print "lables"
    #print labels
    #print "Age_current"
    #print age
    
    return images, labels, age

In [6]:
images, labels, ageList = get_images_and_labels('Label_Images_Age')

cv2.destroyAllWindows()


1023
151
2801
1864
1183
1687
260
1922
1745
2045
2411
3274
83
1912
1024
2653
2954
3187
2717
938
296
1131
3063
3403
1525
1498
1458
804
516
450
1246
2758
3282
2423
3316
1722
1930
2835
2263
2431
2602
433
1790
482
3250
2910
2354
2325
1094
2446
3027
2128
3016
412
427
1882
1874
2604
709
4
2903
3389
1985
3339
3340
345
664
140
2439
1940
277
3424
673
1358
1962
512
3373
2388
3400
3032
2657
2028
1433
1213
1771
2387
2929
2540
3057
2157
2748
844
834
2789
2867
2168
2249
541
2067
53
2991
2137
2526
1574
880
2995
1396
2236
2412
1816
2460
704
1953
840
3112
953
1756
26
328
3308
2269
2545
1806
214
663
3370
43
1400
666
2480
2170
1852
2169
1505
2456
2352
364
1929
3053
1144
2880
2290
2516
2984
3017
538
676
1516
1724
1439
3056
2724
394
1450
660
3206
1758
680
2251
1744
1827
2590
3252
2827
1028
2727
2609
2030
977
3167
1329
838
2646
1014
3058
1964
2049
3009
1123
2227
1061
802
3182
796
100
2406
3285
337
1888
254
3205
1969
2109
643
659
2691
1609
951
705
1906
2264
609
274
2875
1611
1846
803
1022
2435
413
1455
2287
2053
2191
2253
1631
2615
3099
687
1149
670
2099
897
1685
2661
130
385
1207
3365
1670
105
1051
1677
1010
2241
1407
418
783
81
671
3158
1283
470
2614
1618
1416
2126
652
460
396
3143
1564
2935
237
1657
1026
1343
1665
926
1151
2065
3171
1524
59
3278
1271
2704
827
954
1733
1858
2649
3108
3330
317
644
824
1169
3359
1053
3048
30
443
437
1355
3169
1514
2034
3003
2560
1114
1871
1202
1625
149
2596
2355
2757
2847
2705
3267
1411
1142
1152
980
2542
2583
2777
2250
2893
755
1461
3111
1016
1765
3391
367
1472
1049
2606
1728
686
749
1604
1190
1086
2574
957
1597
1789
1825
2340
2058
1796
910
2317
589
447
2083
2366
2444
1981
863
2749
2402
2633
198
2568
2530
886
90
792
2369
25
295
1366
3133
2042
1374
1739
1546
15
847
2122
135
1346
3131
2711
2493
3280
1487
2424
2077
925
2732
339
590
1173
1070
2410
994
1549
399
1310
964
1711
949
332
2663
893
1707
2421
2382
3345
1847
854
862
268
161
1743
610
1354
2703
603
685
2794
1132
1857
2494
1205
402
2860
1719
2237
152
113
3246
693
1992
1537
1309
1085
200
2395
3356
3262
2802
2219
2783
1576
2182
2082
1204
2998
2409
167
179
2489
1469
3284
1710
1529
930
942
2335
1180
1960
1299
242
1496
909
2292
1403
2662
1570
2721
104
1420
56
1634
832
2745
2200
1561
2161
310
2846
2210
6
1077
466
2380
3114
561
1315
1785
89
1815
581
1999
2713
484
234
1127
758
3268
1003
3224
3266
884
469
1475
3001
2273
2284
118
3253
1020
785
2377
77
287
539
808
305
1359
2999
2683
1364
730
188
1256
2628
1983
2514
850
1801
2898
3243
924
593
369
349
476
1378
32
1196
1961
741
1046
3326
2525
1540
2872
3180
232
3110
3039
1399
597
1988
1681
2368
312
141
2104
552
301
391
3390
2427
672
1395
3081
2688
1755
734
3309
937
694
3357
64
2429
60
3087
1296
3228
1958
1885
3122
2488
357
2329
2949
2551
1178
311
2891
2009
3321
3005
3407
1154
3430
2367
1104
3414
1520
2171
189
2930
3007
483
965
3404
1748
946
1963
879
2928
3210
2971
1688
1915
386
1862
828
641
280
690
3220
426
3002
3088
2985
2501
2149
2091
265
2471
80
2638
575
2788
1607
299
3151
2320
3166
3103
3223
882
2350
3410
2238
2311
3188
2391
501
2858
488
1782
2980
795
1214
78
1606
1233
3383
789
2682
2572
1006
1062
547
17
1232
2953
1805
3334
3028
1431
579
2616
1584
3019
1440
1808
1418
1937
1423
1129
2199
2097
2747
604
1380
2630
1654
2665
1394
3192
1494
2843
1799
2839
2415
2474
799
1466
1018
1982
611
1500
830
298
2268
2373
2074
1704
2027
1339
2838
409
3385
3439
700
963
1803
1678
1120
1147
2900
88
2632
1686
2522
2267
1406
771
2363
940
2805
2831
1872
2902
2925
3304
970
210
2326
1792
878
1146
158
3045
918
2697
1261
226
1488
2882
973
1269
2968
2327
14
972
837
93
655
950
1713
1074
1624
1155
2414
2133
628
1794
439
2020
1387
2659
2482
2151
2348
2734
2702
1063
2136
1909
3142
1478
271
3030
2917
2810
2586
2624
633
1769
1544
1605
725
3212
2591
3098
101
3232
325
1612
205
1630
2081
1090
124
614
178
3271
489
1793
2936
2461
2775
714
1602
1083
479
2188
2982
448
1780
2166
2613
853
929
196
1331
1045
2160
601
707
1341
2277
2407
2652
1381
2507
3194
2712
3044
770
1684
1979
1980
3091
960
2361
2629
3433
1837
735
2762
3269
2372
1658
507
1186
504
2102
2228
620
2859
2498
1336
3074
718
530
449
85
944
1200
1787
2322
3033
3303
3438
1467
246
898
822
3203
251
1641
227
2812
1593
3363
2864
3367
3297
2093
2033
2362
3159
377
2792
1772
452
1289
781
2729
2798
1700
2239
2965
184
1521
3248
3302
1948
1666
3062
662
2519
1585
1036
2265
956
416
927
1843
2491
1506
2576
1860
2534
3270
145
1084
521
1513
2743
1457
1577
1998
1445
3422
2681
1865
3406
2107
1671
511
2776
2057
1422
1947
290
3024
1991
753
1321
3289
2532
2026
390
848
959
2255
860
182
2222
2578
2658
3217
2790
1881
1845
2271
2598
110
2746
2256
457
98
1103
1350
2962
2001
1697
441
899
2845
3035
3418
2856
2319
2612
1669
2654
1870
571
1172
1802
2154
1425
1474
1473
2481
2147
1778
293
904
2850
2224
1295
524
3320
424
503
1599
2641
2855
667
3279
1919
18
1486
272
2206
451
1861
698
2492
346
1241
2862
677
187
180
3189
2190
1373
58
943
1646
3095
1161
2869
3160
33
1819
1884
580
826
1553
1091
1198
2770
653
1938
3429
2556
1211
2640
2908
1189
2487
708
403
1527
975
2346
3234
2201
1532
3147
751
342
2671
622
1386
2005
3358
1518
2403
3298
2601
2438
2164
3417
3258
2116
3046
2645
2926
454
1972
1017
1248
3190
2211
1898
1823
1810
166
2307
2719
1434
2483
1754
3004
1917
1672
746
3021
732
1613
1187
253
805
2209
2773
2772
3242
2664
2760
2837
1266
1703
849
625
3344
1702
2694
39
1863
162
1160
2799
91
3006
505
2243
2884
1901
421
2376
3077
478
1603
284
35
419
1221
267
2134
1290
2231
156
3351
2610
3050
1327
3239
1727
1501
557
1259
438
2141
2090
3440
2687
654
2215
2163
1216
1841
1698
2819
1661
2072
1701
468
933
2024
1033
2715
3360
366
2257
1563
2150
1575
2360
996
133
523
1464
2564
422
2270
2744
2535
1891
2617
1651
2143
2396
2035
519
352
1281
1921
3168
2544
2195
1124
1058
215
1371
1130
3275
3078
245
674
2722
3064
2302
2889
3069
2071
902
1878
3272
2017
1887
1627
3202
1867
2623
392
2605
1087
31
2952
2518
2112
2937
923
3178
577
2401
106
2735
793
351
2816
2225
1946
177
572
498
3428
1623
1856
1401
1976
1229
3176
3162
134
981
3441
1320
2742
266
279
3426
2695
2515
2873
16
1097
1633
2881
1223
2297
440
1950
1715
756
2226
111
1030
3299
3307
163
1338
1568
2283
1716
1945
1876
3265
1714
1004
2669
405
326
2960
2990
2196
3366
869
2865
1951
543
1054
696
2510
2218
2699
3395
2120
2138
1145
1990
1652
97
3106
703
2585
1143
2447
1708
2240
1820
1809
731
492
2370
3362
1511
2558
414
809
1230
3413
2592
2328
2725
2964
1089
1986
165
2584
701
2969
2528
1368
635
219
1676
841
1628
1495
1485
3416
2920
2180
1013
3124
594
1268
68
2103
2639
1390
1966
1082
2
836
2452
675
2769
619
935
645
3
665
1492
1995
559
969
1773
820
2155
126
3198
3256
1347
28
1907
2321
1034
2087
2036
2158
508
1762
1125
2948
2506
3432
733
2666
1555
1545
2118
372
373
1427
2479
2343
1250
791
1791
2853
2177
2358
1977
388
1194
172
1695
2808
1428
249
2184
1997
3040
513
3384
3209
3141
962
2279
3354
1637
517
1587
3379
2183
2308
2073
2994
2589
1356
1462
1305
1108
1361
798
1774
883
231
526
3146
1
775
875
819
273
2357
2153
2349
1851
380
759
1994
2779
2418
881
2933
96
3306
2413
2010
2672
2700
229
3150
3213
459
3068
955
201
952
1217
3392
491
1463
1199
363
2476
3196
2966
555
920
3096
2339
2186
2597
1383
175
1509
220
1512
3043
407
2807
34
2642
496
29
627
1828
2129
582
2878
2588
65
297
2178
629
2043
2398
1064
2041
3427
2635
1235
2392
1119
2197
398
1541
1353
2667
1489
300
164
3259
2844
2736
1974
1499
2314
865
2417
710
2840
1218
435
1523
1000
1592
1471
2874
2095
2038
2504
314
1436
1970
2631
218
3175
1504
3118
2379
3125
1548
61
971
2660
1318
2064
2100
204
3174
2430
729
553
1996
1011
3348
3038
2555
717
646
3070
1566
22
3060
2025
1071
3200
990
817
3377
1032
2686
423
948
684
383
3029
1786
2821
1279
490
3082
1088
2440
2739
2344
1322
3238
3055
2324
612
615
45
3105
3139
1832
991
1717
228
3059
1015
2678
276
2393
1277
1314
2554
2958
537
2569
1617
241
2334
1848
203
1109
1517
3436
2566
3312
307
780
1263
3000
1357
2252
2078
1663
1726
546
1648
807
263
1580
3022
275
1247
2086
1783
2716
778
748
3281
57
1308
216
2242
3034
1121
877
1770
381
2768
1643
2940
1935
2848
1251
1814
1610
2524
136
814
2976
908
2247
1379
788
2125
1621
1459
995
1384
2892
936
486
852
2679
801
2076
2675
1542
2832
1098
429
932
2886
2385
444
1415
907
502
70
1479
1244
3338
2386
436
631
1579
23
52
979
1853
3420
72
1153
5
335
358
2156
1644
3148
1737
2720
75
535
431
191
432
806
2851
1526
551
626
384
2914
1465
1797
3236
1177
2465
3165
1943
230
1238
3152
2553
550
288
1304
1507
1552
2814
3072
3123
2472
2420
2947
1141
3119
199
42
2245
889
712
1165
1781
1777
2397
3318
3260
474
1510
3231
2486
2582
1435
587
365
1926
3149
3329
520
1740
2750
465
1419
222
2135
1933
608
1572
2051
256
2866
3443
835
1550
2259
815
225
2714
2918
1188
1934
1468
1583
1598
379
3117
3369
2098
1968
2608
446
737
2932
270
1928
2475
1405
2312
259
150
600
640
1278
2463
3421
334
2451
127
1849
194
2130
1168
632
2868
1896
1720
154
139
2718
2233
1911
2689
845
1567
585
1547
340
522
3219
82
3191
453
2144
308
906
3292
404
2993
0
2696
2824
941
120
1137
3343
2996
1432
728
2364
2105
2330
3402
2924
3216
193
782
1365
1731
2089
1041
2419
939
3172
2006
3183
3120
1192
2229
3065
1918
1779
1924
2879
3042
1759
1370
2244
2974
1037
864
2621
1534
605
2938
1735
350
2670
2913
657
3394
1942
2912
574
1766
1316
3137
2804
485
207
982
1877
238
887
1443
1078
1025
2375
1481
1721
2021
1821
86
1404
3437
1729
3138
2571
900
3257
3140
695
487
347
558
533
967
155
857
2550
1237
1730
1409
2508
1352
1113
2796
3415
3277
1212
3327
2333
1101
3185
2433
258
323
330
1181
2175
2959
306
3109
2281
2511
2841
1009
329
1272
2306
2185
2336
1761
3324
1265
389
103
1389
3399
2008
2817
3154
1879
2448
2541
987
79
2347
309
2285
3425
3116
1057
774
3061
2916
998
2378
1038
901
2806
99
1952
1807
2857
784
1642
2342
3396
497
616
76
3245
190
1210
573
984
3157
1530
1040
1191
1219
1302
549
3208
3301
291
1307
2973
2823
2676
1335
2282
2110
1264
2356
1449
1615
2004
2484
3305
2221
813
1408
794
2023
688
911
2883
931
2934
773
2923
2538
2296
3382
691
1255
1039
2888
1007
2755
1490
1784
1260
2946
1588
1348
173
1201
2763
1170
1311
661
818
3347
2627
2441
1904
3079
1236
1306
2599
3353
3349
3229
772
71
3325
1117
2469
2223
2943
1227
1866
3218
1092
2536
1812
905
240
2323
336
2124
2272
2803
2987
839
1050
1252
1939
2318
2756
1288
195
2467
2258
656
1679
1535
1073
2338
2710
442
2559
2119
2563
1367
2455
1224
360
73
1824
2733
833
19
3355
1868
2651
2505
1243
1291
716
1573
3397
2509
1239
2818
556
1586
1927
87
458
1209
658
159
69
1920
895
1441
2967
3181
2096
425
324
2587
475
1095
697
1905
2706
1640
583
624
3121
2056
1589
1328
2123
3405
1270
1554
1081
2895
142
3434
1317
2018
1372
1562
2436
1245
1273
102
2945
1176
1225
2548
494
2901
506
1068
3128
3214
3411
1162
1626
338
2979
2054
1889
2294
313
3129
2552
2766
1850
2970
47
569
2371
855
244
945
1732
985
420
1636
885
743
2094
3361
2981
2039
1222
331
95
2040
989
642
1106
2906
2115
1984
1377
1519
1869
3100
1453
2547
1375
983
456
2146
170
1502
224
2416
1941
1019
1699
2179
1559
1332
2520
1656
1897
1650
2450
292
400
1042
1667
2434
1345
3026
1240
1166
221
2443
13
3094
2593
3145
2477
1150
2466
3322
1414
859
74
1842
247
197
2060
1451
2470
3084
223
1159
843
2044
1319
750
790
3240
682
2956
2063
2784
564
3310
3233
1775
2374
320
3264
1044
2059
2915
2896
3393
3328
2765
2070
1226
2842
3177
2922
1100
2637
576
3011
1959
362
1840
411
410
719
3254
2061
1503
3251
2951
2600
621
333
2741
2726
1515
3372
2941
1253
148
2011
40
3193
2899
1539
2919
2833
269
873
856
606
2503
1282
3215
108
3435
2468
2780
842
723
1157
757
2680
2549
2707
3179
613
3241
1595
3364
3227
1931
3290
3080
169
2495
2066
1330
112
3014
2963
1875
2069
1096
2080
3101
997
591
722
1894
185
1385
1482
1287
147
1967
3036
137
294
1776
2449
1855
874
1538
2162
1122
1725
2822
650
3423
699
3207
2176
428
578
2075
567
355
3408
3156
2310
1484
1140
3442
738
914
3300
2521
2351
3332
531
1629
1182
3387
986
2108
1712
1908
851
2820
1274
1949
192
3008
1639
1600
1079
1558
2648
1334
3076
2767
3378
568
48
2885
2298
2000
3346
2496
2454
1452
283
393
570
992
3153
1031
2643
2955
915
1292
1916
3135
649
3115
2173
27
55
1483
2299
702
509
1080
2207
3127
235
1655
528
1649
2849
870
278
370
2581
1413
1293
2159
1902
1581
2813
1973
1393
2634
3012
1298
683
1753
3071
415
1284
739
1543
3023
595
3263
2216
1021
1831
2957
1594
2782
681
762
2786
2944
1179
1913
745
3211
2997
1746
1280
1052
202
2939
2029
2622
1056
1682
744
3134
lables
[1023, 151, 2801, 1864, 1183, 1687, 260, 1922, 1745, 2045, 2411, 3274, 83, 1912, 1024, 1024, 2653, 2653, 2954, 3187, 2717, 938, 296, 296, 1131, 3063, 3403, 1525, 1458, 804, 516, 450, 1246, 2758, 3282, 2423, 3316, 1722, 1930, 2835, 2263, 2431, 2602, 433, 1790, 482, 482, 3250, 2910, 2354, 2325, 1094, 1094, 1094, 2446, 3027, 2128, 2128, 3016, 412, 1882, 1874, 2604, 709, 4, 2903, 2903, 3389, 3389, 1985, 3339, 345, 140, 2439, 1940, 277, 3424, 673, 1358, 1962, 3400, 3032, 2657, 2028, 1433, 1213, 1213, 1771, 2387, 2929, 2929, 2540, 3057, 2157, 2748, 844, 834, 2789, 2867, 2168, 2168, 2249, 541, 2067, 2067, 53, 53, 2137, 2526, 2526, 1574, 880, 2995, 1396, 2236, 2412, 1816, 2460, 704, 1953, 840, 3112, 953, 1756, 26, 328, 3308, 2269, 2545, 2545, 2545, 1806, 214, 663, 3370, 43, 43, 1400, 666, 2480, 2170, 1852, 2169, 1505, 2456, 2456, 2352, 364, 1929, 3053, 1144, 2880, 2880, 2290, 2516, 2984, 3017, 538, 676, 1516, 1724, 1439, 3056, 3056, 2724, 2724, 394, 1450, 3206, 1758, 1758, 1758, 680, 2251, 1744, 1827, 2590, 3252, 1028, 2727, 2609, 2030, 977, 3167, 1329, 838, 2646, 1014, 3058, 1964, 2049, 1123, 2227, 1061, 802, 3182, 796, 100, 100, 2406, 2406, 3285, 337, 1888, 254, 3205, 1969, 2109, 643, 659, 2691, 1609, 951, 705, 1906, 1906, 2264, 609, 274, 2875, 2875, 1611, 1846, 1846, 803, 1022, 2435, 413, 1455, 2287, 2053, 2191, 2191, 2253, 1631, 2615, 3099, 687, 1149, 670, 897, 1685, 2661, 2661, 130, 385, 385, 1207, 3365, 1670, 105, 1051, 1677, 1010, 2241, 1407, 418, 418, 783, 81, 81, 81, 671, 3158, 3158, 1283, 470, 2614, 1618, 2126, 652, 460, 396, 3143, 1564, 2935, 237, 1657, 1026, 1343, 1665, 926, 926, 1151, 2065, 2065, 3171, 1524, 59, 3278, 1271, 2704, 827, 827, 954, 954, 1733, 1858, 1858, 1858, 2649, 3108, 3330, 317, 644, 824, 1169, 3359, 1053, 3048, 30, 443, 443, 437, 1355, 3169, 1514, 2034, 3003, 1114, 1871, 1871, 1202, 1625, 1625, 149, 2596, 2355, 2847, 2705, 3267, 1411, 1142, 1152, 980, 980, 2542, 2542, 2583, 2777, 2250, 2893, 755, 755, 1461, 3111, 1016, 1765, 3391, 367, 1472, 1049, 2606, 2606, 1728, 686, 749, 1604, 1086, 2574, 957, 1597, 1789, 1825, 1825, 2340, 2058, 910, 2317, 589, 447, 2083, 2444, 1981, 863, 2749, 2402, 2633, 198, 2568, 2530, 2530, 2530, 2530, 886, 90, 792, 2369, 2369, 2369, 25, 295, 1366, 3133, 2042, 2042, 1739, 1546, 1546, 15, 847, 2122, 135, 1346, 3131, 2711, 2493, 2493, 1487, 1487, 1487, 2424, 2077, 925, 2732, 339, 339, 590, 590, 590, 1173, 1070, 2410, 994, 1549, 399, 399, 399, 399, 1310, 1310, 964, 1711, 949, 332, 2663, 893, 893, 1707, 1707, 2421, 2421, 2382, 3345, 3345, 1847, 854, 862, 268, 161, 1743, 610, 1354, 1354, 2703, 2703, 2703, 603, 603, 685, 2794, 2794, 1132, 1132, 1857, 2494, 1205, 402, 2860, 2860, 2860, 1719, 2237, 152, 113, 3246, 693, 693, 1992, 1537, 1309, 1085, 200, 2395, 3356, 3262, 2802, 2219, 2783, 1576, 2082, 2082, 1204, 2998, 2409, 2409, 167, 179, 2489, 2489, 1469, 3284, 1710, 1710, 1529, 930, 942, 2335, 1180, 1960, 1299, 1496, 2292, 1403, 2662, 1570, 1570, 104, 104, 1420, 1634, 832, 2745, 2200, 1561, 2161, 2161, 310, 2846, 2210, 6, 1077, 466, 3114, 3114, 561, 561, 1315, 1785, 89, 1815, 1815, 1815, 581, 1999, 2713, 484, 234, 1127, 1127, 758, 758, 3268, 3268, 1003, 3224, 3224, 3224, 3224, 3224, 884, 469, 1475, 1475, 1475, 3001, 2273, 2284, 118, 3253, 3253, 1020, 1020, 785, 2377, 77, 287, 539, 808, 305, 2999, 2683, 1364, 730, 188, 1256, 2628, 1983, 1983, 2514, 850, 1801, 2898, 3243, 3243, 924, 593, 369, 349, 1378, 32, 1196, 1196, 1961, 741, 741, 1046, 1046, 3326, 2525, 2525, 1540, 1540, 1540, 2872, 2872, 3180, 232, 3110, 3039, 1399, 1399, 597, 597, 1988, 1681, 2368, 312, 141, 552, 301, 391, 3390, 2427, 672, 1395, 3081, 2688, 1755, 1755, 734, 734, 3309, 937, 694, 3357, 64, 2429, 60, 3087, 1296, 1296, 1296, 3228, 1958, 1958, 1885, 1885, 3122, 2488, 357, 2329, 2949, 2551, 1178, 311, 311, 2891, 2009, 3321, 3005, 3005, 1154, 3430, 2367, 2367, 2367, 1104, 3414, 3414, 1520, 1520, 2171, 189, 2930, 3007, 483, 965, 3404, 1748, 946, 946, 1963, 879, 2928, 3210, 2971, 1688, 1915, 386, 1862, 828, 641, 280, 3220, 3002, 3088, 2985, 2501, 2149, 2091, 265, 265, 2471, 80, 2638, 2638, 575, 2788, 1607, 299, 3151, 2320, 2320, 2320, 3166, 3103, 3103, 3223, 3223, 882, 2350, 2238, 2311, 3188, 2391, 2391, 2391, 2391, 501, 2858, 488, 1782, 2980, 795, 1214, 78, 1606, 1606, 1233, 3383, 3383, 789, 789, 2572, 1006, 1062, 547, 17, 1232, 2953, 1805, 3334, 3028, 1431, 579, 2616, 1584, 3019, 1440, 1808, 1808, 1418, 1937, 1423, 1129, 2199, 2097, 2747, 1380, 2630, 1654, 2665, 1394, 3192, 1494, 2843, 1799, 2839, 2474, 2474, 799, 1466, 1466, 1466, 1018, 1982, 1982, 1982, 611, 1500, 830, 298, 2268, 2373, 1704, 2027, 1339, 2838, 2838, 409, 3385, 3439, 700, 963, 1803, 1678, 1120, 1120, 1147, 1147, 2900, 88, 2632, 2632, 1686, 2522, 2522, 2267, 1406, 1406, 771, 2363, 940, 2805, 2831, 1872, 2902, 2902, 2925, 3304, 970, 210, 210, 2326, 2326, 1792, 1792, 1792, 878, 1146, 3045, 918, 1261, 1261, 226, 1488, 2882, 2882, 2882, 973, 1269, 2968, 2327, 14, 972, 837, 837, 655, 950, 1713, 1074, 1624, 1624, 1155, 1155, 2414, 2133, 628, 1794, 439, 2020, 1387, 2659, 2482, 2482, 2151, 2348, 2348, 2734, 2702, 1063, 2136, 1909, 3142, 3142, 3142, 1478, 271, 3030, 2917, 2810, 2586, 2624, 2624, 633, 633, 1769, 1544, 1605, 725, 3212, 3212, 2591, 3098, 101, 3232, 325, 1612, 1612, 205, 205, 1630, 1630, 2081, 1090, 124, 614, 178, 3271, 489, 1793, 1793, 2461, 2775, 714, 479, 479, 2188, 2982, 448, 448, 1780, 2166, 2613, 2613, 853, 929, 196, 196, 1331, 1045, 2160, 707, 1341, 2277, 2407, 2652, 1381, 2507, 3194, 2712, 2712, 3044, 770, 770, 1684, 1979, 1980, 3091, 960, 960, 2361, 2629, 3433, 1837, 735, 2762, 3269, 1658, 1658, 507, 1186, 504, 2102, 2228, 620, 2498, 1336, 3074, 3074, 718, 530, 449, 449, 85, 944, 1200, 1787, 2322, 2322, 3033, 3303, 3438, 3438, 1467, 898, 3203, 251, 1641, 227, 2812, 1593, 3363, 3363, 2864, 3367, 3367, 3367, 3297, 2093, 2033, 2362, 3159, 377, 377, 2792, 2792, 1772, 452, 1289, 781, 2729, 2729, 2729, 2798, 2798, 2239, 2965, 184, 1521, 3248, 3302, 1948, 1666, 3062, 662, 2519, 1585, 1036, 2265, 2265, 2265, 956, 416, 927, 1843, 1843, 2491, 2491, 1506, 2576, 1860, 2534, 3270, 145, 1084, 521, 1513, 1513, 2743, 1457, 1577, 1998, 1445, 3422, 2681, 2681, 1865, 1865, 3406, 2107, 1671, 511, 2776, 2057, 2057, 2057, 1422, 1422, 1947, 1947, 290, 290, 3024, 1991, 753, 1321, 3289, 3289, 3289, 2532, 2026, 390, 848, 959, 2255, 860, 2222, 2578, 2658, 3217, 3217, 2790, 1881, 1881, 1881, 1881, 1881, 1881, 1845, 2271, 2598, 2598, 110, 110, 2746, 2256, 457, 98, 98, 98, 1103, 1350, 2962, 2001, 1697, 441, 899, 2845, 3035, 3418, 2856, 2856, 2319, 2319, 2612, 1669, 2654, 1870, 571, 1172, 1172, 1802, 2154, 1425, 1474, 1474, 1474, 1473, 2481, 2147, 1778, 293, 904, 2850, 2224, 1295, 524, 3320, 3320, 424, 503, 1599, 2641, 2855, 2855, 667, 667, 667, 667, 3279, 3279, 1919, 18, 1486, 1486, 272, 2206, 451, 1861, 1861, 698, 698, 2492, 2492, 346, 1241, 2862, 677, 187, 187, 180, 3189, 2190, 1373, 58, 943, 1646, 1646, 3095, 1161, 2869, 3160, 33, 1819, 1884, 1884, 580, 826, 826, 826, 1553, 1553, 1091, 1198, 2770, 653, 1938, 3429, 3429, 3429, 1211, 2640, 2640, 2908, 2908, 1189, 2487, 708, 1527, 975, 2346, 3234, 2201, 1532, 3147, 751, 751, 342, 2671, 2671, 2671, 622, 1386, 2005, 3358, 1518, 2403, 3298, 3298, 3298, 2601, 2438, 3417, 3258, 3258, 2116, 3046, 3046, 2645, 2926, 1972, 1017, 1248, 3190, 2211, 2211, 1898, 1823, 1823, 1810, 166, 2307, 1434, 2483, 2483, 1754, 1754, 3004, 1917, 1672, 746, 3021, 732, 1613, 1187, 253, 805, 2209, 2773, 2772, 3242, 2664, 2760, 2760, 2837, 1266, 1703, 849, 625, 3344, 1702, 2694, 2694, 39, 1863, 162, 1160, 2799, 91, 91, 3006, 505, 2243, 2243, 2884, 1901, 1901, 421, 2376, 3077, 478, 1603, 1603, 284, 35, 419, 1221, 1221, 267, 267, 2134, 1290, 2231, 3351, 2610, 3050, 1327, 1327, 3239, 1727, 1501, 1501, 557, 1259, 438, 2141, 2090, 3440, 2687, 654, 2215, 2163, 1216, 1841, 1698, 2819, 1661, 2072, 2072, 1701, 468, 933, 2024, 2024, 1033, 2715, 3360, 366, 2257, 2150, 1575, 2360, 996, 133, 523, 1464, 2564, 422, 2270, 2270, 2744, 2535, 1891, 2617, 1651, 2143, 2396, 2035, 519, 352, 1281, 1921, 3168, 2544, 2195, 1124, 1124, 1058, 1058, 215, 1371, 1130, 3275, 3078, 245, 674, 2722, 3064, 2302, 2889, 3069, 2071, 902, 1878, 2017, 1887, 1627, 1627, 3202, 1867, 2623, 392, 2605, 1087, 31, 31, 2952, 2518, 2112, 2937, 923, 3178, 577, 2401, 2401, 106, 2735, 2735, 793, 793, 351, 2816, 2816, 2225, 1946, 177, 572, 572, 498, 3428, 1623, 1623, 1856, 1856, 1401, 1976, 1229, 3176, 3162, 134, 981, 3441, 1320, 2742, 279, 3426, 2695, 2515, 2873, 16, 1097, 1633, 2881, 1223, 2297, 440, 1950, 1715, 756, 756, 2226, 2226, 111, 1030, 3299, 3307, 163, 163, 1338, 1338, 1568, 2283, 1716, 1945, 3265, 1714, 1004, 2669, 405, 326, 2960, 2990, 869, 2865, 1951, 1054, 696, 696, 696, 2510, 2510, 2218, 2699, 3395, 2120, 2120, 2138, 2138, 2138, 1145, 1990, 1652, 97, 3106, 703, 2585, 1143, 1143, 2447, 1708, 2240, 1820, 1809, 731, 492, 2370, 2370, 2370, 3362, 1511, 2558, 414, 809, 1230, 1230, 3413, 2592, 2328, 2328, 2725, 2964, 1089, 1986, 165, 2584, 2969, 2528, 1368, 635, 219, 1676, 841, 1628, 1495, 1485, 3416, 2920, 2180, 1013, 3124, 594, 1268, 68, 2103, 2639, 1390, 1966, 1082, 2, 836, 2452, 675, 2769, 619, 935, 645, 3, 3, 665, 1492, 1995, 1995, 559, 969, 969, 1773, 820, 2155, 126, 3198, 3198, 3256, 1347, 28, 28, 1907, 2321, 1034, 2087, 2036, 2036, 2158, 2158, 508, 1762, 1125, 2948, 2506, 2506, 3432, 733, 2666, 1555, 1545, 1545, 2118, 2118, 372, 373, 1427, 2479, 2343, 1250, 1250, 1250, 791, 791, 791, 791, 1791, 2853, 2177, 2358, 1977, 388, 1194, 172, 1695, 2808, 2808, 1428, 249, 2184, 1997, 3040, 513, 3384, 3209, 3141, 962, 2279, 3354, 3354, 1637, 517, 1587, 3379, 2183, 2308, 2073, 2994, 2994, 2589, 2589, 1356, 1462, 1305, 1305, 1108, 1108, 1361, 798, 798, 1774, 1774, 883, 231, 526, 3146, 1, 775, 875, 819, 273, 2357, 2153, 2153, 2153, 2153, 2349, 2349, 1851, 380, 759, 1994, 2779, 2418, 881, 2933, 2933, 2933, 96, 3306, 2413, 2010, 2672, 2700, 229, 3150, 3213, 3213, 459, 3068, 955, 201, 952, 1217, 1217, 3392, 491, 1463, 1463, 1199, 363, 363, 2476, 2476, 2966, 555, 920, 3096, 2339, 2186, 2597, 1383, 1383, 175, 1509, 220, 1512, 3043, 407, 2807, 34, 2642, 29, 627, 627, 1828, 2129, 2129, 582, 2878, 2588, 2588, 65, 297, 297, 2178, 2043, 2398, 2041, 2635, 1235, 2392, 1119, 1119, 2197, 398, 1541, 1353, 1489, 300, 3259, 3259, 2844, 2736, 1974, 1499, 2314, 865, 865, 2417, 2417, 710, 1218, 435, 1523, 1000, 1000, 1592, 1471, 2874, 2095, 2038, 2504, 314, 1436, 1970, 2631, 218, 3175, 1504, 3118, 3118, 3125, 1548, 61, 971, 971, 2660, 1318, 2064, 2100, 204, 3174, 2430, 729, 553, 1011, 1011, 3348, 3038, 646, 3070, 1566, 22, 22, 3060, 2025, 1071, 3200, 990, 817, 3377, 1032, 2686, 948, 684, 383, 3029, 3029, 1786, 2821, 1279, 490, 3082, 1088, 2440, 2739, 2344, 1322, 3238, 3055, 2324, 612, 615, 45, 3105, 3105, 3139, 1832, 991, 1717, 228, 3059, 3059, 1015, 2678, 276, 2393, 1277, 2554, 2958, 2569, 2569, 2569, 1617, 2334, 1848, 203, 1109, 1517, 1517, 3436, 2566, 3312, 307, 780, 780, 1263, 3000, 3000, 1357, 2252, 2252, 2078, 1663, 1726, 546, 1648, 807, 807, 263, 263, 1580, 1580, 3022, 275, 1247, 2086, 1783, 2716, 778, 748, 3281, 57, 57, 1308, 216, 216, 2242, 3034, 1121, 877, 381, 2768, 1643, 2940, 1935, 2848, 1251, 1814, 1610, 1610, 2524, 136, 814, 2976, 908, 2247, 1379, 788, 2125, 2125, 1621, 1459, 995, 995, 1384, 1384, 936, 486, 852, 2679, 801, 2076, 2675, 2832, 1098, 429, 932, 932, 2886, 2385, 444, 1415, 907, 502, 70, 1479, 1244, 3338, 2386, 436, 631, 1579, 23, 23, 52, 1853, 3420, 3420, 72, 72, 1153, 1153, 5, 335, 358, 2156, 1644, 3148, 1737, 2720, 75, 75, 535, 431, 191, 432, 806, 2851, 1526, 551, 551, 551, 551, 626, 384, 2914, 1465, 1797, 3236, 1177, 2465, 3165, 1943, 230, 230, 1238, 3152, 2553, 550, 288, 1507, 1552, 2814, 3072, 3123, 2472, 2420, 2420, 2947, 2947, 1141, 3119, 199, 42, 2245, 889, 889, 712, 712, 1165, 1781, 1777, 1777, 2397, 3318, 3260, 3260, 474, 1510, 3231, 2486, 2582, 2582, 1435, 587, 365, 365, 1926, 3149, 3329, 3329, 520, 1740, 2750, 465, 1419, 222, 2135, 1933, 608, 1572, 2051, 256, 2866, 2866, 3443, 835, 1550, 2259, 815, 815, 815, 225, 2714, 2714, 2918, 1188, 1934, 1468, 1583, 1598, 379, 3117, 3369, 2098, 1968, 1968, 2608, 446, 446, 737, 2932, 270, 1928, 2475, 1405, 2312, 2312, 2312, 259, 150, 600, 640, 2463, 2463, 2463, 334, 2451, 127, 1849, 194, 2130, 1168, 1168, 632, 632, 632, 2868, 1896, 1720, 154, 139, 2718, 2233, 1911, 1911, 2689, 845, 1567, 585, 1547, 340, 522, 3219, 3219, 82, 3191, 453, 2144, 308, 3292, 3292, 404, 2993, 0, 0, 2824, 941, 120, 1137, 3343, 2996, 2996, 1432, 728, 2364, 2105, 2105, 2330, 2924, 3216, 782, 782, 1365, 2089, 1041, 2419, 939, 939, 3172, 2006, 3183, 3120, 1192, 2229, 3065, 3065, 1918, 1779, 1924, 1924, 2879, 3042, 1759, 1370, 2244, 2974, 1037, 864, 2621, 1534, 1534, 605, 2938, 1735, 1735, 1735, 350, 2670, 2913, 657, 3394, 1942, 2912, 574, 1766, 1316, 3137, 2804, 2804, 485, 207, 982, 1877, 238, 887, 1443, 1443, 1078, 1025, 2375, 1481, 1721, 1821, 86, 1404, 3437, 3437, 1729, 1729, 3138, 900, 900, 3257, 3140, 695, 487, 558, 533, 967, 155, 155, 857, 2550, 2550, 1237, 1237, 1730, 1409, 2508, 1352, 1113, 1113, 2796, 3277, 1212, 3327, 2333, 2333, 2333, 1101, 3185, 2433, 258, 323, 330, 330, 330, 1181, 2959, 2959, 2959, 306, 3109, 2281, 2511, 2841, 1009, 329, 1272, 1272, 2306, 2336, 2336, 1761, 3324, 3324, 1265, 389, 1389, 3399, 2008, 2817, 3154, 1879, 2448, 2448, 2448, 2541, 2541, 987, 79, 2347, 2347, 309, 309, 2285, 3425, 3425, 3116, 1057, 3061, 2916, 998, 2378, 1038, 901, 2806, 99, 1952, 1807, 2857, 784, 1642, 3396, 3396, 497, 616, 76, 3245, 190, 1210, 573, 984, 984, 984, 3157, 1530, 1040, 1191, 1219, 1302, 549, 3208, 3301, 3301, 3301, 291, 1307, 1307, 2823, 2676, 1335, 2282, 1264, 1264, 2356, 1449, 1449, 1449, 1615, 2004, 2484, 3305, 2221, 813, 813, 1408, 794, 2023, 688, 911, 911, 931, 2934, 773, 2923, 2538, 2296, 3382, 691, 1255, 1255, 1039, 2888, 1007, 2755, 1490, 1784, 1260, 1260, 1588, 1348, 173, 173, 173, 1201, 1201, 1201, 2763, 1311, 661, 818, 3347, 2627, 2441, 1904, 1236, 1306, 2599, 3353, 3349, 3229, 3229, 772, 71, 1117, 2469, 2223, 2943, 1227, 1866, 3218, 3218, 1092, 2536, 1812, 905, 905, 240, 2323, 336, 2124, 2272, 2272, 2803, 2987, 839, 839, 1050, 1252, 1939, 2756, 2756, 1288, 2467, 2258, 2258, 656, 1679, 1535, 1073, 2338, 2710, 2559, 2119, 2563, 1367, 2455, 1224, 360, 73, 1824, 2733, 833, 3355, 1868, 2651, 2505, 1243, 1291, 716, 1573, 2509, 1239, 2818, 1927, 1927, 87, 458, 1209, 658, 159, 159, 1920, 895, 1441, 1441, 2967, 3181, 2096, 425, 324, 324, 2587, 475, 1095, 697, 697, 1905, 1640, 583, 624, 3121, 2056, 1589, 1328, 2123, 2123, 3405, 1270, 1554, 1554, 1081, 2895, 142, 3434, 3434, 1317, 2018, 1372, 1562, 2436, 1245, 1273, 102, 2945, 1176, 1225, 2548, 494, 506, 3128, 3214, 3411, 3411, 1162, 1626, 338, 338, 2979, 2054, 1889, 1889, 2294, 313, 3129, 3129, 2766, 1850, 2970, 2970, 47, 569, 2371, 855, 244, 945, 985, 420, 1636, 885, 743, 2094, 3361, 2981, 2039, 1222, 331, 331, 95, 2040, 642, 1106, 2906, 2115, 2115, 1984, 1377, 1519, 1869, 3100, 3100, 1453, 2547, 1375, 1375, 983, 983, 456, 2146, 170, 1502, 224, 2416, 1941, 1019, 1699, 2179, 1559, 1332, 2520, 1656, 1656, 1897, 1650, 2450, 2450, 292, 400, 1042, 1042, 1667, 2434, 1345, 3026, 1240, 1166, 2443, 2443, 13, 3094, 2593, 3145, 2477, 1150, 2466, 3322, 1414, 859, 1842, 1842, 197, 2060, 1451, 2470, 3084, 3084, 223, 1159, 843, 2044, 1319, 750, 790, 3240, 682, 2956, 2784, 564, 564, 3233, 1775, 1775, 2374, 320, 3264, 3264, 1044, 2059, 2915, 2896, 3393, 3328, 2765, 2070, 1226, 1226, 2842, 3177, 2922, 1100, 2637, 576, 576, 3011, 1959, 362, 1840, 411, 410, 719, 719, 3254, 2061, 1503, 3251, 2951, 2951, 2600, 621, 333, 2741, 2726, 1515, 3372, 3372, 2941, 2941, 1253, 148, 2011, 40, 3193, 2899, 1539, 2919, 2833, 269, 873, 856, 606, 2503, 1282, 3215, 108, 3435, 2468, 2468, 2780, 842, 723, 723, 723, 723, 1157, 757, 2549, 2707, 2707, 3179, 613, 613, 3241, 1595, 3364, 3227, 1931, 3290, 3080, 169, 2495, 2066, 1330, 3014, 2963, 1875, 2069, 1096, 2080, 3101, 997, 591, 722, 1894, 185, 1385, 1482, 1287, 147, 1967, 3036, 294, 1776, 1776, 2449, 2449, 1855, 1538, 2162, 1122, 1725, 2822, 650, 3423, 699, 3207, 2176, 428, 578, 2075, 567, 567, 355, 3408, 3156, 2310, 2310, 2310, 2310, 1484, 1140, 3442, 738, 914, 914, 2521, 2351, 2351, 3332, 531, 1629, 1629, 1182, 3387, 986, 2108, 1712, 1908, 851, 2820, 2820, 1274, 1949, 192, 3008, 1639, 1600, 1079, 1558, 1558, 2648, 2648, 1334, 3076, 2767, 3378, 568, 48, 2885, 2298, 2000, 3346, 2496, 2454, 1452, 1452, 1452, 283, 393, 570, 992, 3153, 1031, 2643, 2643, 2643, 2643, 2955, 915, 1292, 1916, 1916, 3135, 649, 3115, 2173, 27, 55, 1483, 2299, 702, 509, 1080, 2207, 3127, 235, 1655, 528, 1649, 2849, 870, 278, 370, 2581, 1413, 1413, 1293, 2159, 1902, 1581, 1581, 1581, 2813, 1973, 2634, 3012, 3012, 1298, 683, 1753, 3071, 415, 1284, 739, 739, 1543, 1543, 1543, 3023, 595, 3263, 3263, 2216, 1021, 1831, 2957, 1594, 2782, 681, 762, 2786, 2944, 1179, 1913, 745, 745, 3211, 2997, 1746, 1280, 1052, 202, 2939, 2029, 2622, 1056, 1682, 744, 744, 3134]
Age_current
[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1]

In [7]:
with open("tmp_age.pickle", "wb") as f:
    pickle.dump((images, labels, ageList), f)

In [ ]:
with open("tmp_age.pickle", "rb") as f:
    images, labels, ageList = pickle.load(f)

In [11]:
images[0].shape


Out[11]:
(1, 20000)

Making the Dataset


In [9]:
res_images = []
res_age = []

# for img in images:
#     res_images.append(img.reshape(1,10000))    # (100*100 image size)

for age in ageList:
    res_age.append(np.array(age).reshape(1,))
    
res_images = np.concatenate(images, axis=0)
res_age = np.concatenate(res_age,axis=0)

In [ ]:


In [10]:
X,y = res_images,res_age

In [11]:
X.shape


Out[11]:
(2968, 20000)

In [12]:
y.shape


Out[12]:
(2968,)

In [ ]:

Test the Model for Age


In [13]:
def predict(X,y):

    kf = KFold(X.shape[0], n_folds=10, shuffle=True)
    accuracy = 0.0
    precision = [0, 0]
    recall = [0, 0]
    f_measure = [0, 0]

    lr = LogisticRegression()
    inbuilt_accuracy_score = 0.0

    for test, train in kf:
        X_Train, X_Test = X[train], X[test]
        Y_Train, Y_Test = y[train], y[test]

        lr.fit(X_Train, Y_Train)

        pred = lr.predict(X_Test)

        inbuilt_accuracy_score += accuracy_score(Y_Test, (pred))

    inbuilt_accuracy_score /= 10


    print "\nAccuracy from inbuilt Method: ", inbuilt_accuracy_score
    print(metrics.classification_report(Y_Test, pred))
    print(metrics.confusion_matrix(Y_Test, pred))

In [14]:
predict(X,y)


Accuracy from inbuilt Method:  0.568432761956
             precision    recall  f1-score   support

          0       0.66      0.63      0.64      1703
          1       0.39      0.42      0.41       969

avg / total       0.56      0.55      0.56      2672

[[1067  636]
 [ 561  408]]

Test the Model for Age without Edge


In [16]:
X_without_edge,y = res_images[:,:10000],res_age
X_without_edge.shape


Out[16]:
(2968, 10000)

In [17]:
predict(X_without_edge,y)


Accuracy from inbuilt Method:  0.578615779486
             precision    recall  f1-score   support

          0       0.65      0.73      0.69      1685
          1       0.42      0.34      0.38       987

avg / total       0.57      0.58      0.57      2672

[[1226  459]
 [ 652  335]]

In [ ]:


In [ ]:

Histogram of Ages


In [23]:
#!/usr/bin/env python
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
%matplotlib inline

#mu, sigma = 100, 15
#x = mu + sigma*np.random.randn(10000)
ages = [prof['age'] for prof in my_original_list]
x= np.array(ages) 
# the histogram of the data
n, bins, patches = plt.hist(x, 50, normed=1, facecolor='blue', alpha=0.75)

# add a 'best fit' line
#y = mlab.normpdf(bins, mu, sigma)
#l = plt.plot(bins, y, 'r--', linewidth=1)

plt.xlabel('Age')
plt.ylabel('Probability')
plt.title(r'$Histogram\ \ of\ \ Ages$')
plt.axis([1, 80, 0, 0.09])
plt.grid(True)

plt.show()