Predicting Customer Transaction Values in Bank - Boosted Trees Ensemble (In-Progress)

Machine Learning
jupyter
Kaggle
Author

Kashish Mukheja

Published

Friday, 01 September 2023

Predicting Customer Transaction Values in Bank

This notebook is focused on the santander-value-prediction-challenge published to Kaggle a few years back.

Mission Statement

My mission should I chose to accept it, is to predict transaction values for potential customers to the Santander bank in order to provide personalised ads and services to said potential customers. The bank believes that providing personalised services to the customer is vital in this digitized world. Here are some of the benefits for providing personalised financial services to the customers:

  1. Enhanced Customer Experience and trust: Personalization tailors the banking experience to individual preferences and needs. This leads to higher customer satisfaction.
  2. Improved Engagement: When customers receive services that are relevant to their financial goals and lifestyles, they are more likely to actively engage with the bank
  3. Targeted Offerings: By analyzing customer data, banks can offer tailored product recommendations, such as credit cards, loans, or investment options
  4. Competitive Advantage: In a competitive market, banks that can offer personalized services stand out. Customers are more likely to choose a bank that understands and caters to their individual financial situations and aspirations.
  5. Revenue Growth: By offering personalized services and products, banks can cross-sell and upsell effectively. When customers see the value in the offerings, they are more inclined to invest and expand their relationship with the bank

A Happy Customer, A Happy Bank :)

Evaluation

The evaluation metric for this competition is Root Mean Squared Logarithmic Error. It’s a variation of the Root Mean Squared Error (RMSE) that takes the logarithm of the predicted and actual values before calculating the squared differences

The formula for RMSLE is represented as follows:

RMSLE = \(\sqrt{\frac{1}{n} \sum_{i=1}^n ((\log(p_i + 1) - \log(a_i+1))^2 }\)

Where:

\(n\) is the total number of observations in the (public/private) data set,

\(p_i\) is your prediction of target, and

\(a_i\) is the actual target for \(i\).

\(log(x)\) is the natural logarithm of \(x\) (\(log_e(x)\).

RMSE Vs RMSLE

The major difference between the two lies in the concept of overestimation and underestimation.

Overestimation: The model or estimate is too optimistic and predicts a value that is greater than what actually occurs. For E.g., overestimating value of a customer, and thus bank providing some additional benefits or services to that customer.

Underestimation: The model or estimate is too conservative and predicts a value that is lower than what actually happens. For E.g., underestimating the value of a customer, and thus bank misses out on providing some additional benefits or services to that customer.

RMSLE works better when underestimation can’t be tolerated, as it scales the data to logarithmic value. Thereby heavily reducing the chances of being affected by outliers (with very high numbers).

Importing the Libraries

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import os

Setting up the pandas dataframe

# Declaring file paths
train_file_path = "train.csv"
test_file_path = "test.csv"

# For Kaggle...
# train_file_path = "/kaggle/input/santander-value-prediction-challenge/train.csv"
# test_file_path = "/kaggle/input/santander-value-prediction-challenge/test.csv"
# Reading the train and test csv file and storing into pandas dataframe
train_df = pd.read_csv(train_file_path)
test_df = pd.read_csv(test_file_path)
def display_all(df):
    with pd.option_context("display.max_rows", 1000): 
        with pd.option_context("display.max_columns", 1000): 
            display(df)

A high glance look at the data

display_all(train_df)
ID target 48df886f9 0deb4b6a8 34b15f335 a8cb14b00 2f0771a37 30347e683 d08d1fbe3 6ee66e115 20aa07010 dc5a8f1d8 11d86fa6a 77c9823f2 8d6c2a0b2 4681de4fd adf119b9a cff75dd09 96f83a237 b8a716ebf 6c7a4567c 4fcfd2b4d f3b9c0b95 71cebf11c d966ac62c 68b647452 c88d108c9 ff7b471cd d5308d8bc 0d866c3d7 bc3f77679 bd8f989f1 0eff5bf95 22ed6dba3 92b13ebba c330f1a67 233c7c17c 2cb4d123e eeac16933 87ffda550 822e49b95 316b978cd d04e16aed 5d5c5ce6d ec863cb52 11ad148bd ea18d720e 408d86ce9 69d8b4020 b0868a049 80b14398e ecdef52b2 c36bcacc5 151d318cd ab0cddb90 2d6bd8275 dfdf4b580 c87722678 a8c320153 7df8788e8 a04684f1f fa977f17b feed9d437 645b47cde 7298ca1ef d80abf8bc 654dd8a3b 7fc39583c 8c94b6675 e421c414e 5b91580ee 964335fdf 5a86cabd0 6cb207ac9 c1bc828da e90ed19da c4d38135f 968b01ca3 26b423c42 0656586a4 b4ced4b7a 0b8e10df6 603e85eb7 605728195 4e8196700 f115e74c0 9ca0eee11 472cd130b ee7e4581d 3e0e55648 a939664aa b0f5ed414 a72e0bf30 e662f1672 54b1c1bc0 ec1425047 78a879b5d bd550871c 828b327a6 3268914c7 21e0e6ae3 ec73030f6 c5b30277a c16a7d537 64534cc93 bd6671d31 0f8d7b98e aab0aeb4b 9a9b4a012 8367dfc36 251d1aa17 92e056c5c c377b9acf e0f6a993a f3e544d66 0cb171797 80c0c9910 9f8df01bd 0a69cc2be 563d2f09a 963a49cdc 7ee833549 7b58c8e37 cde9c35e8 587a5d8c3 408d191b3 42fdff3a0 1e8801477 3770cb9fa 133714358 15dba7177 604ac0633 cbf34125e 4563c7ee5 c679b0013 93f686d09 8e7a80f64 e034322f0 60cb16e88 9d435a85b 73a32cd05 29eddc376 d8fa4d098 ef6fab1bc 1de1fda2c 665493ecc ad207f7bb e7620cba2 d40eb2705 5d26f4d92 fd206ec4d 19a4e3e16 e975d3be7 0564ff72c bd7e6d2af 4e86dd8f3 2127bb611 59dfc16da 2f92a1a45 63f968fa6 312832f30 6679fe54f 9f05b2279 dd2fc27b0 af1d28337 26b260c2b 7207afb67 4a3248e89 4b6c549b1 f402f59ff a75d400b8 8b6ae05dc d318bea95 35da68abb 4e98771c9 72505ebb2 1a6d866d7 13bc4dacc 851697562 6f29fbbc7 593d5a082 eef3f5c49 b495b7492 46dafc868 ddd416fe0 256f1449f e059a8594 c40750aed 22a123588 5502d45f5 beb7f98fd 503de0024 68891097e 6035df6d8 7eacd712f 99f466457 701aaedab 6fec5a793 fe0dd1a15 c035b5d2d 1fb62e0dc f7faf2d9f ffb34b926 bc2bf3bcd 025dea3b3 e700276a2 b5ad8afe0 52695ed4a 530e9b9b8 68a945b18 90db65912 d6033b6eb 4ea447064 018d6afbb f9db72cff 4b336f62e 99197edf2 526ed2bec 77eb013ca 9dbb6b717 bf6f90180 94e87cc26 186b87c05 ed0860a34 bd16de4ba fcab1682f 55d7eb6d2 0e1f6696a 49db469f5 1e6040658 f99a09543 0c4bf4863 7d182d05c ae41a98b6 2a933bcb8 adc70e02f 1520de553 ea21d2722 dd0491aad 7210546b2 188e8ca61 50640c29c 8e028d2d2 b728093e6 607a7b8f0 2991c6c02 eb4dc2cdf 3ccc39318 b4e4a184a 90b0ed912 c38ca8ae3 b21f5b472 1ff6be905 b9b7f388d 51ebff825 1a5a424f8 51c534b54 22b980fc8 9cc5d1d8f 7720ab0dd 63be1f619 f416800e9 f18d3931b a61ce65a2 b77bc4dac be448d5b9 5a53ebb69 437ff8730 c224ec4d9 212226b7b 170230a4c c98c2d3c0 d5858c659 e8f065c9d 856225035 039b8bbc6 d4e8dd865 c44348d76 cc35ec717 d2919256b b0b1c81ac 1f1f641f1 5df2068b0 6cd6037bd a61dfaaa3 aac0c81ba 87ba106d3 cb5161856 aaed60a3d 29714c47d 2ab5a56f5 aeb3a6ccf 0badd2fa2 63c094ba4 5693d94b2 c14e46633 6d07828ca b1b17b543 c5dacc85b 90a438099 7ac332a1d fa6e76901 ef4b87773 70ee7950a 14a5969a6 342e7eb03 cdf5a5db0 5661462ee 4c60b70b8 7e1c4f651 de14e7687 a1995906f f2af9300f 1110cf9ea 61b568ab8 1e9bdf471 4da206d28 82ba7a053 9c3f5714f 084031585 c1b9f4e76 848b67fcc 0ce078942 34d3974de 04e06920e 5a88b7f01 5985f4c31 77da28065 65aa7f194 9ca45f3c8 fd1187d68 770bef1c6 f5f97a9e8 3ad3d521e 707f193d9 bacadce94 73700eaa4 c69492ae6 65000b269 dc135562a 1d0aaa90f 7497a6bc9 2ca23426b bfde2aa61 b0c8d785d b09a8c37b b30e932ba 8516b48f5 0a52be28f 506e25985 f519ac616 833b35a7c faf024fa9 3377a30e2 8f3807320 d0d340214 d00346a32 29c059dd2 0b26c77a9 2f9969eab d95cab24f 330006bce 8b1372217 4fbcb9f95 bc2eb559b 7e7bf15be 7d72d6787 9bd66acf6 aebe1ea16 89a26cda9 da2d942d5 5680531f3 3694b34c5 3be79d4a5 c2cabb902 8e48aed7b d6bca77b4 3aab2691c b0d770462 64406f348 f1c272f04 9abaeaeba 1074273db 47cd6e6e4 ccf6632e6 0544dfc09 2761e2b76 3a01b4018 68322788b 05d17ab7a 4f0c5f900 600ea672f c5a742ee4 b04bab75e 935ca66a9 8e1822aa3 cd41bbc4e 5c220a143 9ba5eb33d a728310c8 d168174c7 ee7c4db36 e8dfb33d5 5547d6e11 78bc2558b 96be55d28 2ea42a33b 37e85aa12 2b85882ad 9236f7b22 3d655b0ed dc6676b1f 64834659b 1477c751e aee922a7b 22f0deffc d481882a1 3b67e9641 ae72cba0a 8c309c553 995a96a47 e2979b858 13f2607e4 77fa93749 5466764d8 1d4d5cd4a 82c9b4fcd 380d54fad 796855249 a6e871369 15e8a9331 6d2ece683 ba136ae3f 9c6bf2983 794e93ca6 2288ac1a6 bef84d3ad 9a3a1d59b 133e6f674 7623d805a b3655056c 4fc9da4e3 632586103 2bf3e5c6e aa31dd768 dc7f76962 ff3ebf76b f926a4cb4 3c29aec1e e0271a62a e7fa14f98 3da2882fd 859993c8b dbc0c19ec e5355e47e 99029bf6f 737d43535 10e231d3c f0fa3bfc5 a0129f413 e078302ef f72edfb37 014574363 9f69313d1 f9b482e8b e851264a5 e86d346f8 cde3e280a 94ef80b78 377a76530 5d60b9ba7 5719bbfc3 467044c26 39ebfbfd9 a79c71dc0 1d1cafe32 4af2493b6 4a93ad962 6c4f594e0 798a8e92e e23fe2e46 83b40fd93 b88568883 2baea1172 073470b04 754ace754 c8f02f3e4 9a5ff8c23 75aad4520 2c76aca6a 87c8931b6 32a0342e2 eab76d815 6c3d38537 8f3740670 1184df5c2 cfa24e4be 5b2471c13 dc7923918 72ad5471c ... 2e5424c98 6495d8c77 b22288a77 77deffdf0 0895b9597 651124842 d66bbb5ed eea698cf2 85fe78c6c cb7ecfc41 4c427c13e 3a07a8939 fc9d04cd7 e398df91e c270cb02b 3fd2b9645 9d5c7cb94 16a5bb8d2 df443d0ce e6c050854 7a5460b56 b719c867c 9108ee25c 890163e1a eb0c32768 fd6347461 0196d5172 f5179fb9c 52a87bee1 0fb0d19af faedddd5c 91570fb11 c86c0565e 809a511d0 a3f2345bf 7610d0f28 c00356999 9280f3d04 ca7ea80a3 53102b93f 93c1eecb4 7b672b310 538df95cd 19543bce7 c5fa49de1 66e323ce9 bb37ae1db 7bde71e2f c75604498 ccd2ef877 295408598 716e7d74d c5e748f6a 072452760 87380f99d bf10af17e e926d89d3 36c3157a7 e234cdc9b 71deb9468 ae141696e 05e427fe8 4377d117c c5a231d81 d2430cbe1 736fce873 5fb9cabb1 7e3e026f8 a246962f5 0d51722ca b5c9b4e39 0761cbb48 b8c3205bf 431e67099 03ab9c0ea e6efe84eb 13d6a844f 3ac0589c3 d08c4204c 49e68fdb9 6984f4045 79c8119ae 760ef38f1 37a9ea8c6 b379107b3 bf2b3327b 2b6f74f09 b0c0f5dae e176a204a f49ff3269 1702b5bf0 457bd191d 991bca4be f23b7530c 7106396d7 f7d9dadeb ef1e1fac8 32138f717 1c779c188 05b0f3e9a d4cc42c3d 94c182798 75b846f12 1bf6240eb cdc36a26a 9ad654461 8045561f7 78edb3f13 b70d43816 af06d341e b34eff664 e209569b2 1fe02bc17 e1ccfad87 699712087 78865d76b 04be96845 67102168f a1cd7b681 60307ab41 feeb05b3f 97428b646 04a22f489 a0b0a7dbf e0ceabad4 5c0df6ac5 c122fd0b9 58d9f565a e7eac13e0 a6f5de07f 63688d3df 533e43257 7385f8997 1906a5c7e 4302b67ec f684b0a96 c05e7f369 22abeffb6 29181e29a f66191951 73a8a4d75 a09a238d0 b33e83cdc 9fb38aabe 5a6a1ec1a 925728b1c e4b2caa9f 1f26f0f73 2f93e3c96 a48a740ef 8d12d44e1 5d52b2d2b ee9e70298 b8f039d1c 2ab9356a0 3e3822506 21bd61954 097836097 28690ae0d 46b02f955 6bb4be4f2 f23c83554 ea4046b8d e5b2d137a 923a0c4bc b4cd81ecd 05d95861b 05f99c615 f1851d155 8618bc1fd 06be6c2bb 0892b3439 70d96c477 2c5819699 077c3511c a8dd5cea5 9e2040e5b 96b66294d d58172aef 3fa6c395f ff96b95eb 609784003 0cad4d7af 27998d0f4 f13fa756f acff85649 de5e5b296 a5565ec7d 320931ca8 2c2d9f267 965fa6747 40f1d0084 9c1d27a5c a89ab46bb 1a82869a6 34b2a678e f3ee6ba3c b6623bacf 38a5a3497 555265925 bca395b73 e50c9692b 640a36efb 96eb14eaf 1f8415d03 190db8488 e8468d000 6a2ed0e6c f14b57b8f 95aea9233 692c44993 ca4eab5c5 30609ee5b cb2cb460c b74ef4294 1ecddbaa0 903749e8a da7f4b066 4adae02ea 92f32943a 73eeb092f a05f1bb14 5edd220bc 86f843927 842415efb 555f18bd3 ecd16fc60 04b88be38 c189dc362 6d0d72180 44dad5d70 b1a7086ac 801c6dc8e 3c9f7809d f859a25b8 d15e80536 52a02c635 c8bdcd0f3 7ff7d351b a34f8d443 bb9aefe00 556331be8 5f7d60408 4a9abd788 82e9efdd8 3e3ea106e ae846f332 7bddf55e1 869a169f9 7ba58c14d 69900c0d1 65b3354f4 a9819bda9 09bf8b0cf d30bbe129 8b1379b36 f333a5f60 05c9b6799 a8e607456 c1543c985 76e092b8c 3d390e8b9 77f5250e3 83dbedc24 e04141e42 2252c7403 7dad769a6 c47340d97 f08c20722 10776252b 2c339d4f2 51d5e73a8 930f989bf 01816048b 29f828a0f 0a26a3cfe b4e462a2f ce549c005 9db026fcf c906cd268 fb9e07326 67f9e982f ffec49dae c24634d56 6931ed626 ffa45bf70 1b7ec860b 2a6e64bb9 28bc37378 8c61bede6 98082c8ef 324e49f36 2c97120d8 d196ca1fd e838549ac fb32c00dc d279be266 cb71f66af 066566b35 2d29edb0a 87a91f998 015c3e354 8d0774750 1847c8140 b850c3e18 f0aec6c6b ae3aa1abd b6946d764 dd771cb8e e1121cd3e 6249d8488 2cb73ede7 ac37543df adf357c9b 5089bf842 b8fde5765 c0f8422e1 593cccdab b200c8b4a 2d065b147 762cbd0ab bfc7c09df 735ea6729 b0310a768 857020d0f 0743b9c08 3ac1ba8f9 ddea5dc65 df221f22b e592c0185 759c9e85d a72fcabd8 95ba53cf8 2731a96a2 c0f5174c7 a3fb07bfd 1010d7174 afc08501b 89e7dcacc 1bf1406eb ee0b53f05 defcc2c50 14d1d798e a8e562e8e ebf53ab7c 6b142730f b8f892930 4d1f9e4d7 15e8d7f53 683d89bf1 9ed0e6ddb f6c436744 2a7ac8010 4bd1722dc ea26c7fe6 323fd38a8 eb6bb7ce1 78f45daba 46c525541 310e1ede9 c03c8799c c7ae29e66 96f5cf98a 24141fd90 fe919be32 daedcafad e79e5f72c 5beff147e 086c13b6c 52b347cdc ff1551a48 c8fdf5cbf cac875244 4c7768bff 8bde3e628 3685524f4 4fe67672e 4634c8fae f7f553aea 9abffd22c 2dbeac1de a396ceeb9 56ec098a1 ba4a02efc 896d1c52d 1f8754c4e ed5af35f0 41d1e5f8f 259169df2 4600aadcf 13f3a3d19 2123a2089 e43343256 f928893ca acc4a8e68 e9a473fbb a3382e205 4dcf81d65 7f38dafa6 6fa0b9dab e369704a1 7df9efba5 f5723deba 7fd35c77a 9d9e518a3 99258443a 1d81e197a 831a9e087 de471ea65 8781e4b91 dc5ba677f df3ac443c 79203fbab f1ab19e7a 300398f1c 6eefca12e 22bf44001 19915a6d3 20a325694 8afae1db8 c283d4609 11114a47a b961b0d59 103b8a033 43d70cc4d 09184c121 08c089775 572d36d31 1de239e78 d7568383a 8d7bfb911 5964f1856 6c7bf200b b3058e9ba 108fe14ef dcfcddf16 5fad07863 b904b8345 408021ef8 ef30f6be5 e29d22b59 a19b05919 e849e3ae0 05f11f48f 49f11e712 c959d372a b625fe55a f642213a6 6df033973 1834f29f5 31e434a58 e431708ff fb42abc0d 88263a031 ab7764ead a380d5301 46ee7f2c8 2e1287e41 23310aa6f 9dc52515a 969caa87a 00302fe51 1189ee335 ca04a07ca f6f15ffa5 841704460 ea5ed6ff7 b1bb8eac3 8132d18b8 c24ea6548 cdfc2b069 2a879b4f7 6b119d8ce 98dea9e42 9f2471031 88458cb21 f40da20f4 7ad6b38bd c901e7df1 8f55955dc 85dcc913d 5ca0b9b0c eab8abf7a 8d8bffbae 2a1f6c7f9 9437d8b64 5831f4c76 2e84e09c5 d45fd5508 a165f5761 3ecc09859 9281abeea 8675bec0b 3a13ed79a f677d4d13 71b203550 137efaa80 fb36b89d9 7e293fbaf 9fc776466
0 000d6aaf2 38000000.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0.0 0 0 1300000.0 0.0 0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 4333333.34 0.0 0 0.0 0 0.0 0 0 0.0 0 13200000.0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0 0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0 0 0 0.0 6000000.0 0.0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0.0 7100000.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0.0 0.0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 1600000.00 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0 0.0 0.0 0.0 0 0.0 0 0 ... 0 0 0.0 0.0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0.0 0.0 0 0 0.0 28000000 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 40000000.00 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 0.00 0 0.0 0.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 16066666.66 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 1500000 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 400000.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0.0 0.0 0 0 0 0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 0.0 0.0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 0.0 0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 250000.0 0 0.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0 6200000.0 0 0.0 0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 1266666.66 0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 0.0 0 0 0 1100000.0 0 0 0 0.0 0.0 14800000 0.0 1200000.0 0.0 0.0 0 0 0 0 0.0 4000000 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0
1 000fbd867 600000.0 0.0 0 0.0 0 0 0 0 0 2200000.0 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0.0 0 0 0.0 0.0 0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 24000000.0 0 0 0 0 0.0 0.0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 2000000.00 0.0 0 0.0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0 0 0 0 0 6000000.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0.0 0 7000000 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0.0 0.0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0.0 30000000 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0.0 0 0 0.0 0 2000000.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 0.00 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 50000000 0 0 0 0.0 0.0 0.0 0 0.0 0 0 ... 0 0 0.0 0.0 0.0 0 0.0 0 0.0 0.0 0 0 6000000 0 0.0 0.0 0.0 0 0 0.0 0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.00 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 0.00 0 0.0 0.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 16000000.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 4000000.0 0 0.0 0 0.0 0 0.00 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 32000000.0 0 0.0 0 0 0 0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0.0 0.0 0 0 0 0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 0.0 0.0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 0.0 0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 0.0 0 0.0 0.0 0 0.0 0 0 0 0 0 2000000.0 0.0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.00 0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 0.0 0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0.0 0.0 0.0 0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0
2 0027d6b71 10000000.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0.0 0 0 0.0 0.0 0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0.00 0.0 0 0.0 0 0.0 0 0 0.0 0 12000000.0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0 0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 4000000.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0.0 5500000.0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0.0 0.0 800000.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 0.00 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0 0.0 0.0 0.0 0 0.0 0 0 ... 0 0 0.0 0.0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0.0 0.0 0 0 0.0 0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.00 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 0.00 0 0.0 0.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0.00 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0.0 0.0 0 0 0 0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 0.0 0.0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 0.0 0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 0.0 0 0.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.00 0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 0.0 0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0.0 0.0 0.0 0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0
3 0028cbf45 2000000.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0.0 0 0 0.0 0.0 0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 100000.0 0 0 0 0.0 0 0.0 0 0 0.0 0.00 0.0 0 0.0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0 0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 100000.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0.0 0.0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 100000.0 0.0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 0.00 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0 0.0 0.0 0.0 0 0.0 0 0 ... 0 0 0.0 0.0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0.0 0.0 0 0 0.0 0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.00 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 0.00 0 0.0 0.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0.00 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0.0 0.0 0 0 0 0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 600000 0 0 0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 0.0 0.0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 0.0 0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 0.0 0 0.0 0.0 0 0.0 0 0 0 0 0 6000000.0 0.0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.00 0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 0.0 0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0.0 0.0 0.0 0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0
4 002a68644 14400000.0 0.0 0 0.0 0 0 0 0 0 2000000.0 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0.0 0 0 0.0 0.0 0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0.00 0.0 0 0.0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0 0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0.0 0.0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 0.00 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0 0.0 0.0 0.0 0 0.0 0 0 ... 0 0 0.0 0.0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0.0 0.0 0 0 0.0 0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.00 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 0.00 0 0.0 0.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0.00 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0.0 0.0 0 0 0 0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 8000000.0 0.0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 0.0 0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 0.0 0 0.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.00 0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 0.0 0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0.0 0.0 0.0 0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
4454 ff85154c8 1065000.0 0.0 0 0.0 0 0 0 0 0 70000.0 0.0 0.0 0 0 6000000 0 0.0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0.0 0 0 0.0 0.0 0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0.00 0.0 0 0.0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0.0 0.0 6000000 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0 0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0 200000 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0.0 0.0 0 0.0 0.0 0.0 814000 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0.0 0.0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0 2000000.0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 0.00 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0 0.0 0.0 0.0 0 0.0 0 0 ... 0 0 0.0 0.0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0.0 0.0 0 0 0.0 0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.00 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 0.00 0 0.0 0.0 0.0 0 70000.0 0 0 0 0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 430000.0 0 0 0.0 0 0 0.0 0 0 0.0 6000000 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0.00 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 500000 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0 0 260000.0 0.0 0.0 0.0 0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0.0 0.0 0 0 0 0 6000000 0 0 0 0 0.0 0.0 0 0.0 0.0 6000000 0.0 0.0 0 0 0 0 0 0.0 0 0.0 0 6000000 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 0.0 0.0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 0.0 0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 0.0 1140000 0.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 200000.0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.00 0 0 0 0 0.0 0 0 0.0 6000000 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 0.0 0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0.0 0.0 0.0 0 0 0 0 0.0 6000000 0 0.0 0 0 0.0 0 0 0.0 0 0 920000.0 0.0 0.0 0.0 0 0 0 0 0 0 0
4455 ffb6b3f4f 48000.0 0.0 0 0.0 0 0 0 0 0 375000.0 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0.0 0 0 0.0 375000.0 0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0.00 0.0 0 0.0 0 0.0 0 0 0.0 0 375000.0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0 0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0 0 0 375000.0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 24000.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0.0 0.0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 0.00 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0 0.0 0.0 0.0 0 0.0 0 0 ... 0 0 0.0 0.0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0.0 0.0 0 0 0.0 0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.00 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 375000.00 0 0.0 0.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 375000.0 0 375000.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0.00 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 80000.0 0.0 0.0 0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0 375000.0 0.0 0 0.0 0.0 0 0.0 0.0 0 0 0 0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 80000.0 0 0.0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 375000.0 0.0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0 800000.0 0 0 0 0.0 0 0 0 0.0 0 0 270000.0 0 0.0 0 0 0 0.0 0 0.0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 80000.0 0 0.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 375000.0 0 0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0.0 0 0 300000.0 0 0 0 0 0 0 0 0 0.0 0 0 0.00 0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 80000.0 0.0 0.0 0.0 0.0 0 0 0 0 0 375000.0 0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 80000.0 0.0 0.0 0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 375000.0 0 0 0.0 0.0 0.0 80000.0 0 0 0 0 0 0 0
4456 ffcf61eb6 2800000.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0.0 0 0 0.0 0.0 0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0.0 0 0 0 200000 0.0 0.0 600000 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 2733333.34 0.0 0 0.0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 1680000 0 0 0 0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0.0 0.0 8000000 0 0 0 574000.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 17080000 0.0 0 0 0 0 0.0 0 0 0.0 0 0 0 10000000.0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0.0 4640000.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0.0 0.0 0 0.0 0.0 0.0 1680000 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 1000000.0 0.0 0.0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0.0 0 0 0.0 0 20404000.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 4816666.66 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0 0.0 180000.0 0.0 0 0.0 0 0 ... 0 0 0.0 0.0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0.0 0.0 0 0 0.0 0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 600000.00 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 17057333.34 0 0.0 0.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0.00 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0.0 0.0 0 14000000 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 6000000.0 0.0 0.0 0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0 1000000.0 0.0 0 0.0 0.0 0 0.0 0.0 0 0 0 0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 5772000.0 0 0.0 0 0 0 0 0 0.0 0 0 0 337000.0 0.0 0 0 0 0 0 0 0.0 0 0.0 0.0 0 2800000 0 0 0.0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 0.0 0.0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 0.0 0 0 0 1500000.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 69152000 0 0 0 0 0.0 55140000 0.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0.0 1960000 0 0 0 0 0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 1717000.0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.00 0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0.0 872000.0 0.0 0.0 0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 319612000.0 0 0 0 30000.0 0 0 0 0.0 0.0 0 0.0 0.0 0.0 0.0 0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 4291000.0 0 0 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0
4457 ffea67e98 10000000.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0.0 0 0 200000.0 1500000.0 0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0.00 0.0 0 0.0 0 0.0 0 0 0.0 0 1500000.0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0 0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0 0 0 1500000.0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0.0 0.0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 0.00 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0 0.0 0.0 0.0 0 0.0 0 0 ... 0 0 0.0 0.0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0.0 0.0 0 0 0.0 0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.00 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 1500000.00 0 0.0 0.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 1500000.0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0.00 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 4000000.0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0 1500000.0 0.0 0 0.0 0.0 0 0.0 0.0 0 0 0 0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 1500000.0 0.0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 0.0 0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 0.0 0 0.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 1500000.0 0 0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.00 0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 1500000.0 0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0.0 0.0 0.0 0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0
4458 ffeb15d25 20000000.0 0.0 0 0.0 0 0 0 0 0 20000000.0 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0.0 0 0 0.0 0.0 0 17800000.0 0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0.00 0.0 0 0.0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0 0 0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0 0 0.0 20000000.0 0.0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 0 0.0 0 0.0 0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 0 0 0.0 20000000 0.0 0 0.0 0.0 0 0.0 12000000.0 0 0.0 0.0 0.0 0 0.0 22600000.0 0.0 0 0.0 0.0 0.0 0 0 0.0 0.0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 30000000 0 0 0 0.0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0 0 6400000.0 0.0 0 0 0.0 0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0.0 0.0 0.0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0 0.0 22600000.0 0 0.0 0.0 0 0.0 0 0 0.0 0 0.0 0 0.0 0.0 0 10000000 0 0 5000000.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 14500000.00 0.0 0.0 0 0 0 0 0.0 0 0.0 0 0 0 0 0 0 64000000 20000000.0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0 0.0 20000000.0 0.0 0 0.0 0 0 ... 0 0 0.0 0.0 0.0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0.0 0.0 0 0 0.0 0 0.0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 11333333.34 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0.0 0 0.00 0 0.0 0.0 0.0 0 20000000.0 0 0 0 0 0 0.0 0.0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 18000000.0 0 0 0.0 0 0 25850000.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0 0.0 0 0.00 0.0 0.0 0 0.0 0.0 0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 8000000.0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0 0.0 22500000.0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 11200000.0 0.0 0.0 0 30000000 0 0.0 0.0 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0 0 0 0 0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0 14000000.0 0.0 0 0.0 0.0 0 0 0 0 0 0.0 0 0.0 0 0 0 0.0 0.0 0 16000000.0 0 0.0 0 0 0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0 0 0 0.0 0 0.0 0.0 0 0 0 0 0.0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 0.0 0.0 0 0 0 0 0 0 23600000.0 0 0 0 0.0 0 0.0 0 0 0 0 0 0.0 0 0.0 0.0 0.0 0 0 0 0.0 0 0.0 0 0 0.0 0 0 0 0.0 0 0 0 0.0 0 0 8000000.0 0 0.0 0 0 0 0.0 0 0.0 0.0 0 0 0.0 0.0 0 0 0.0 0 0 0 0 0 0 0 5800000.0 0 0.0 0.0 0 0.0 0 0 0 0 0 0.0 0.0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 0.0 0.0 0 0 0.0 0.0 0 0 0 0 0.0 0.0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0 0 26000000.0 0 0.0 0 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0.0 0 0 8600000.00 0 0 0 0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0.0 0.0 0 0 0 0.0 0.0 18000000.0 0.0 0 0.0 0 0.0 0 0.0 0 0 0.0 0.0 0.0 0.0 0.0 10000000.0 0.0 0 0 0 0 0 0.0 0 0 0 0.0 0 0 0 0.0 0.0 0 0.0 0.0 0.0 0.0 0 0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0 0 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0

4459 rows × 4993 columns

train_df.describe(include='all').T
count unique top freq mean std min 25% 50% 75% max
ID 4459 4459 000d6aaf2 1 NaN NaN NaN NaN NaN NaN NaN
target 4459.0 NaN NaN NaN 5944923.322036 8234311.50163 30000.0 600000.0 2260000.0 8000000.0 40000000.0
48df886f9 4459.0 NaN NaN NaN 14654.930101 389329.809351 0.0 0.0 0.0 0.0 20000000.0
0deb4b6a8 4459.0 NaN NaN NaN 1390.894819 64283.024499 0.0 0.0 0.0 0.0 4000000.0
34b15f335 4459.0 NaN NaN NaN 26722.450922 569965.183046 0.0 0.0 0.0 0.0 20000000.0
... ... ... ... ... ... ... ... ... ... ... ...
71b203550 4459.0 NaN NaN NaN 121380.933393 4720708.533279 0.0 0.0 0.0 0.0 301312000.0
137efaa80 4459.0 NaN NaN NaN 35734.514465 1614622.197535 0.0 0.0 0.0 0.0 106420000.0
fb36b89d9 4459.0 NaN NaN NaN 312374.074905 4318500.708335 0.0 0.0 0.0 0.0 140000000.0
7e293fbaf 4459.0 NaN NaN NaN 92199.596322 1635993.425336 0.0 0.0 0.0 0.0 61768000.0
9fc776466 4459.0 NaN NaN NaN 227909.956044 1811139.277424 0.0 0.0 0.0 0.0 43200000.0

4737 rows × 11 columns

train_df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4459 entries, 0 to 4458
Columns: 4993 entries, ID to 9fc776466
dtypes: float64(1845), int64(3147), object(1)
memory usage: 169.9+ MB
test_df.head()
ID 48df886f9 0deb4b6a8 34b15f335 a8cb14b00 2f0771a37 30347e683 d08d1fbe3 6ee66e115 20aa07010 ... 3ecc09859 9281abeea 8675bec0b 3a13ed79a f677d4d13 71b203550 137efaa80 fb36b89d9 7e293fbaf 9fc776466
0 000137c73 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
1 00021489f 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 0004d7953 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
3 00056a333 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
4 00056d8eb 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

5 rows × 4992 columns

test_df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 49342 entries, 0 to 49341
Columns: 4992 entries, ID to 9fc776466
dtypes: float64(4991), object(1)
memory usage: 1.8+ GB
print(f'Shape of Training dataset is: {train_df.shape}')
print(f'Shape of Testing dataset is: {test_df.shape}')
Shape of Training dataset is: (4459, 4993)
Shape of Testing dataset is: (49342, 4992)
49342/4459
11.065709800403678

Observations

  1. There are 4992 independant variables and 1 target variable. The target variable is a continuous column containing transaction values.
  2. Test data is ~11 times larger as compared to training data.
  3. The dataset is hugely sparse. For multitude of columns, value for Q3 (75th Percentile) is 0.
  4. The first column of data is ID field, and is highly unlikely to contribute to data modelling, as this is a primary key of the data and is unique for each rows.
  5. The number of columns in training dataset is > the number of rows in the training data. This is unusual behaviour.
  6. Training data contains dtypes: float64(1845), int64(3147), object(1) and test data contains dtypes: float64(4991), object(1)
  7. The columns are obfuscated, i.e., not human readable. To keep data confidential adhering to customer trust and legal obligations, companies tend to obfuscate data. This makes it relatively tough to extract human readable meaningful observation out of the features.

Exploratory Data Analysis

np.max(train_df['target'].values), range(train_df.shape[0])
(40000000.0, range(0, 4459))
# Scatter-Plot for target variable

plt.figure(figsize=(21,7))
plt.scatter(range(train_df.shape[0]), np.sort(train_df['target'].values))

plt.xlabel('size', fontsize = 14)
plt.ylabel('target', fontsize = 14)
plt.title('Dependant variable distribution', fontsize = 18)
plt.show()

# Histogram of target feature

plt.figure(figsize=(21,7))
sns.histplot(train_df['target'].values, bins = 50, kde=False)

plt.xlabel('Target', fontsize = 14)
plt.title('Histogram of Target', fontsize = 18)
plt.show()

Observations

  1. Target feature is in 1e7 range. np.max(train_df['target'].values) is 40000000 (i.e, 4e7)
  2. From the histogram it is evident, that the target data is right skewed1.
  3. This indicates there’s high range of target values, and it’s best to scale or take log of the data. Thus, the evaluation metric is also RMSLE (instead of RMSE)
DREADED TERMINOLOGY ALERT
  1. Right Skewed: Majority of the data points cluster towards the lower values, while a few stretch out to higher values thus making a long tail towards the right.

Let’s create a histogram for log of target features

plt.figure(figsize=(21, 7))
sns.histplot(np.log1p(train_df['target'].values), bins = 50, kde = False)
plt.title('Histogram of Log of Target Feature', fontsize = 18)
plt.xlabel('log of Target', fontsize = 14)
plt.show()

Observations

  1. Taking the log of data, gives a relatively balanced distribution

Data Pre-Processing

Check for Null Values

We check for Null values in the dataset. If there are any null values, we impute them with (1) median or using (2) KNN-Imputer.

columns_with_null_values = train_df.columns[train_df.isnull().sum()!=0]
columns_with_null_values
Index([], dtype='object')
print(f'Number of features in data having null values = {columns_with_null_values.size}')
Number of features in data having null values = 0

Observations:

Since there are no Null Values, we don’t need to perform any imputation. Hence, we move forward to the next step in data pre-processing.

Constant Variance Check

Variance describes how the data in your distribution varies w.r.t the mean. According to normal statistical intuition, feature having very low variance doesn’t contribute to the prediction much, i.e., these aren’t much important. However, such is not always the case and deep learning models tend to take care about those features. Albiet, for the current dataset, let’s remove the features having constant variance, i.e., variance of 0; implying they don’t change at all and don’t contribute towards predictions.

columns_to_remove_constant = []
for col in train_df.drop(columns=['ID', 'target']).columns:
    if train_df[col].std()==0:
        columns_to_remove_constant.append(col)

print("***************Columns to remove:***************\n")
print(columns_to_remove_constant)
print()
print(f'Number of columns to be removed = {len(columns_to_remove_constant)}')
***************Columns to remove:***************

['d5308d8bc', 'c330f1a67', 'eeac16933', '7df8788e8', '5b91580ee', '6f29fbbc7', '46dafc868', 'ae41a98b6', 'f416800e9', '6d07828ca', '7ac332a1d', '70ee7950a', '833b35a7c', '2f9969eab', '8b1372217', '68322788b', '2288ac1a6', 'dc7f76962', '467044c26', '39ebfbfd9', '9a5ff8c23', 'f6fac27c8', '664e2800e', 'ae28689a2', 'd87dcac58', '4065efbb6', 'f944d9d43', 'c2c4491d5', 'a4346e2e2', '1af366d4f', 'cfff5b7c8', 'da215e99e', '5acd26139', '9be9c6cef', '1210d0271', '21b0a54cb', 'da35e792b', '754c502dd', '0b346adbd', '0f196b049', 'b603ed95d', '2a50e001c', '1e81432e7', '10350ea43', '3c7c7e24c', '7585fce2a', '64d036163', 'f25d9935c', 'd98484125', '95c85e227', '9a5273600', '746cdb817', '6377a6293', '7d944fb0c', '87eb21c50', '5ea313a8c', '0987a65a1', '2fb7c2443', 'f5dde409b', '1ae50d4c3', '2b21cd7d8', '0db8a9272', '804d8b55b', '76f135fa6', '7d7182143', 'f88e61ae6', '378ed28e0', 'ca4ba131e', '1352ddae5', '2b601ad67', '6e42ff7c7', '22196a84c', '0e410eb3d', '992e6d1d3', '90a742107', '08b9ec4ae', 'd95203ded', '58ad51def', '9f69ae59f', '863de8a31', 'be10df47c', 'f006d9618', 'a7e39d23d', '5ed0abe85', '6c578fe94', '7fa4fcee9', '5e0571f07', 'fd5659511', 'e06b9f40f', 'c506599c8', '99de8c2dc', 'b05f4b229', '5e0834175', 'eb1cc0d9c', 'b281a62b9', '00fcf67e4', 'e37b65992', '2308e2b29', 'c342e8709', '708471ebf', 'f614aac15', '15ecf7b68', '3bfe540f1', '7a0d98f3c', 'e642315a5', 'c16d456a7', '0c9b5bcfa', 'b778ab129', '2ace87cdd', '697a566f0', '97b1f84fc', '34eff114b', '5281333d7', 'c89f3ba7e', 'cd6d3c7e6', 'fc7c8f2e8', 'abbbf9f82', '24a233e8f', '8e26b560e', 'a28ac1049', '504502ce1', 'd9a8615f3', '4efd6d283', '34cc56e83', '93e98252a', '2b6cef19e', 'c7f70a49b', '0d29ab7eb', 'e4a0d39b7', 'a4d1a8409', 'bc694fc8f', '3a36fc3a2', '4ffba44d3', '9bfdec4bc', '66a866d2f', 'f941e9df7', 'e7af4dbf3', 'dc9a54a3e', '748168a04', 'bba8ce4bb', 'ff6f62aa4', 'b06fe66ba', 'ae87ebc42', 'f26589e57', '963bb53b1', 'a531a4bf0', '9fc79985d', '9350d55c1', 'de06e884c', 'fc10bdf18', 'e0907e883', 'c586d79a1', 'e15e1513d', 'a06067897', '643e42fcb', '217cd3838', '047ebc242', '9b6ce40cf', '3b2c972b3', '17a7bf25a', 'c9028d46b', '9e0473c91', '6b041d374', '783c50218', '19122191d', 'ce573744f', '1c4ea481e', 'fbd6e0a0b', '69831c049', 'b87e3036b', '54ba515ee', 'a09ba0b15', '90f77ec55', 'fb02ef0ea', '3b0cccd29', 'fe9ed417c', '589e8bd6f', '17b5a03fd', '80e16b49a', 'a3d5c2c2a', '1bd3a4e92', '611d81daa', '3d7780b1c', '113fd0206', '5e5894826', 'cb36204f9', 'bc4e3d600', 'c66e2deb0', 'c25851298', 'a7f6de992', '3f93a3272', 'c1b95c2ec', '6bda21fee', '4a64e56e7', '943743753', '20854f8bf', 'ac2e428a9', '5ee7de0be', '316423a21', '2e52b0c6a', '8bdf6bc7e', '8f523faf2', '4758340d5', '8411096ec', '9678b95b7', 'a185e35cc', 'fa980a778', 'c8d90f7d7', '080540c81', '32591c8b4', '5779da33c', 'bb425b41e', '01599af81', '1654ab770', 'd334a588e', 'b4353599c', '51b53eaec', '2cc0fbc52', '45ffef194', 'c15ac04ee', '5b055c8ea', 'd0466eb58', 'a80633823', 'a117a5409', '7ddac276f', '8c32df8b3', 'e5649663e', '6c16efbb8', '9118fd5ca', 'ca8d565f1', '16a5bb8d2', 'fd6347461', 'f5179fb9c', '97428b646', 'f684b0a96', 'e4b2caa9f', '2c2d9f267', '96eb14eaf', 'cb2cb460c', '86f843927', 'ecd16fc60', '801c6dc8e', 'f859a25b8', 'ae846f332', '2252c7403', 'fb9e07326', 'd196ca1fd', 'a8e562e8e', 'eb6bb7ce1', '5beff147e', '52b347cdc', '4600aadcf', '6fa0b9dab', '43d70cc4d', '408021ef8', 'e29d22b59']

Number of columns to be removed = 256
# Removing the constant columns
train_df.drop(columns_to_remove_constant, axis = 1, inplace = True)
test_df.drop(columns_to_remove_constant, axis = 1, inplace = True)

print(f'New Shape of training dataset = {train_df.shape}')
print(f'New Shape of testing dataset = {test_df.shape}')
New Shape of training dataset = (4459, 4737)
New Shape of testing dataset = (49342, 4736)

Duplicate Check

If there are any duplicated columns in the dataframe, we can remove those. We will use negate operation ~ to accomplish this. We check for duplicate column using pd.duplicated() which returns True if the column is duplicated. We then perform negate operation so that the the True columns become those which are not duplicated and can be kept in the dataframe.

train_df = train_df.loc[:,~train_df.columns.duplicated()]
print(f'Shape of training dataset after removing duplicate columns = {train_df.shape}')
Shape of training dataset after removing duplicate columns = (4459, 4737)

Sparse Data Check

Sparse data simply means, that most of the values in that dataframe/array, etc is 0. We will drop sparse data from training dataset and test dataset. There are other ways as well, but I didn’t try those yet.

def drop_sparse_data_from_df(df):
    exclude_cols = ['ID', 'Target']
    cols_to_drop_data = [x for x in df.columns if x not in exclude_cols]
    
    for col in cols_to_drop_data:
        if len(np.unique(df[col]))<=1:
            print(f'sparse col = {col}')
            df.drop(col, axix=1, inplace=True)
            
    return df

train_df = drop_sparse_data_from_df(train_df)
test_df = drop_sparse_data_from_df(test_df)

Splitting Data into Train and Valid

TBD

Back to top