├── .gitignore ├── Pipfile ├── Pipfile.lock ├── README.md ├── data ├── aug_test.csv ├── aug_train.csv └── sample_submission.csv ├── images ├── artifacts-s3.png ├── mlflow.png ├── runs-remote.png ├── runs.png └── s3-console.png ├── notebooks └── 1_EDA.ipynb └── src ├── MLproject ├── conda.yaml └── train.py /.gitignore: -------------------------------------------------------------------------------- 1 | .ipynb_checkpoints 2 | mlruns 3 | .DS_Store 4 | 5 | .vscode -------------------------------------------------------------------------------- /Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | mlflow = "*" 8 | jupyter = "*" 9 | matplotlib = "*" 10 | scikit-learn = "*" 11 | tqdm = "*" 12 | boto3 = "*" 13 | 14 | [dev-packages] 15 | 16 | [requires] 17 | python_version = "3.8" 18 | -------------------------------------------------------------------------------- /Pipfile.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_meta": { 3 | "hash": { 4 | "sha256": "5670b5df8c8c7c9a5fed7d8fc1130b1e7a8435b120b800e0fc7658d8fa8c4a5e" 5 | }, 6 | "pipfile-spec": 6, 7 | "requires": { 8 | "python_version": "3.8" 9 | }, 10 | "sources": [ 11 | { 12 | "name": "pypi", 13 | "url": "https://pypi.org/simple", 14 | "verify_ssl": true 15 | } 16 | ] 17 | }, 18 | "default": { 19 | "alembic": { 20 | "hashes": [ 21 | "sha256:791a5686953c4b366d3228c5377196db2f534475bb38d26f70eb69668efd9028" 22 | ], 23 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 24 | "version": "==1.4.1" 25 | }, 26 | "appnope": { 27 | "hashes": [ 28 | "sha256:93aa393e9d6c54c5cd570ccadd8edad61ea0c4b9ea7a01409020c9aa019eb442", 29 | "sha256:dd83cd4b5b460958838f6eb3000c660b1f9caf2a5b1de4264e941512f603258a" 30 | ], 31 | "markers": "sys_platform == 'darwin' and platform_system == 'Darwin'", 32 | "version": "==0.1.2" 33 | }, 34 | "argon2-cffi": { 35 | "hashes": [ 36 | "sha256:05a8ac07c7026542377e38389638a8a1e9b78f1cd8439cd7493b39f08dd75fbf", 37 | "sha256:0bf066bc049332489bb2d75f69216416329d9dc65deee127152caeb16e5ce7d5", 38 | "sha256:18dee20e25e4be86680b178b35ccfc5d495ebd5792cd00781548d50880fee5c5", 39 | "sha256:392c3c2ef91d12da510cfb6f9bae52512a4552573a9e27600bdb800e05905d2b", 40 | "sha256:57358570592c46c420300ec94f2ff3b32cbccd10d38bdc12dc6979c4a8484fbc", 41 | "sha256:6678bb047373f52bcff02db8afab0d2a77d83bde61cfecea7c5c62e2335cb203", 42 | "sha256:6ea92c980586931a816d61e4faf6c192b4abce89aa767ff6581e6ddc985ed003", 43 | "sha256:77e909cc756ef81d6abb60524d259d959bab384832f0c651ed7dcb6e5ccdbb78", 44 | "sha256:7d455c802727710e9dfa69b74ccaab04568386ca17b0ad36350b622cd34606fe", 45 | "sha256:8a84934bd818e14a17943de8099d41160da4a336bcc699bb4c394bbb9b94bd32", 46 | "sha256:9bee3212ba4f560af397b6d7146848c32a800652301843df06b9e8f68f0f7361", 47 | "sha256:9dfd5197852530294ecb5795c97a823839258dfd5eb9420233c7cfedec2058f2", 48 | "sha256:b160416adc0f012fb1f12588a5e6954889510f82f698e23ed4f4fa57f12a0647", 49 | "sha256:ba7209b608945b889457f949cc04c8e762bed4fe3fec88ae9a6b7765ae82e496", 50 | "sha256:cc0e028b209a5483b6846053d5fd7165f460a1f14774d79e632e75e7ae64b82b", 51 | "sha256:d8029b2d3e4b4cea770e9e5a0104dd8fa185c1724a0f01528ae4826a6d25f97d", 52 | "sha256:da7f0445b71db6d3a72462e04f36544b0de871289b0bc8a7cc87c0f5ec7079fa", 53 | "sha256:e2db6e85c057c16d0bd3b4d2b04f270a7467c147381e8fd73cbbe5bc719832be" 54 | ], 55 | "version": "==20.1.0" 56 | }, 57 | "async-generator": { 58 | "hashes": [ 59 | "sha256:01c7bf666359b4967d2cda0000cc2e4af16a0ae098cbffcb8472fb9e8ad6585b", 60 | "sha256:6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144" 61 | ], 62 | "markers": "python_version >= '3.5'", 63 | "version": "==1.10" 64 | }, 65 | "attrs": { 66 | "hashes": [ 67 | "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", 68 | "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" 69 | ], 70 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 71 | "version": "==20.3.0" 72 | }, 73 | "backcall": { 74 | "hashes": [ 75 | "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e", 76 | "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255" 77 | ], 78 | "version": "==0.2.0" 79 | }, 80 | "bleach": { 81 | "hashes": [ 82 | "sha256:6123ddc1052673e52bab52cdc955bcb57a015264a1c57d37bea2f6b817af0125", 83 | "sha256:98b3170739e5e83dd9dc19633f074727ad848cbedb6026708c8ac2d3b697a433" 84 | ], 85 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", 86 | "version": "==3.3.0" 87 | }, 88 | "boto3": { 89 | "hashes": [ 90 | "sha256:4e177c9dd4ac45d9e41867cfb747f4c985d6b05ff14637ac5861a60daa95c7c1", 91 | "sha256:ee03a05669c4e82021db8da61c1e7744f231b7481010917ed9066862c8d3cad9" 92 | ], 93 | "index": "pypi", 94 | "version": "==1.17.22" 95 | }, 96 | "botocore": { 97 | "hashes": [ 98 | "sha256:32e86f9d18555bd3b4dc694a2639a1c1fc8c8b42a49da543b95ac9d04c40770b", 99 | "sha256:e92e22275ddc15b80015ee630b14ac3701bd9834bffc0814a65a894d490d2eaf" 100 | ], 101 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", 102 | "version": "==1.20.22" 103 | }, 104 | "certifi": { 105 | "hashes": [ 106 | "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c", 107 | "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830" 108 | ], 109 | "version": "==2020.12.5" 110 | }, 111 | "cffi": { 112 | "hashes": [ 113 | "sha256:005a36f41773e148deac64b08f233873a4d0c18b053d37da83f6af4d9087b813", 114 | "sha256:0857f0ae312d855239a55c81ef453ee8fd24136eaba8e87a2eceba644c0d4c06", 115 | "sha256:1071534bbbf8cbb31b498d5d9db0f274f2f7a865adca4ae429e147ba40f73dea", 116 | "sha256:158d0d15119b4b7ff6b926536763dc0714313aa59e320ddf787502c70c4d4bee", 117 | "sha256:1f436816fc868b098b0d63b8920de7d208c90a67212546d02f84fe78a9c26396", 118 | "sha256:2894f2df484ff56d717bead0a5c2abb6b9d2bf26d6960c4604d5c48bbc30ee73", 119 | "sha256:29314480e958fd8aab22e4a58b355b629c59bf5f2ac2492b61e3dc06d8c7a315", 120 | "sha256:34eff4b97f3d982fb93e2831e6750127d1355a923ebaeeb565407b3d2f8d41a1", 121 | "sha256:35f27e6eb43380fa080dccf676dece30bef72e4a67617ffda586641cd4508d49", 122 | "sha256:3d3dd4c9e559eb172ecf00a2a7517e97d1e96de2a5e610bd9b68cea3925b4892", 123 | "sha256:43e0b9d9e2c9e5d152946b9c5fe062c151614b262fda2e7b201204de0b99e482", 124 | "sha256:48e1c69bbacfc3d932221851b39d49e81567a4d4aac3b21258d9c24578280058", 125 | "sha256:51182f8927c5af975fece87b1b369f722c570fe169f9880764b1ee3bca8347b5", 126 | "sha256:58e3f59d583d413809d60779492342801d6e82fefb89c86a38e040c16883be53", 127 | "sha256:5de7970188bb46b7bf9858eb6890aad302577a5f6f75091fd7cdd3ef13ef3045", 128 | "sha256:65fa59693c62cf06e45ddbb822165394a288edce9e276647f0046e1ec26920f3", 129 | "sha256:69e395c24fc60aad6bb4fa7e583698ea6cc684648e1ffb7fe85e3c1ca131a7d5", 130 | "sha256:6c97d7350133666fbb5cf4abdc1178c812cb205dc6f41d174a7b0f18fb93337e", 131 | "sha256:6e4714cc64f474e4d6e37cfff31a814b509a35cb17de4fb1999907575684479c", 132 | "sha256:72d8d3ef52c208ee1c7b2e341f7d71c6fd3157138abf1a95166e6165dd5d4369", 133 | "sha256:8ae6299f6c68de06f136f1f9e69458eae58f1dacf10af5c17353eae03aa0d827", 134 | "sha256:8b198cec6c72df5289c05b05b8b0969819783f9418e0409865dac47288d2a053", 135 | "sha256:99cd03ae7988a93dd00bcd9d0b75e1f6c426063d6f03d2f90b89e29b25b82dfa", 136 | "sha256:9cf8022fb8d07a97c178b02327b284521c7708d7c71a9c9c355c178ac4bbd3d4", 137 | "sha256:9de2e279153a443c656f2defd67769e6d1e4163952b3c622dcea5b08a6405322", 138 | "sha256:9e93e79c2551ff263400e1e4be085a1210e12073a31c2011dbbda14bda0c6132", 139 | "sha256:9ff227395193126d82e60319a673a037d5de84633f11279e336f9c0f189ecc62", 140 | "sha256:a465da611f6fa124963b91bf432d960a555563efe4ed1cc403ba5077b15370aa", 141 | "sha256:ad17025d226ee5beec591b52800c11680fca3df50b8b29fe51d882576e039ee0", 142 | "sha256:afb29c1ba2e5a3736f1c301d9d0abe3ec8b86957d04ddfa9d7a6a42b9367e396", 143 | "sha256:b85eb46a81787c50650f2392b9b4ef23e1f126313b9e0e9013b35c15e4288e2e", 144 | "sha256:bb89f306e5da99f4d922728ddcd6f7fcebb3241fc40edebcb7284d7514741991", 145 | "sha256:cbde590d4faaa07c72bf979734738f328d239913ba3e043b1e98fe9a39f8b2b6", 146 | "sha256:cd2868886d547469123fadc46eac7ea5253ea7fcb139f12e1dfc2bbd406427d1", 147 | "sha256:d42b11d692e11b6634f7613ad8df5d6d5f8875f5d48939520d351007b3c13406", 148 | "sha256:f2d45f97ab6bb54753eab54fffe75aaf3de4ff2341c9daee1987ee1837636f1d", 149 | "sha256:fd78e5fee591709f32ef6edb9a015b4aa1a5022598e36227500c8f4e02328d9c" 150 | ], 151 | "version": "==1.14.5" 152 | }, 153 | "chardet": { 154 | "hashes": [ 155 | "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", 156 | "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" 157 | ], 158 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", 159 | "version": "==4.0.0" 160 | }, 161 | "click": { 162 | "hashes": [ 163 | "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", 164 | "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" 165 | ], 166 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", 167 | "version": "==7.1.2" 168 | }, 169 | "cloudpickle": { 170 | "hashes": [ 171 | "sha256:3a32d0eb0bc6f4d0c57fbc4f3e3780f7a81e6fee0fa935072884d58ae8e1cc7c", 172 | "sha256:9bc994f9e9447593bd0a45371f0e7ac7333710fcf64a4eb9834bf149f4ef2f32" 173 | ], 174 | "markers": "python_version >= '3.5'", 175 | "version": "==1.6.0" 176 | }, 177 | "cycler": { 178 | "hashes": [ 179 | "sha256:1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d", 180 | "sha256:cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8" 181 | ], 182 | "version": "==0.10.0" 183 | }, 184 | "databricks-cli": { 185 | "hashes": [ 186 | "sha256:9e956f0efb7aad100d9963f223db986392cf2dc3e9922f2f83e55d372e84ef16", 187 | "sha256:dcf4ce4d220400d2349875040402596fff0a7fe336905e19b535bb26cc726a5b" 188 | ], 189 | "version": "==0.14.2" 190 | }, 191 | "decorator": { 192 | "hashes": [ 193 | "sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760", 194 | "sha256:e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7" 195 | ], 196 | "version": "==4.4.2" 197 | }, 198 | "defusedxml": { 199 | "hashes": [ 200 | "sha256:86b15d9e3c639de79f4cb38aeffea3281f62aff78dde7d798e1352c63bfa6ea0", 201 | "sha256:a290cad10346ed366c8a0133d868eaf6585ec6afdd0c511286cdb11f5fc3d285" 202 | ], 203 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", 204 | "version": "==0.7.0" 205 | }, 206 | "docker": { 207 | "hashes": [ 208 | "sha256:d3393c878f575d3a9ca3b94471a3c89a6d960b35feb92f033c0de36cc9d934db", 209 | "sha256:f3607d5695be025fa405a12aca2e5df702a57db63790c73b927eb6a94aac60af" 210 | ], 211 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", 212 | "version": "==4.4.4" 213 | }, 214 | "entrypoints": { 215 | "hashes": [ 216 | "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19", 217 | "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451" 218 | ], 219 | "markers": "python_version >= '2.7'", 220 | "version": "==0.3" 221 | }, 222 | "flask": { 223 | "hashes": [ 224 | "sha256:4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060", 225 | "sha256:8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557" 226 | ], 227 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", 228 | "version": "==1.1.2" 229 | }, 230 | "gitdb": { 231 | "hashes": [ 232 | "sha256:91f36bfb1ab7949b3b40e23736db18231bf7593edada2ba5c3a174a7b23657ac", 233 | "sha256:c9e1f2d0db7ddb9a704c2a0217be31214e91a4fe1dea1efad19ae42ba0c285c9" 234 | ], 235 | "markers": "python_version >= '3.4'", 236 | "version": "==4.0.5" 237 | }, 238 | "gitpython": { 239 | "hashes": [ 240 | "sha256:3283ae2fba31c913d857e12e5ba5f9a7772bbc064ae2bb09efafa71b0dd4939b", 241 | "sha256:be27633e7509e58391f10207cd32b2a6cf5b908f92d9cd30da2e514e1137af61" 242 | ], 243 | "markers": "python_version >= '3.4'", 244 | "version": "==3.1.14" 245 | }, 246 | "gunicorn": { 247 | "hashes": [ 248 | "sha256:1904bb2b8a43658807108d59c3f3d56c2b6121a701161de0ddf9ad140073c626", 249 | "sha256:cd4a810dd51bf497552cf3f863b575dabd73d6ad6a91075b65936b151cbf4f9c" 250 | ], 251 | "markers": "platform_system != 'Windows'", 252 | "version": "==20.0.4" 253 | }, 254 | "idna": { 255 | "hashes": [ 256 | "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", 257 | "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" 258 | ], 259 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 260 | "version": "==2.10" 261 | }, 262 | "ipykernel": { 263 | "hashes": [ 264 | "sha256:98321abefdf0505fb3dc7601f60fc4087364d394bd8fad53107eb1adee9ff475", 265 | "sha256:efd07253b54d84d26e0878d268c8c3a41582a18750da633c2febfd2ece0d467d" 266 | ], 267 | "markers": "python_version >= '3.5'", 268 | "version": "==5.5.0" 269 | }, 270 | "ipython": { 271 | "hashes": [ 272 | "sha256:04323f72d5b85b606330b6d7e2dc8d2683ad46c3905e955aa96ecc7a99388e70", 273 | "sha256:34207ffb2f653bced2bc8e3756c1db86e7d93e44ed049daae9814fed66d408ec" 274 | ], 275 | "markers": "python_version >= '3.3'", 276 | "version": "==7.21.0" 277 | }, 278 | "ipython-genutils": { 279 | "hashes": [ 280 | "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8", 281 | "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8" 282 | ], 283 | "version": "==0.2.0" 284 | }, 285 | "ipywidgets": { 286 | "hashes": [ 287 | "sha256:9f1a43e620530f9e570e4a493677d25f08310118d315b00e25a18f12913c41f0", 288 | "sha256:e6513cfdaf5878de30f32d57f6dc2474da395a2a2991b94d487406c0ab7f55ca" 289 | ], 290 | "version": "==7.6.3" 291 | }, 292 | "itsdangerous": { 293 | "hashes": [ 294 | "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19", 295 | "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749" 296 | ], 297 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 298 | "version": "==1.1.0" 299 | }, 300 | "jedi": { 301 | "hashes": [ 302 | "sha256:18456d83f65f400ab0c2d3319e48520420ef43b23a086fdc05dff34132f0fb93", 303 | "sha256:92550a404bad8afed881a137ec9a461fed49eca661414be45059329614ed0707" 304 | ], 305 | "markers": "python_version >= '3.6'", 306 | "version": "==0.18.0" 307 | }, 308 | "jinja2": { 309 | "hashes": [ 310 | "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419", 311 | "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6" 312 | ], 313 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", 314 | "version": "==2.11.3" 315 | }, 316 | "jmespath": { 317 | "hashes": [ 318 | "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9", 319 | "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f" 320 | ], 321 | "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", 322 | "version": "==0.10.0" 323 | }, 324 | "joblib": { 325 | "hashes": [ 326 | "sha256:9c17567692206d2f3fb9ecf5e991084254fe631665c450b443761c4186a613f7", 327 | "sha256:feeb1ec69c4d45129954f1b7034954241eedfd6ba39b5e9e4b6883be3332d5e5" 328 | ], 329 | "markers": "python_version >= '3.6'", 330 | "version": "==1.0.1" 331 | }, 332 | "jsonschema": { 333 | "hashes": [ 334 | "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163", 335 | "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a" 336 | ], 337 | "version": "==3.2.0" 338 | }, 339 | "jupyter": { 340 | "hashes": [ 341 | "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7", 342 | "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78", 343 | "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f" 344 | ], 345 | "index": "pypi", 346 | "version": "==1.0.0" 347 | }, 348 | "jupyter-client": { 349 | "hashes": [ 350 | "sha256:5eaaa41df449167ebba5e1cf6ca9b31f7fd4f71625069836e2e4fee07fe3cb13", 351 | "sha256:649ca3aca1e28f27d73ef15868a7c7f10d6e70f761514582accec3ca6bb13085" 352 | ], 353 | "markers": "python_version >= '3.5'", 354 | "version": "==6.1.11" 355 | }, 356 | "jupyter-console": { 357 | "hashes": [ 358 | "sha256:1d80c06b2d85bfb10bd5cc731b3db18e9023bc81ab00491d3ac31f206490aee3", 359 | "sha256:7f6194f4f4692d292da3f501c7f343ccd5e36c6a1becf7b7515e23e66d6bf1e9" 360 | ], 361 | "markers": "python_version >= '3.6'", 362 | "version": "==6.2.0" 363 | }, 364 | "jupyter-core": { 365 | "hashes": [ 366 | "sha256:79025cb3225efcd36847d0840f3fc672c0abd7afd0de83ba8a1d3837619122b4", 367 | "sha256:8c6c0cac5c1b563622ad49321d5ec47017bd18b94facb381c6973a0486395f8e" 368 | ], 369 | "markers": "python_version >= '3.6'", 370 | "version": "==4.7.1" 371 | }, 372 | "jupyterlab-pygments": { 373 | "hashes": [ 374 | "sha256:abfb880fd1561987efaefcb2d2ac75145d2a5d0139b1876d5be806e32f630008", 375 | "sha256:cfcda0873626150932f438eccf0f8bf22bfa92345b814890ab360d666b254146" 376 | ], 377 | "version": "==0.1.2" 378 | }, 379 | "jupyterlab-widgets": { 380 | "hashes": [ 381 | "sha256:5c1a29a84d3069208cb506b10609175b249b6486d6b1cbae8fcde2a11584fb78", 382 | "sha256:caeaf3e6103180e654e7d8d2b81b7d645e59e432487c1d35a41d6d3ee56b3fef" 383 | ], 384 | "markers": "python_version >= '3.6'", 385 | "version": "==1.0.0" 386 | }, 387 | "kiwisolver": { 388 | "hashes": [ 389 | "sha256:0cd53f403202159b44528498de18f9285b04482bab2a6fc3f5dd8dbb9352e30d", 390 | "sha256:1e1bc12fb773a7b2ffdeb8380609f4f8064777877b2225dec3da711b421fda31", 391 | "sha256:225e2e18f271e0ed8157d7f4518ffbf99b9450fca398d561eb5c4a87d0986dd9", 392 | "sha256:232c9e11fd7ac3a470d65cd67e4359eee155ec57e822e5220322d7b2ac84fbf0", 393 | "sha256:31dfd2ac56edc0ff9ac295193eeaea1c0c923c0355bf948fbd99ed6018010b72", 394 | "sha256:33449715e0101e4d34f64990352bce4095c8bf13bed1b390773fc0a7295967b3", 395 | "sha256:401a2e9afa8588589775fe34fc22d918ae839aaaf0c0e96441c0fdbce6d8ebe6", 396 | "sha256:44a62e24d9b01ba94ae7a4a6c3fb215dc4af1dde817e7498d901e229aaf50e4e", 397 | "sha256:50af681a36b2a1dee1d3c169ade9fdc59207d3c31e522519181e12f1b3ba7000", 398 | "sha256:563c649cfdef27d081c84e72a03b48ea9408c16657500c312575ae9d9f7bc1c3", 399 | "sha256:5989db3b3b34b76c09253deeaf7fbc2707616f130e166996606c284395da3f18", 400 | "sha256:5a7a7dbff17e66fac9142ae2ecafb719393aaee6a3768c9de2fd425c63b53e21", 401 | "sha256:5c3e6455341008a054cccee8c5d24481bcfe1acdbc9add30aa95798e95c65621", 402 | "sha256:5f6ccd3dd0b9739edcf407514016108e2280769c73a85b9e59aa390046dbf08b", 403 | "sha256:72c99e39d005b793fb7d3d4e660aed6b6281b502e8c1eaf8ee8346023c8e03bc", 404 | "sha256:78751b33595f7f9511952e7e60ce858c6d64db2e062afb325985ddbd34b5c131", 405 | "sha256:834ee27348c4aefc20b479335fd422a2c69db55f7d9ab61721ac8cd83eb78882", 406 | "sha256:8be8d84b7d4f2ba4ffff3665bcd0211318aa632395a1a41553250484a871d454", 407 | "sha256:950a199911a8d94683a6b10321f9345d5a3a8433ec58b217ace979e18f16e248", 408 | "sha256:a357fd4f15ee49b4a98b44ec23a34a95f1e00292a139d6015c11f55774ef10de", 409 | "sha256:a53d27d0c2a0ebd07e395e56a1fbdf75ffedc4a05943daf472af163413ce9598", 410 | "sha256:acef3d59d47dd85ecf909c359d0fd2c81ed33bdff70216d3956b463e12c38a54", 411 | "sha256:b38694dcdac990a743aa654037ff1188c7a9801ac3ccc548d3341014bc5ca278", 412 | "sha256:b9edd0110a77fc321ab090aaa1cfcaba1d8499850a12848b81be2222eab648f6", 413 | "sha256:c08e95114951dc2090c4a630c2385bef681cacf12636fb0241accdc6b303fd81", 414 | "sha256:c5518d51a0735b1e6cee1fdce66359f8d2b59c3ca85dc2b0813a8aa86818a030", 415 | "sha256:c8fd0f1ae9d92b42854b2979024d7597685ce4ada367172ed7c09edf2cef9cb8", 416 | "sha256:ca3820eb7f7faf7f0aa88de0e54681bddcb46e485beb844fcecbcd1c8bd01689", 417 | "sha256:cf8b574c7b9aa060c62116d4181f3a1a4e821b2ec5cbfe3775809474113748d4", 418 | "sha256:d3155d828dec1d43283bd24d3d3e0d9c7c350cdfcc0bd06c0ad1209c1bbc36d0", 419 | "sha256:f8d6f8db88049a699817fd9178782867bf22283e3813064302ac59f61d95be05", 420 | "sha256:fd34fbbfbc40628200730bc1febe30631347103fc8d3d4fa012c21ab9c11eca9" 421 | ], 422 | "markers": "python_version >= '3.6'", 423 | "version": "==1.3.1" 424 | }, 425 | "mako": { 426 | "hashes": [ 427 | "sha256:17831f0b7087c313c0ffae2bcbbd3c1d5ba9eeac9c38f2eb7b50e8c99fe9d5ab", 428 | "sha256:aea166356da44b9b830c8023cd9b557fa856bd8b4035d6de771ca027dfc5cc6e" 429 | ], 430 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 431 | "version": "==1.1.4" 432 | }, 433 | "markupsafe": { 434 | "hashes": [ 435 | "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473", 436 | "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161", 437 | "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235", 438 | "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5", 439 | "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42", 440 | "sha256:195d7d2c4fbb0ee8139a6cf67194f3973a6b3042d742ebe0a9ed36d8b6f0c07f", 441 | "sha256:22c178a091fc6630d0d045bdb5992d2dfe14e3259760e713c490da5323866c39", 442 | "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff", 443 | "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", 444 | "sha256:2beec1e0de6924ea551859edb9e7679da6e4870d32cb766240ce17e0a0ba2014", 445 | "sha256:3b8a6499709d29c2e2399569d96719a1b21dcd94410a586a18526b143ec8470f", 446 | "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1", 447 | "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e", 448 | "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183", 449 | "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66", 450 | "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b", 451 | "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1", 452 | "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15", 453 | "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1", 454 | "sha256:6f1e273a344928347c1290119b493a1f0303c52f5a5eae5f16d74f48c15d4a85", 455 | "sha256:6fffc775d90dcc9aed1b89219549b329a9250d918fd0b8fa8d93d154918422e1", 456 | "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e", 457 | "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b", 458 | "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905", 459 | "sha256:7fed13866cf14bba33e7176717346713881f56d9d2bcebab207f7a036f41b850", 460 | "sha256:84dee80c15f1b560d55bcfe6d47b27d070b4681c699c572af2e3c7cc90a3b8e0", 461 | "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735", 462 | "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d", 463 | "sha256:98bae9582248d6cf62321dcb52aaf5d9adf0bad3b40582925ef7c7f0ed85fceb", 464 | "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e", 465 | "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d", 466 | "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c", 467 | "sha256:a6a744282b7718a2a62d2ed9d993cad6f5f585605ad352c11de459f4108df0a1", 468 | "sha256:acf08ac40292838b3cbbb06cfe9b2cb9ec78fce8baca31ddb87aaac2e2dc3bc2", 469 | "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21", 470 | "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2", 471 | "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5", 472 | "sha256:b1dba4527182c95a0db8b6060cc98ac49b9e2f5e64320e2b56e47cb2831978c7", 473 | "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b", 474 | "sha256:b7d644ddb4dbd407d31ffb699f1d140bc35478da613b441c582aeb7c43838dd8", 475 | "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6", 476 | "sha256:bf5aa3cbcfdf57fa2ee9cd1822c862ef23037f5c832ad09cfea57fa846dec193", 477 | "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f", 478 | "sha256:caabedc8323f1e93231b52fc32bdcde6db817623d33e100708d9a68e1f53b26b", 479 | "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f", 480 | "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2", 481 | "sha256:d53bc011414228441014aa71dbec320c66468c1030aae3a6e29778a3382d96e5", 482 | "sha256:d73a845f227b0bfe8a7455ee623525ee656a9e2e749e4742706d80a6065d5e2c", 483 | "sha256:d9be0ba6c527163cbed5e0857c451fcd092ce83947944d6c14bc95441203f032", 484 | "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7", 485 | "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be", 486 | "sha256:feb7b34d6325451ef96bc0e36e1a6c0c1c64bc1fbec4b854f4529e51887b1621" 487 | ], 488 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 489 | "version": "==1.1.1" 490 | }, 491 | "matplotlib": { 492 | "hashes": [ 493 | "sha256:1de0bb6cbfe460725f0e97b88daa8643bcf9571c18ba90bb8e41432aaeca91d6", 494 | "sha256:1e850163579a8936eede29fad41e202b25923a0a8d5ffd08ce50fc0a97dcdc93", 495 | "sha256:215e2a30a2090221a9481db58b770ce56b8ef46f13224ae33afe221b14b24dc1", 496 | "sha256:348e6032f666ffd151b323342f9278b16b95d4a75dfacae84a11d2829a7816ae", 497 | "sha256:3d2eb9c1cc254d0ffa90bc96fde4b6005d09c2228f99dfd493a4219c1af99644", 498 | "sha256:3e477db76c22929e4c6876c44f88d790aacdf3c3f8f3a90cb1975c0bf37825b0", 499 | "sha256:451cc89cb33d6652c509fc6b588dc51c41d7246afdcc29b8624e256b7663ed1f", 500 | "sha256:46b1a60a04e6d884f0250d5cc8dc7bd21a9a96c584a7acdaab44698a44710bab", 501 | "sha256:5f571b92a536206f7958f7cb2d367ff6c9a1fa8229dc35020006e4cdd1ca0acd", 502 | "sha256:672960dd114e342b7c610bf32fb99d14227f29919894388b41553217457ba7ef", 503 | "sha256:7310e353a4a35477c7f032409966920197d7df3e757c7624fd842f3eeb307d3d", 504 | "sha256:746a1df55749629e26af7f977ea426817ca9370ad1569436608dc48d1069b87c", 505 | "sha256:7c155437ae4fd366e2700e2716564d1787700687443de46bcb895fe0f84b761d", 506 | "sha256:9265ae0fb35e29f9b8cc86c2ab0a2e3dcddc4dd9de4b85bf26c0f63fe5c1c2ca", 507 | "sha256:94bdd1d55c20e764d8aea9d471d2ae7a7b2c84445e0fa463f02e20f9730783e1", 508 | "sha256:9a79e5dd7bb797aa611048f5b70588b23c5be05b63eefd8a0d152ac77c4243db", 509 | "sha256:a17f0a10604fac7627ec82820439e7db611722e80c408a726cd00d8c974c2fb3", 510 | "sha256:a1acb72f095f1d58ecc2538ed1b8bca0b57df313b13db36ed34b8cdf1868e674", 511 | "sha256:aa49571d8030ad0b9ac39708ee77bd2a22f87815e12bdee52ecaffece9313ed8", 512 | "sha256:c24c05f645aef776e8b8931cb81e0f1632d229b42b6d216e30836e2e145a2b40", 513 | "sha256:cf3a7e54eff792f0815dbbe9b85df2f13d739289c93d346925554f71d484be78", 514 | "sha256:d738acfdfb65da34c91acbdb56abed46803db39af259b7f194dc96920360dbe4", 515 | "sha256:e15fa23d844d54e7b3b7243afd53b7567ee71c721f592deb0727ee85e668f96a", 516 | "sha256:ed4a9e6dcacba56b17a0a9ac22ae2c72a35b7f0ef0693aa68574f0b2df607a89", 517 | "sha256:f44149a0ef5b4991aaef12a93b8e8d66d6412e762745fea1faa61d98524e0ba9" 518 | ], 519 | "index": "pypi", 520 | "version": "==3.3.4" 521 | }, 522 | "mistune": { 523 | "hashes": [ 524 | "sha256:59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e", 525 | "sha256:88a1051873018da288eee8538d476dffe1262495144b33ecb586c4ab266bb8d4" 526 | ], 527 | "version": "==0.8.4" 528 | }, 529 | "mlflow": { 530 | "hashes": [ 531 | "sha256:a4968c8b8eadd9f3c45563d359401f248111c1d15cd976332840aff773365a84", 532 | "sha256:e3abff0831564d9a4b5d5a15e5ee76b0f5b4580b362c24a58ee821634c8fb1a3" 533 | ], 534 | "index": "pypi", 535 | "version": "==1.14.1" 536 | }, 537 | "nbclient": { 538 | "hashes": [ 539 | "sha256:db17271330c68c8c88d46d72349e24c147bb6f34ec82d8481a8f025c4d26589c", 540 | "sha256:e79437364a2376892b3f46bedbf9b444e5396cfb1bc366a472c37b48e9551500" 541 | ], 542 | "markers": "python_full_version >= '3.6.1'", 543 | "version": "==0.5.3" 544 | }, 545 | "nbconvert": { 546 | "hashes": [ 547 | "sha256:39e9f977920b203baea0be67eea59f7b37a761caa542abe80f5897ce3cf6311d", 548 | "sha256:cbbc13a86dfbd4d1b5dee106539de0795b4db156c894c2c5dc382062bbc29002" 549 | ], 550 | "markers": "python_version >= '3.6'", 551 | "version": "==6.0.7" 552 | }, 553 | "nbformat": { 554 | "hashes": [ 555 | "sha256:1d223e64a18bfa7cdf2db2e9ba8a818312fc2a0701d2e910b58df66809385a56", 556 | "sha256:3949fdc8f5fa0b1afca16fb307546e78494fa7a7bceff880df8168eafda0e7ac" 557 | ], 558 | "markers": "python_version >= '3.5'", 559 | "version": "==5.1.2" 560 | }, 561 | "nest-asyncio": { 562 | "hashes": [ 563 | "sha256:76d6e972265063fe92a90b9cc4fb82616e07d586b346ed9d2c89a4187acea39c", 564 | "sha256:afc5a1c515210a23c461932765691ad39e8eba6551c055ac8d5546e69250d0aa" 565 | ], 566 | "markers": "python_version >= '3.5'", 567 | "version": "==1.5.1" 568 | }, 569 | "notebook": { 570 | "hashes": [ 571 | "sha256:0464b28e18e7a06cec37e6177546c2322739be07962dd13bf712bcb88361f013", 572 | "sha256:25ad93c982b623441b491e693ef400598d1a46cdf11b8c9c0b3be6c61ebbb6cd" 573 | ], 574 | "markers": "python_version >= '3.5'", 575 | "version": "==6.2.0" 576 | }, 577 | "numpy": { 578 | "hashes": [ 579 | "sha256:032be656d89bbf786d743fee11d01ef318b0781281241997558fa7950028dd29", 580 | "sha256:104f5e90b143dbf298361a99ac1af4cf59131218a045ebf4ee5990b83cff5fab", 581 | "sha256:125a0e10ddd99a874fd357bfa1b636cd58deb78ba4a30b5ddb09f645c3512e04", 582 | "sha256:12e4ba5c6420917571f1a5becc9338abbde71dd811ce40b37ba62dec7b39af6d", 583 | "sha256:13adf545732bb23a796914fe5f891a12bd74cf3d2986eed7b7eba2941eea1590", 584 | "sha256:2d7e27442599104ee08f4faed56bb87c55f8b10a5494ac2ead5c98a4b289e61f", 585 | "sha256:3bc63486a870294683980d76ec1e3efc786295ae00128f9ea38e2c6e74d5a60a", 586 | "sha256:3d3087e24e354c18fb35c454026af3ed8997cfd4997765266897c68d724e4845", 587 | "sha256:4ed8e96dc146e12c1c5cdd6fb9fd0757f2ba66048bf94c5126b7efebd12d0090", 588 | "sha256:60759ab15c94dd0e1ed88241fd4fa3312db4e91d2c8f5a2d4cf3863fad83d65b", 589 | "sha256:65410c7f4398a0047eea5cca9b74009ea61178efd78d1be9847fac1d6716ec1e", 590 | "sha256:66b467adfcf628f66ea4ac6430ded0614f5cc06ba530d09571ea404789064adc", 591 | "sha256:7199109fa46277be503393be9250b983f325880766f847885607d9b13848f257", 592 | "sha256:72251e43ac426ff98ea802a931922c79b8d7596480300eb9f1b1e45e0543571e", 593 | "sha256:89e5336f2bec0c726ac7e7cdae181b325a9c0ee24e604704ed830d241c5e47ff", 594 | "sha256:89f937b13b8dd17b0099c7c2e22066883c86ca1575a975f754babc8fbf8d69a9", 595 | "sha256:9c94cab5054bad82a70b2e77741271790304651d584e2cdfe2041488e753863b", 596 | "sha256:9eb551d122fadca7774b97db8a112b77231dcccda8e91a5bc99e79890797175e", 597 | "sha256:a1d7995d1023335e67fb070b2fae6f5968f5be3802b15ad6d79d81ecaa014fe0", 598 | "sha256:ae61f02b84a0211abb56462a3b6cd1e7ec39d466d3160eb4e1da8bf6717cdbeb", 599 | "sha256:b9410c0b6fed4a22554f072a86c361e417f0258838957b78bd063bde2c7f841f", 600 | "sha256:c26287dfc888cf1e65181f39ea75e11f42ffc4f4529e5bd19add57ad458996e2", 601 | "sha256:c91ec9569facd4757ade0888371eced2ecf49e7982ce5634cc2cf4e7331a4b14", 602 | "sha256:ecb5b74c702358cdc21268ff4c37f7466357871f53a30e6f84c686952bef16a9" 603 | ], 604 | "markers": "python_version >= '3.7'", 605 | "version": "==1.20.1" 606 | }, 607 | "packaging": { 608 | "hashes": [ 609 | "sha256:5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5", 610 | "sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a" 611 | ], 612 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 613 | "version": "==20.9" 614 | }, 615 | "pandas": { 616 | "hashes": [ 617 | "sha256:09761bf5f8c741d47d4b8b9073288de1be39bbfccc281d70b889ade12b2aad29", 618 | "sha256:0f27fd1adfa256388dc34895ca5437eaf254832223812afd817a6f73127f969c", 619 | "sha256:43e00770552595c2250d8d712ec8b6e08ca73089ac823122344f023efa4abea3", 620 | "sha256:46fc671c542a8392a4f4c13edc8527e3a10f6cb62912d856f82248feb747f06e", 621 | "sha256:475b7772b6e18a93a43ea83517932deff33954a10d4fbae18d0c1aba4182310f", 622 | "sha256:4d821b9b911fc1b7d428978d04ace33f0af32bb7549525c8a7b08444bce46b74", 623 | "sha256:5e3c8c60541396110586bcbe6eccdc335a38e7de8c217060edaf4722260b158f", 624 | "sha256:621c044a1b5e535cf7dcb3ab39fca6f867095c3ef223a524f18f60c7fee028ea", 625 | "sha256:72ffcea00ae8ffcdbdefff800284311e155fbb5ed6758f1a6110fc1f8f8f0c1c", 626 | "sha256:8a051e957c5206f722e83f295f95a2cf053e890f9a1fba0065780a8c2d045f5d", 627 | "sha256:97b1954533b2a74c7e20d1342c4f01311d3203b48f2ebf651891e6a6eaf01104", 628 | "sha256:9f5829e64507ad10e2561b60baf285c470f3c4454b007c860e77849b88865ae7", 629 | "sha256:a93e34f10f67d81de706ce00bf8bb3798403cabce4ccb2de10c61b5ae8786ab5", 630 | "sha256:d59842a5aa89ca03c2099312163ffdd06f56486050e641a45d926a072f04d994", 631 | "sha256:dbb255975eb94143f2e6ec7dadda671d25147939047839cd6b8a4aff0379bb9b", 632 | "sha256:df6f10b85aef7a5bb25259ad651ad1cc1d6bb09000595cab47e718cbac250b1d" 633 | ], 634 | "markers": "python_full_version >= '3.7.1'", 635 | "version": "==1.2.3" 636 | }, 637 | "pandocfilters": { 638 | "hashes": [ 639 | "sha256:bc63fbb50534b4b1f8ebe1860889289e8af94a23bff7445259592df25a3906eb" 640 | ], 641 | "version": "==1.4.3" 642 | }, 643 | "parso": { 644 | "hashes": [ 645 | "sha256:15b00182f472319383252c18d5913b69269590616c947747bc50bf4ac768f410", 646 | "sha256:8519430ad07087d4c997fda3a7918f7cfa27cb58972a8c89c2a0295a1c940e9e" 647 | ], 648 | "markers": "python_version >= '3.6'", 649 | "version": "==0.8.1" 650 | }, 651 | "pexpect": { 652 | "hashes": [ 653 | "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937", 654 | "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c" 655 | ], 656 | "markers": "sys_platform != 'win32'", 657 | "version": "==4.8.0" 658 | }, 659 | "pickleshare": { 660 | "hashes": [ 661 | "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", 662 | "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56" 663 | ], 664 | "version": "==0.7.5" 665 | }, 666 | "pillow": { 667 | "hashes": [ 668 | "sha256:15306d71a1e96d7e271fd2a0737038b5a92ca2978d2e38b6ced7966583e3d5af", 669 | "sha256:1940fc4d361f9cc7e558d6f56ff38d7351b53052fd7911f4b60cd7bc091ea3b1", 670 | "sha256:1f93f2fe211f1ef75e6f589327f4d4f8545d5c8e826231b042b483d8383e8a7c", 671 | "sha256:30d33a1a6400132e6f521640dd3f64578ac9bfb79a619416d7e8802b4ce1dd55", 672 | "sha256:328240f7dddf77783e72d5ed79899a6b48bc6681f8d1f6001f55933cb4905060", 673 | "sha256:46c2bcf8e1e75d154e78417b3e3c64e96def738c2a25435e74909e127a8cba5e", 674 | "sha256:5762ebb4436f46b566fc6351d67a9b5386b5e5de4e58fdaa18a1c83e0e20f1a8", 675 | "sha256:5a2d957eb4aba9d48170b8fe6538ec1fbc2119ffe6373782c03d8acad3323f2e", 676 | "sha256:5cf03b9534aca63b192856aa601c68d0764810857786ea5da652581f3a44c2b0", 677 | "sha256:5daba2b40782c1c5157a788ec4454067c6616f5a0c1b70e26ac326a880c2d328", 678 | "sha256:63cd413ac52ee3f67057223d363f4f82ce966e64906aea046daf46695e3c8238", 679 | "sha256:6efac40344d8f668b6c4533ae02a48d52fd852ef0654cc6f19f6ac146399c733", 680 | "sha256:71b01ee69e7df527439d7752a2ce8fb89e19a32df484a308eca3e81f673d3a03", 681 | "sha256:71f31ee4df3d5e0b366dd362007740106d3210fb6a56ec4b581a5324ba254f06", 682 | "sha256:72027ebf682abc9bafd93b43edc44279f641e8996fb2945104471419113cfc71", 683 | "sha256:74cd9aa648ed6dd25e572453eb09b08817a1e3d9f8d1bd4d8403d99e42ea790b", 684 | "sha256:81b3716cc9744ffdf76b39afb6247eae754186838cedad0b0ac63b2571253fe6", 685 | "sha256:8565355a29655b28fdc2c666fd9a3890fe5edc6639d128814fafecfae2d70910", 686 | "sha256:87f42c976f91ca2fc21a3293e25bd3cd895918597db1b95b93cbd949f7d019ce", 687 | "sha256:89e4c757a91b8c55d97c91fa09c69b3677c227b942fa749e9a66eef602f59c28", 688 | "sha256:8c4e32218c764bc27fe49b7328195579581aa419920edcc321c4cb877c65258d", 689 | "sha256:903293320efe2466c1ab3509a33d6b866dc850cfd0c5d9cc92632014cec185fb", 690 | "sha256:90882c6f084ef68b71bba190209a734bf90abb82ab5e8f64444c71d5974008c6", 691 | "sha256:98afcac3205d31ab6a10c5006b0cf040d0026a68ec051edd3517b776c1d78b09", 692 | "sha256:a01da2c266d9868c4f91a9c6faf47a251f23b9a862dce81d2ff583135206f5be", 693 | "sha256:aeab4cd016e11e7aa5cfc49dcff8e51561fa64818a0be86efa82c7038e9369d0", 694 | "sha256:b07c660e014852d98a00a91adfbe25033898a9d90a8f39beb2437d22a203fc44", 695 | "sha256:bead24c0ae3f1f6afcb915a057943ccf65fc755d11a1410a909c1fefb6c06ad1", 696 | "sha256:d1d6bca39bb6dd94fba23cdb3eeaea5e30c7717c5343004d900e2a63b132c341", 697 | "sha256:e2cd8ac157c1e5ae88b6dd790648ee5d2777e76f1e5c7d184eaddb2938594f34", 698 | "sha256:e5739ae63636a52b706a0facec77b2b58e485637e1638202556156e424a02dc2", 699 | "sha256:f36c3ff63d6fc509ce599a2f5b0d0732189eed653420e7294c039d342c6e204a", 700 | "sha256:f91b50ad88048d795c0ad004abbe1390aa1882073b1dca10bfd55d0b8cf18ec5" 701 | ], 702 | "markers": "python_version >= '3.6'", 703 | "version": "==8.1.2" 704 | }, 705 | "prometheus-client": { 706 | "hashes": [ 707 | "sha256:9da7b32f02439d8c04f7777021c304ed51d9ec180604700c1ba72a4d44dceb03", 708 | "sha256:b08c34c328e1bf5961f0b4352668e6c8f145b4a087e09b7296ef62cbe4693d35" 709 | ], 710 | "version": "==0.9.0" 711 | }, 712 | "prometheus-flask-exporter": { 713 | "hashes": [ 714 | "sha256:01c8282eb695596531f29f4869c1b127e1918af4f191f1215c4b0b0d081f757e" 715 | ], 716 | "version": "==0.18.1" 717 | }, 718 | "prompt-toolkit": { 719 | "hashes": [ 720 | "sha256:0fa02fa80363844a4ab4b8d6891f62dd0645ba672723130423ca4037b80c1974", 721 | "sha256:62c811e46bd09130fb11ab759012a4ae385ce4fb2073442d1898867a824183bd" 722 | ], 723 | "markers": "python_full_version >= '3.6.1'", 724 | "version": "==3.0.16" 725 | }, 726 | "protobuf": { 727 | "hashes": [ 728 | "sha256:119b4d308c87e833b6265b3922d5f5927e9d804605fcb1c1f771aa4d17e03591", 729 | "sha256:282385b8dd168b0f71f2ffca74c1fb39377f42217830ab492a0b64cbe14f86c1", 730 | "sha256:2d4cede5f2f2514df4a1eda1424a14d46daa5ea57963a1ea0fdab8d74ca2f9cd", 731 | "sha256:5d52d89e26adf0ba65193b6be39025c7766740ccc57fe9d10ddb709220b360d9", 732 | "sha256:6bb44c15c98091e926a98362bff7fb24338bdf4001a6614834b8414c3b8593ee", 733 | "sha256:762f6b9fb8025db34f762a860fd2b1473dfc84bcd0c3e4f396a695c83d733729", 734 | "sha256:8090b77f0791560b3c01263f6222006fe4c1d1d526539344afc4ecd9bd3e56f2", 735 | "sha256:87b5bc2ff944810a918628fc1f45f766acab23e1fecb0634fcf86cda554b30c4", 736 | "sha256:9133b39924485ae43c02fc8274e57e5aa1706ad0970de49c72cfb8c0854d5f89", 737 | "sha256:9f4445f197f779cd5b37c9d5d4aeb0d1999c1df7d143a9bce21d03dac8dba205", 738 | "sha256:a390e4bbb8232945fc8e4493c8b70949423a6dacee6f0353021b59c40b039e25", 739 | "sha256:ab735b3a4342004afa60ff580ce2be0f2aa784f1f69ee7f08a23ef26d22d811d", 740 | "sha256:ac7c7a2b271307787ccdc0a45278827f36f72aba5040eadefff129b869068797", 741 | "sha256:be8a929c6178bb6cbe9e2c858be62fa08966a39ae758a8493a88f0ed1efb6097", 742 | "sha256:c5b37b117ef89431149883d9b867c341a01f835142864722534885dcc1db6b1b", 743 | "sha256:d1aab4d0aed36f7873734a243b46786d407cfa1010fae886249db56a1493a057", 744 | "sha256:d26ed8dbdbe6b62cd24173c9ceb7588ae7831eec172ac002b095af091db01196", 745 | "sha256:dbb98adb4281684eb54ce1f003b574bbc5768b9f614d7faa2c56f30e18519ec7", 746 | "sha256:dc7191b2e3361fdf2979e78a120a3a40e9d811318f6b2629036f53d9cb041c09", 747 | "sha256:f75aa0483fec2e4208bd4be18da0e3d7161dc74c65b6d6108f5968a8fe53a8ce" 748 | ], 749 | "version": "==3.15.5" 750 | }, 751 | "ptyprocess": { 752 | "hashes": [ 753 | "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", 754 | "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220" 755 | ], 756 | "markers": "os_name != 'nt'", 757 | "version": "==0.7.0" 758 | }, 759 | "pycparser": { 760 | "hashes": [ 761 | "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0", 762 | "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705" 763 | ], 764 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 765 | "version": "==2.20" 766 | }, 767 | "pygments": { 768 | "hashes": [ 769 | "sha256:2656e1a6edcdabf4275f9a3640db59fd5de107d88e8663c5d4e9a0fa62f77f94", 770 | "sha256:534ef71d539ae97d4c3a4cf7d6f110f214b0e687e92f9cb9d2a3b0d3101289c8" 771 | ], 772 | "markers": "python_version >= '3.5'", 773 | "version": "==2.8.1" 774 | }, 775 | "pyparsing": { 776 | "hashes": [ 777 | "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", 778 | "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" 779 | ], 780 | "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", 781 | "version": "==2.4.7" 782 | }, 783 | "pyrsistent": { 784 | "hashes": [ 785 | "sha256:2e636185d9eb976a18a8a8e96efce62f2905fea90041958d8cc2a189756ebf3e" 786 | ], 787 | "markers": "python_version >= '3.5'", 788 | "version": "==0.17.3" 789 | }, 790 | "python-dateutil": { 791 | "hashes": [ 792 | "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c", 793 | "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a" 794 | ], 795 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 796 | "version": "==2.8.1" 797 | }, 798 | "python-editor": { 799 | "hashes": [ 800 | "sha256:1bf6e860a8ad52a14c3ee1252d5dc25b2030618ed80c022598f00176adc8367d", 801 | "sha256:51fda6bcc5ddbbb7063b2af7509e43bd84bfc32a4ff71349ec7847713882327b", 802 | "sha256:5f98b069316ea1c2ed3f67e7f5df6c0d8f10b689964a4a811ff64f0106819ec8", 803 | "sha256:c3da2053dbab6b29c94e43c486ff67206eafbe7eb52dbec7390b5e2fb05aac77", 804 | "sha256:ea87e17f6ec459e780e4221f295411462e0d0810858e055fc514684350a2f522" 805 | ], 806 | "version": "==1.0.4" 807 | }, 808 | "pytz": { 809 | "hashes": [ 810 | "sha256:83a4a90894bf38e243cf052c8b58f381bfe9a7a483f6a9cab140bc7f702ac4da", 811 | "sha256:eb10ce3e7736052ed3623d49975ce333bcd712c7bb19a58b9e2089d4057d0798" 812 | ], 813 | "version": "==2021.1" 814 | }, 815 | "pyyaml": { 816 | "hashes": [ 817 | "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf", 818 | "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696", 819 | "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393", 820 | "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77", 821 | "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922", 822 | "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5", 823 | "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8", 824 | "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10", 825 | "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc", 826 | "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018", 827 | "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e", 828 | "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253", 829 | "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183", 830 | "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb", 831 | "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185", 832 | "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db", 833 | "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46", 834 | "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b", 835 | "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63", 836 | "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df", 837 | "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc" 838 | ], 839 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", 840 | "version": "==5.4.1" 841 | }, 842 | "pyzmq": { 843 | "hashes": [ 844 | "sha256:13465c1ff969cab328bc92f7015ce3843f6e35f8871ad79d236e4fbc85dbe4cb", 845 | "sha256:23a74de4b43c05c3044aeba0d1f3970def8f916151a712a3ac1e5cd9c0bc2902", 846 | "sha256:26380487eae4034d6c2a3fb8d0f2dff6dd0d9dd711894e8d25aa2d1938950a33", 847 | "sha256:279cc9b51db48bec2db146f38e336049ac5a59e5f12fb3a8ad864e238c1c62e3", 848 | "sha256:2f971431aaebe0a8b54ac018e041c2f0b949a43745444e4dadcc80d0f0ef8457", 849 | "sha256:30df70f81fe210506aa354d7fd486a39b87d9f7f24c3d3f4f698ec5d96b8c084", 850 | "sha256:33acd2b9790818b9d00526135acf12790649d8d34b2b04d64558b469c9d86820", 851 | "sha256:38e3dca75d81bec4f2defa14b0a65b74545812bb519a8e89c8df96bbf4639356", 852 | "sha256:3e29f9cf85a40d521d048b55c63f59d6c772ac1c4bf51cdfc23b62a62e377c33", 853 | "sha256:3ef50d74469b03725d781a2a03c57537d86847ccde587130fe35caafea8f75c6", 854 | "sha256:4231943514812dfb74f44eadcf85e8dd8cf302b4d0bce450ce1357cac88dbfdc", 855 | "sha256:4f34a173f813b38b83f058e267e30465ed64b22cd0cf6bad21148d3fa718f9bb", 856 | "sha256:532af3e6dddea62d9c49062ece5add998c9823c2419da943cf95589f56737de0", 857 | "sha256:581787c62eaa0e0db6c5413cedc393ebbadac6ddfd22e1cf9a60da23c4f1a4b2", 858 | "sha256:60e63577b85055e4cc43892fecd877b86695ee3ef12d5d10a3c5d6e77a7cc1a3", 859 | "sha256:61e4bb6cd60caf1abcd796c3f48395e22c5b486eeca6f3a8797975c57d94b03e", 860 | "sha256:6d4163704201fff0f3ab0cd5d7a0ea1514ecfffd3926d62ec7e740a04d2012c7", 861 | "sha256:7026f0353977431fc884abd4ac28268894bd1a780ba84bb266d470b0ec26d2ed", 862 | "sha256:763c175294d861869f18eb42901d500eda7d3fa4565f160b3b2fd2678ea0ebab", 863 | "sha256:81e7df0da456206201e226491aa1fc449da85328bf33bbeec2c03bb3a9f18324", 864 | "sha256:9221783dacb419604d5345d0e097bddef4459a9a95322de6c306bf1d9896559f", 865 | "sha256:a558c5bc89d56d7253187dccc4e81b5bb0eac5ae9511eb4951910a1245d04622", 866 | "sha256:b25e5d339550a850f7e919fe8cb4c8eabe4c917613db48dab3df19bfb9a28969", 867 | "sha256:b62ea18c0458a65ccd5be90f276f7a5a3f26a6dea0066d948ce2fa896051420f", 868 | "sha256:c0cde362075ee8f3d2b0353b283e203c2200243b5a15d5c5c03b78112a17e7d4", 869 | "sha256:c5e29fe4678f97ce429f076a2a049a3d0b2660ada8f2c621e5dc9939426056dd", 870 | "sha256:d18ddc6741b51f3985978f2fda57ddcdae359662d7a6b395bc8ff2292fca14bd", 871 | "sha256:da7d4d4c778c86b60949d17531e60c54ed3726878de8a7f8a6d6e7f8cc8c3205", 872 | "sha256:f52070871a0fd90a99130babf21f8af192304ec1e995bec2a9533efc21ea4452", 873 | "sha256:f5831eff6b125992ec65d973f5151c48003b6754030094723ac4c6e80a97c8c4", 874 | "sha256:f7f63ce127980d40f3e6a5fdb87abf17ce1a7c2bd8bf2c7560e1bbce8ab1f92d", 875 | "sha256:ff1ea14075bbddd6f29bf6beb8a46d0db779bcec6b9820909584081ec119f8fd" 876 | ], 877 | "markers": "python_version >= '3.6'", 878 | "version": "==22.0.3" 879 | }, 880 | "qtconsole": { 881 | "hashes": [ 882 | "sha256:0173486b9cd69e17df537fb4f1e0d62a88019f6661700a11fd7236fa89ed900b", 883 | "sha256:404994edfe33c201d6bd0c4bd501b00c16125071573c938533224992bea0b30f" 884 | ], 885 | "markers": "python_version >= '3.6'", 886 | "version": "==5.0.2" 887 | }, 888 | "qtpy": { 889 | "hashes": [ 890 | "sha256:2db72c44b55d0fe1407be8fba35c838ad0d6d3bb81f23007886dc1fc0f459c8d", 891 | "sha256:fa0b8363b363e89b2a6f49eddc162a04c0699ae95e109a6be3bb145a913190ea" 892 | ], 893 | "version": "==1.9.0" 894 | }, 895 | "querystring-parser": { 896 | "hashes": [ 897 | "sha256:644fce1cffe0530453b43a83a38094dbe422ccba8c9b2f2a1c00280e14ca8a62", 898 | "sha256:d2fa90765eaf0de96c8b087872991a10238e89ba015ae59fedfed6bd61c242a0" 899 | ], 900 | "version": "==1.2.4" 901 | }, 902 | "requests": { 903 | "hashes": [ 904 | "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", 905 | "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e" 906 | ], 907 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", 908 | "version": "==2.25.1" 909 | }, 910 | "s3transfer": { 911 | "hashes": [ 912 | "sha256:1e28620e5b444652ed752cf87c7e0cb15b0e578972568c6609f0f18212f259ed", 913 | "sha256:7fdddb4f22275cf1d32129e21f056337fd2a80b6ccef1664528145b72c49e6d2" 914 | ], 915 | "version": "==0.3.4" 916 | }, 917 | "scikit-learn": { 918 | "hashes": [ 919 | "sha256:0567a2d29ad08af98653300c623bd8477b448fe66ced7198bef4ed195925f082", 920 | "sha256:087dfede39efb06ab30618f9ab55a0397f29c38d63cd0ab88d12b500b7d65fd7", 921 | "sha256:1adf483e91007a87171d7ce58c34b058eb5dab01b5fee6052f15841778a8ecd8", 922 | "sha256:259ec35201e82e2db1ae2496f229e63f46d7f1695ae68eef9350b00dc74ba52f", 923 | "sha256:3c4f07f47c04e81b134424d53c3f5e16dfd7f494e44fd7584ba9ce9de2c5e6c1", 924 | "sha256:4562dcf4793e61c5d0f89836d07bc37521c3a1889da8f651e2c326463c4bd697", 925 | "sha256:4ddd2b6f7449a5d539ff754fa92d75da22de261fd8fdcfb3596799fadf255101", 926 | "sha256:7b04691eb2f41d2c68dbda8d1bd3cb4ef421bdc43aaa56aeb6c762224552dfb6", 927 | "sha256:826b92bf45b8ad80444814e5f4ac032156dd481e48d7da33d611f8fe96d5f08b", 928 | "sha256:83b21ff053b1ff1c018a2d24db6dd3ea339b1acfbaa4d9c881731f43748d8b3b", 929 | "sha256:8772b99d683be8f67fcc04789032f1b949022a0e6880ee7b75a7ec97dbbb5d0b", 930 | "sha256:895dbf2030aa7337649e36a83a007df3c9811396b4e2fa672a851160f36ce90c", 931 | "sha256:8aa1b3ac46b80eaa552b637eeadbbce3be5931e4b5002b964698e33a1b589e1e", 932 | "sha256:99349d77f54e11f962d608d94dfda08f0c9e5720d97132233ebdf35be2858b2d", 933 | "sha256:9a24d1ccec2a34d4cd3f2a1f86409f3f5954cc23d4d2270ba0d03cf018aa4780", 934 | "sha256:9bed8a1ef133c8e2f13966a542cb8125eac7f4b67dcd234197c827ba9c7dd3e0", 935 | "sha256:9c6097b6a9b2bafc5e0f31f659e6ab5e131383209c30c9e978c5b8abdac5ed2a", 936 | "sha256:9dfa564ef27e8e674aa1cc74378416d580ac4ede1136c13dd555a87996e13422", 937 | "sha256:a0334a1802e64d656022c3bfab56a73fbd6bf4b1298343f3688af2151810bbdf", 938 | "sha256:a29460499c1e62b7a830bb57ca42e615375a6ab1bcad053cd25b493588348ea8", 939 | "sha256:a36e159a0521e13bbe15ca8c8d038b3a1dd4c7dad18d276d76992e03b92cf643", 940 | "sha256:c13ebac42236b1c46397162471ea1c46af68413000e28b9309f8c05722c65a09", 941 | "sha256:c3deb3b19dd9806acf00cf0d400e84562c227723013c33abefbbc3cf906596e9", 942 | "sha256:c658432d8a20e95398f6bb95ff9731ce9dfa343fdf21eea7ec6a7edfacd4b4d9", 943 | "sha256:c7f4eb77504ac586d8ac1bde1b0c04b504487210f95297235311a0ab7edd7e38", 944 | "sha256:d54dbaadeb1425b7d6a66bf44bee2bb2b899fe3e8850b8e94cfb9c904dcb46d0", 945 | "sha256:ddb52d088889f5596bc4d1de981f2eca106b58243b6679e4782f3ba5096fd645", 946 | "sha256:ed9d65594948678827f4ff0e7ae23344e2f2b4cabbca057ccaed3118fdc392ca", 947 | "sha256:fab31f48282ebf54dd69f6663cd2d9800096bad1bb67bbc9c9ac84eb77b41972" 948 | ], 949 | "index": "pypi", 950 | "version": "==0.24.1" 951 | }, 952 | "scipy": { 953 | "hashes": [ 954 | "sha256:0c8a51d33556bf70367452d4d601d1742c0e806cd0194785914daf19775f0e67", 955 | "sha256:0e5b0ccf63155d90da576edd2768b66fb276446c371b73841e3503be1d63fb5d", 956 | "sha256:2481efbb3740977e3c831edfd0bd9867be26387cacf24eb5e366a6a374d3d00d", 957 | "sha256:33d6b7df40d197bdd3049d64e8e680227151673465e5d85723b3b8f6b15a6ced", 958 | "sha256:5da5471aed911fe7e52b86bf9ea32fb55ae93e2f0fac66c32e58897cfb02fa07", 959 | "sha256:5f331eeed0297232d2e6eea51b54e8278ed8bb10b099f69c44e2558c090d06bf", 960 | "sha256:5fa9c6530b1661f1370bcd332a1e62ca7881785cc0f80c0d559b636567fab63c", 961 | "sha256:6725e3fbb47da428794f243864f2297462e9ee448297c93ed1dcbc44335feb78", 962 | "sha256:68cb4c424112cd4be886b4d979c5497fba190714085f46b8ae67a5e4416c32b4", 963 | "sha256:794e768cc5f779736593046c9714e0f3a5940bc6dcc1dba885ad64cbfb28e9f0", 964 | "sha256:83bf7c16245c15bc58ee76c5418e46ea1811edcc2e2b03041b804e46084ab627", 965 | "sha256:8e403a337749ed40af60e537cc4d4c03febddcc56cd26e774c9b1b600a70d3e4", 966 | "sha256:a15a1f3fc0abff33e792d6049161b7795909b40b97c6cc2934ed54384017ab76", 967 | "sha256:a423533c55fec61456dedee7b6ee7dce0bb6bfa395424ea374d25afa262be261", 968 | "sha256:a5193a098ae9f29af283dcf0041f762601faf2e595c0db1da929875b7570353f", 969 | "sha256:bd50daf727f7c195e26f27467c85ce653d41df4358a25b32434a50d8870fc519", 970 | "sha256:c4fceb864890b6168e79b0e714c585dbe2fd4222768ee90bc1aa0f8218691b11", 971 | "sha256:e79570979ccdc3d165456dd62041d9556fb9733b86b4b6d818af7a0afc15f092", 972 | "sha256:f46dd15335e8a320b0fb4685f58b7471702234cba8bb3442b69a3e1dc329c345" 973 | ], 974 | "markers": "python_version >= '3.7'", 975 | "version": "==1.6.1" 976 | }, 977 | "send2trash": { 978 | "hashes": [ 979 | "sha256:60001cc07d707fe247c94f74ca6ac0d3255aabcb930529690897ca2a39db28b2", 980 | "sha256:f1691922577b6fa12821234aeb57599d887c4900b9ca537948d2dac34aea888b" 981 | ], 982 | "version": "==1.5.0" 983 | }, 984 | "six": { 985 | "hashes": [ 986 | "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", 987 | "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" 988 | ], 989 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 990 | "version": "==1.15.0" 991 | }, 992 | "smmap": { 993 | "hashes": [ 994 | "sha256:7bfcf367828031dc893530a29cb35eb8c8f2d7c8f2d0989354d75d24c8573714", 995 | "sha256:84c2751ef3072d4f6b2785ec7ee40244c6f45eb934d9e543e2c51f1bd3d54c50" 996 | ], 997 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 998 | "version": "==3.0.5" 999 | }, 1000 | "sqlalchemy": { 1001 | "hashes": [ 1002 | "sha256:040bdfc1d76a9074717a3f43455685f781c581f94472b010cd6c4754754e1862", 1003 | "sha256:1fe5d8d39118c2b018c215c37b73fd6893c3e1d4895be745ca8ff6eb83333ed3", 1004 | "sha256:23927c3981d1ec6b4ea71eb99d28424b874d9c696a21e5fbd9fa322718be3708", 1005 | "sha256:24f9569e82a009a09ce2d263559acb3466eba2617203170e4a0af91e75b4f075", 1006 | "sha256:2578dbdbe4dbb0e5126fb37ffcd9793a25dcad769a95f171a2161030bea850ff", 1007 | "sha256:269990b3ab53cb035d662dcde51df0943c1417bdab707dc4a7e4114a710504b4", 1008 | "sha256:29cccc9606750fe10c5d0e8bd847f17a97f3850b8682aef1f56f5d5e1a5a64b1", 1009 | "sha256:37b83bf81b4b85dda273aaaed5f35ea20ad80606f672d94d2218afc565fb0173", 1010 | "sha256:63677d0c08524af4c5893c18dbe42141de7178001360b3de0b86217502ed3601", 1011 | "sha256:639940bbe1108ac667dcffc79925db2966826c270112e9159439ab6bb14f8d80", 1012 | "sha256:6a939a868fdaa4b504e8b9d4a61f21aac11e3fecc8a8214455e144939e3d2aea", 1013 | "sha256:6b8b8c80c7f384f06825612dd078e4a31f0185e8f1f6b8c19e188ff246334205", 1014 | "sha256:6c9e6cc9237de5660bcddea63f332428bb83c8e2015c26777281f7ffbd2efb84", 1015 | "sha256:6ec1044908414013ebfe363450c22f14698803ce97fbb47e53284d55c5165848", 1016 | "sha256:6fca33672578666f657c131552c4ef8979c1606e494f78cd5199742dfb26918b", 1017 | "sha256:751934967f5336a3e26fc5993ccad1e4fee982029f9317eb6153bc0bc3d2d2da", 1018 | "sha256:8be835aac18ec85351385e17b8665bd4d63083a7160a017bef3d640e8e65cadb", 1019 | "sha256:927ce09e49bff3104459e1451ce82983b0a3062437a07d883a4c66f0b344c9b5", 1020 | "sha256:94208867f34e60f54a33a37f1c117251be91a47e3bfdb9ab8a7847f20886ad06", 1021 | "sha256:94f667d86be82dd4cb17d08de0c3622e77ca865320e0b95eae6153faa7b4ecaf", 1022 | "sha256:9e9c25522933e569e8b53ccc644dc993cab87e922fb7e142894653880fdd419d", 1023 | "sha256:a0e306e9bb76fd93b29ae3a5155298e4c1b504c7cbc620c09c20858d32d16234", 1024 | "sha256:a8bfc1e1afe523e94974132d7230b82ca7fa2511aedde1f537ec54db0399541a", 1025 | "sha256:ac2244e64485c3778f012951fdc869969a736cd61375fde6096d08850d8be729", 1026 | "sha256:b4b0e44d586cd64b65b507fa116a3814a1a53d55dce4836d7c1a6eb2823ff8d1", 1027 | "sha256:baeb451ee23e264de3f577fee5283c73d9bbaa8cb921d0305c0bbf700094b65b", 1028 | "sha256:c7dc052432cd5d060d7437e217dd33c97025287f99a69a50e2dc1478dd610d64", 1029 | "sha256:d1a85dfc5dee741bf49cb9b6b6b8d2725a268e4992507cf151cba26b17d97c37", 1030 | "sha256:d90010304abb4102123d10cbad2cdf2c25a9f2e66a50974199b24b468509bad5", 1031 | "sha256:ddfb511e76d016c3a160910642d57f4587dc542ce5ee823b0d415134790eeeb9", 1032 | "sha256:e273367f4076bd7b9a8dc2e771978ef2bfd6b82526e80775a7db52bff8ca01dd", 1033 | "sha256:e5bb3463df697279e5459a7316ad5a60b04b0107f9392e88674d0ece70e9cf70", 1034 | "sha256:e8a1750b44ad6422ace82bf3466638f1aa0862dbb9689690d5f2f48cce3476c8", 1035 | "sha256:eab063a70cca4a587c28824e18be41d8ecc4457f8f15b2933584c6c6cccd30f0", 1036 | "sha256:ecce8c021894a77d89808222b1ff9687ad84db54d18e4bd0500ca766737faaf6", 1037 | "sha256:f4d972139d5000105fcda9539a76452039434013570d6059993120dc2a65e447", 1038 | "sha256:fd3b96f8c705af8e938eaa99cbd8fd1450f632d38cad55e7367c33b263bf98ec", 1039 | "sha256:fdd2ed7395df8ac2dbb10cefc44737b66c6a5cd7755c92524733d7a443e5b7e2" 1040 | ], 1041 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 1042 | "version": "==1.3.23" 1043 | }, 1044 | "sqlparse": { 1045 | "hashes": [ 1046 | "sha256:017cde379adbd6a1f15a61873f43e8274179378e95ef3fede90b5aa64d304ed0", 1047 | "sha256:0f91fd2e829c44362cbcfab3e9ae12e22badaa8a29ad5ff599f9ec109f0454e8" 1048 | ], 1049 | "markers": "python_version >= '3.5'", 1050 | "version": "==0.4.1" 1051 | }, 1052 | "tabulate": { 1053 | "hashes": [ 1054 | "sha256:d7c013fe7abbc5e491394e10fa845f8f32fe54f8dc60c6622c6cf482d25d47e4", 1055 | "sha256:eb1d13f25760052e8931f2ef80aaf6045a6cceb47514db8beab24cded16f13a7" 1056 | ], 1057 | "version": "==0.8.9" 1058 | }, 1059 | "terminado": { 1060 | "hashes": [ 1061 | "sha256:23a053e06b22711269563c8bb96b36a036a86be8b5353e85e804f89b84aaa23f", 1062 | "sha256:89e6d94b19e4bc9dce0ffd908dfaf55cc78a9bf735934e915a4a96f65ac9704c" 1063 | ], 1064 | "markers": "python_version >= '3.6'", 1065 | "version": "==0.9.2" 1066 | }, 1067 | "testpath": { 1068 | "hashes": [ 1069 | "sha256:60e0a3261c149755f4399a1fff7d37523179a70fdc3abdf78de9fc2604aeec7e", 1070 | "sha256:bfcf9411ef4bf3db7579063e0546938b1edda3d69f4e1fb8756991f5951f85d4" 1071 | ], 1072 | "version": "==0.4.4" 1073 | }, 1074 | "threadpoolctl": { 1075 | "hashes": [ 1076 | "sha256:38b74ca20ff3bb42caca8b00055111d74159ee95c4370882bbff2b93d24da725", 1077 | "sha256:ddc57c96a38beb63db45d6c159b5ab07b6bced12c45a1f07b2b92f272aebfa6b" 1078 | ], 1079 | "markers": "python_version >= '3.5'", 1080 | "version": "==2.1.0" 1081 | }, 1082 | "tornado": { 1083 | "hashes": [ 1084 | "sha256:0a00ff4561e2929a2c37ce706cb8233b7907e0cdc22eab98888aca5dd3775feb", 1085 | "sha256:0d321a39c36e5f2c4ff12b4ed58d41390460f798422c4504e09eb5678e09998c", 1086 | "sha256:1e8225a1070cd8eec59a996c43229fe8f95689cb16e552d130b9793cb570a288", 1087 | "sha256:20241b3cb4f425e971cb0a8e4ffc9b0a861530ae3c52f2b0434e6c1b57e9fd95", 1088 | "sha256:25ad220258349a12ae87ede08a7b04aca51237721f63b1808d39bdb4b2164558", 1089 | "sha256:33892118b165401f291070100d6d09359ca74addda679b60390b09f8ef325ffe", 1090 | "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791", 1091 | "sha256:3447475585bae2e77ecb832fc0300c3695516a47d46cefa0528181a34c5b9d3d", 1092 | "sha256:34ca2dac9e4d7afb0bed4677512e36a52f09caa6fded70b4e3e1c89dbd92c326", 1093 | "sha256:3e63498f680547ed24d2c71e6497f24bca791aca2fe116dbc2bd0ac7f191691b", 1094 | "sha256:548430be2740e327b3fe0201abe471f314741efcb0067ec4f2d7dcfb4825f3e4", 1095 | "sha256:6196a5c39286cc37c024cd78834fb9345e464525d8991c21e908cc046d1cc02c", 1096 | "sha256:61b32d06ae8a036a6607805e6720ef00a3c98207038444ba7fd3d169cd998910", 1097 | "sha256:6286efab1ed6e74b7028327365cf7346b1d777d63ab30e21a0f4d5b275fc17d5", 1098 | "sha256:65d98939f1a2e74b58839f8c4dab3b6b3c1ce84972ae712be02845e65391ac7c", 1099 | "sha256:66324e4e1beede9ac79e60f88de548da58b1f8ab4b2f1354d8375774f997e6c0", 1100 | "sha256:6c77c9937962577a6a76917845d06af6ab9197702a42e1346d8ae2e76b5e3675", 1101 | "sha256:70dec29e8ac485dbf57481baee40781c63e381bebea080991893cd297742b8fd", 1102 | "sha256:7250a3fa399f08ec9cb3f7b1b987955d17e044f1ade821b32e5f435130250d7f", 1103 | "sha256:748290bf9112b581c525e6e6d3820621ff020ed95af6f17fedef416b27ed564c", 1104 | "sha256:7da13da6f985aab7f6f28debab00c67ff9cbacd588e8477034c0652ac141feea", 1105 | "sha256:8f959b26f2634a091bb42241c3ed8d3cedb506e7c27b8dd5c7b9f745318ddbb6", 1106 | "sha256:9de9e5188a782be6b1ce866e8a51bc76a0fbaa0e16613823fc38e4fc2556ad05", 1107 | "sha256:a48900ecea1cbb71b8c71c620dee15b62f85f7c14189bdeee54966fbd9a0c5bd", 1108 | "sha256:b87936fd2c317b6ee08a5741ea06b9d11a6074ef4cc42e031bc6403f82a32575", 1109 | "sha256:c77da1263aa361938476f04c4b6c8916001b90b2c2fdd92d8d535e1af48fba5a", 1110 | "sha256:cb5ec8eead331e3bb4ce8066cf06d2dfef1bfb1b2a73082dfe8a161301b76e37", 1111 | "sha256:cc0ee35043162abbf717b7df924597ade8e5395e7b66d18270116f8745ceb795", 1112 | "sha256:d14d30e7f46a0476efb0deb5b61343b1526f73ebb5ed84f23dc794bdb88f9d9f", 1113 | "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32", 1114 | "sha256:d3d20ea5782ba63ed13bc2b8c291a053c8d807a8fa927d941bd718468f7b950c", 1115 | "sha256:d3f7594930c423fd9f5d1a76bee85a2c36fd8b4b16921cae7e965f22575e9c01", 1116 | "sha256:dcef026f608f678c118779cd6591c8af6e9b4155c44e0d1bc0c87c036fb8c8c4", 1117 | "sha256:e0791ac58d91ac58f694d8d2957884df8e4e2f6687cdf367ef7eb7497f79eaa2", 1118 | "sha256:e385b637ac3acaae8022e7e47dfa7b83d3620e432e3ecb9a3f7f58f150e50921", 1119 | "sha256:e519d64089b0876c7b467274468709dadf11e41d65f63bba207e04217f47c085", 1120 | "sha256:e7229e60ac41a1202444497ddde70a48d33909e484f96eb0da9baf8dc68541df", 1121 | "sha256:ed3ad863b1b40cd1d4bd21e7498329ccaece75db5a5bf58cd3c9f130843e7102", 1122 | "sha256:f0ba29bafd8e7e22920567ce0d232c26d4d47c8b5cf4ed7b562b5db39fa199c5", 1123 | "sha256:fa2ba70284fa42c2a5ecb35e322e68823288a4251f9ba9cc77be04ae15eada68", 1124 | "sha256:fba85b6cd9c39be262fcd23865652920832b61583de2a2ca907dbd8e8a8c81e5" 1125 | ], 1126 | "markers": "python_version >= '3.5'", 1127 | "version": "==6.1" 1128 | }, 1129 | "tqdm": { 1130 | "hashes": [ 1131 | "sha256:9fdf349068d047d4cfbe24862c425883af1db29bcddf4b0eeb2524f6fbdb23c7", 1132 | "sha256:d666ae29164da3e517fcf125e41d4fe96e5bb375cd87ff9763f6b38b5592fe33" 1133 | ], 1134 | "index": "pypi", 1135 | "version": "==4.59.0" 1136 | }, 1137 | "traitlets": { 1138 | "hashes": [ 1139 | "sha256:178f4ce988f69189f7e523337a3e11d91c786ded9360174a3d9ca83e79bc5396", 1140 | "sha256:69ff3f9d5351f31a7ad80443c2674b7099df13cc41fc5fa6e2f6d3b0330b0426" 1141 | ], 1142 | "markers": "python_version >= '3.7'", 1143 | "version": "==5.0.5" 1144 | }, 1145 | "urllib3": { 1146 | "hashes": [ 1147 | "sha256:1b465e494e3e0d8939b50680403e3aedaa2bc434b7d5af64dfd3c958d7f5ae80", 1148 | "sha256:de3eedaad74a2683334e282005cd8d7f22f4d55fa690a2a1020a416cb0a47e73" 1149 | ], 1150 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", 1151 | "version": "==1.26.3" 1152 | }, 1153 | "wcwidth": { 1154 | "hashes": [ 1155 | "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784", 1156 | "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83" 1157 | ], 1158 | "version": "==0.2.5" 1159 | }, 1160 | "webencodings": { 1161 | "hashes": [ 1162 | "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", 1163 | "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" 1164 | ], 1165 | "version": "==0.5.1" 1166 | }, 1167 | "websocket-client": { 1168 | "hashes": [ 1169 | "sha256:44b5df8f08c74c3d82d28100fdc81f4536809ce98a17f0757557813275fbb663", 1170 | "sha256:63509b41d158ae5b7f67eb4ad20fecbb4eee99434e73e140354dc3ff8e09716f" 1171 | ], 1172 | "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", 1173 | "version": "==0.58.0" 1174 | }, 1175 | "werkzeug": { 1176 | "hashes": [ 1177 | "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43", 1178 | "sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c" 1179 | ], 1180 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", 1181 | "version": "==1.0.1" 1182 | }, 1183 | "widgetsnbextension": { 1184 | "hashes": [ 1185 | "sha256:079f87d87270bce047512400efd70238820751a11d2d8cb137a5a5bdbaf255c7", 1186 | "sha256:bd314f8ceb488571a5ffea6cc5b9fc6cba0adaf88a9d2386b93a489751938bcd" 1187 | ], 1188 | "version": "==3.5.1" 1189 | } 1190 | }, 1191 | "develop": {} 1192 | } 1193 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### How to use MLflow to manage the Machine Learning lifecycle 2 | 3 | ![](./images/mlflow.png) 4 | 5 | In this repo, I experiment with MLflow to: 6 | 7 | - track machine learning experiments based on: 8 | 9 | - metrics 10 | - hyper-parameters 11 | - source scripts executing the run 12 | - code version 13 | - notes & comments 14 | 15 | - compare different runs between each other 16 | - set up a tracking server locally and on AWS 17 | - deploy the your model using MLflow Models 18 | 19 | ### Quickstart locally 20 | 21 | To execute the code: 22 | 23 | - Install pipenv to run a virtual environment with mlflow (it's cleaner this way) 24 | 25 | ```bash 26 | pip install pipenv 27 | ``` 28 | 29 | - Clone the project 30 | 31 | ```bash 32 | git clone git@github.com:ahmedbesbes/mlflow.git 33 | ``` 34 | 35 | - Install the dependencies 36 | 37 | ```bash 38 | cd mlflow/ 39 | pipenv install . 40 | ``` 41 | 42 | - Start a tracking server locally 43 | 44 | ```bash 45 | mlflow ui 46 | ``` 47 | 48 | - Launch the training (or whatever code that logs to MLflow) 49 | 50 | ```bash 51 | python train.py 52 | ``` 53 | 54 | - Visit http://localhost:5000 to check the runs on the MLflow ui 55 | 56 | ![](./images/runs.png) 57 | 58 | ### Launch a tracking server on AWS 59 | 60 | If you're a team of developers or data scientists, you can spin up a tracking server where everyone logs his/her runs 61 | 62 | #### 1. Prepare an EC2 machine and an S3 bucket 63 | 64 | - create an IAM user on AWS. Get its credentials, namely `Access key ID` and `Secret access key` 65 | 66 | - with this same user, create an s3 bucket to store future artifacts: give this bucket a name. 67 | Mine is `mlflow-artifact-store-demo` but you cannot pick it 68 | 69 | - Launch an EC2 instance: it doesn't have to be big. a `t2.micro` eligible to free tier does perfectly the job 70 | 71 | - Configure the security group of this instance to accept inbound http traffic on port 5000 72 | 73 | - ssh into your EC2: 74 | 75 | - install pip 76 | ```bash 77 | sudo apt update 78 | sudo apt install python3-pip 79 | ``` 80 | - install pipenv 81 | 82 | ```bash 83 | sudo pip3 install pipenv 84 | sudo pip3 install virtualenv 85 | 86 | export PATH=$PATH:/home/[your_user]/.local/bin/ 87 | ``` 88 | 89 | - now with pipenv, install the dependencies to run the mlflow server 90 | 91 | ```bash 92 | pipenv install mlflow 93 | pipenv install awscli 94 | pipenv install boto3 95 | ``` 96 | 97 | - on the EC2 machine, configure aws with user's crendentials so that the tracking server can have access to s3 and display the artifacts on the UI. 98 | 99 | enter `aws configure` then follow the instructions to enter the credentials 100 | 101 | - start an mlflow server on the EC2 instance by defining the host as `0.0.0.0` and the `--default-artifact-root` as the S3 bucket 102 | 103 | ```shell 104 | mlflow server -h 0.0.0.0 \ 105 | --default-artifact-root s3://mlflow-artifact-store-demo 106 | ``` 107 | 108 | #### 2. Set AWS credentials and change the tracking URI and 109 | 110 | - set the AWS credentials as environment variables so that the code uploads artifacts to the s3 bucket 111 | 112 | ```shell 113 | export AWS_ACCESS_KEY_ID= 114 | export AWS_SECRET_ACCESS_KEY = 115 | ``` 116 | 117 | - change the tracking URI to the public dns of your EC2 machine + port 5000 118 | 119 | In my case the tracking URI was: http://ec2-35-180-45-108.eu-west-3.compute.amazonaws.com:5000/ 120 | 121 | Now you everything should be be good: after running the script locally you can inspect metrics on the UI that run on the remote server 122 | 123 | ![](./images/runs-remote.png) 124 | 125 | By clicking on a specific run, you can see its artifacts uploaded to S3. 126 | 127 | ![](./images/artifacts-s3.png) 128 | 129 | In fact, these artifacts are effectively on S3. 130 | 131 | ![](./images/s3-console.png) 132 | 133 | ### Slides 134 | 135 | - French [version](https://docs.google.com/presentation/d/1wAZnpVB9tINqZVrMP0Am3BwBgZrFRosgyIzhZ9p9In4/edit?usp=sharing) 136 | - English version (coming soon) 137 | -------------------------------------------------------------------------------- /data/sample_submission.csv: -------------------------------------------------------------------------------- 1 | enrollee_id,target 2 | 32403,0.5 3 | 9858,0.5 4 | 31806,0.5 5 | 27385,0.5 6 | 27724,0.5 7 | 217,0.5 8 | 21465,0.5 9 | 27302,0.5 10 | 12994,0.5 11 | 16287,0.5 12 | 10856,0.5 13 | 9272,0.5 14 | 14249,0.5 15 | 24372,0.5 16 | 14070,0.5 17 | 24914,0.5 18 | 7865,0.5 19 | 7463,0.5 20 | 21514,0.5 21 | 29033,0.5 22 | 15359,0.5 23 | 16001,0.5 24 | 25202,0.5 25 | 5058,0.5 26 | 23570,0.5 27 | 19139,0.5 28 | 9548,0.5 29 | 8799,0.5 30 | 11113,0.5 31 | 19437,0.5 32 | 394,0.5 33 | 7683,0.5 34 | 22849,0.5 35 | 17189,0.5 36 | 28610,0.5 37 | 25608,0.5 38 | 22139,0.5 39 | 19644,0.5 40 | 18517,0.5 41 | 12835,0.5 42 | 20178,0.5 43 | 25855,0.5 44 | 32126,0.5 45 | 22753,0.5 46 | 18133,0.5 47 | 29242,0.5 48 | 6312,0.5 49 | 113,0.5 50 | 14685,0.5 51 | 20768,0.5 52 | 25906,0.5 53 | 20142,0.5 54 | 25891,0.5 55 | 4742,0.5 56 | 2222,0.5 57 | 16917,0.5 58 | 10493,0.5 59 | 10418,0.5 60 | 9766,0.5 61 | 1361,0.5 62 | 19625,0.5 63 | 20943,0.5 64 | 9561,0.5 65 | 4271,0.5 66 | 2094,0.5 67 | 16931,0.5 68 | 27298,0.5 69 | 26493,0.5 70 | 30745,0.5 71 | 21052,0.5 72 | 20723,0.5 73 | 13539,0.5 74 | 3214,0.5 75 | 16230,0.5 76 | 25300,0.5 77 | 24018,0.5 78 | 21833,0.5 79 | 30632,0.5 80 | 4334,0.5 81 | 22271,0.5 82 | 28776,0.5 83 | 27769,0.5 84 | 25909,0.5 85 | 31266,0.5 86 | 7973,0.5 87 | 30867,0.5 88 | 22501,0.5 89 | 2539,0.5 90 | 26681,0.5 91 | 16184,0.5 92 | 3852,0.5 93 | 1680,0.5 94 | 3562,0.5 95 | 8488,0.5 96 | 8373,0.5 97 | 2934,0.5 98 | 12919,0.5 99 | 4386,0.5 100 | 22462,0.5 101 | 13988,0.5 102 | 21230,0.5 103 | 26180,0.5 104 | 16658,0.5 105 | 10324,0.5 106 | 20453,0.5 107 | 13485,0.5 108 | 33080,0.5 109 | 25492,0.5 110 | 1319,0.5 111 | 19146,0.5 112 | 29339,0.5 113 | 33177,0.5 114 | 22143,0.5 115 | 22264,0.5 116 | 17034,0.5 117 | 27002,0.5 118 | 21318,0.5 119 | 12308,0.5 120 | 842,0.5 121 | 4926,0.5 122 | 3,0.5 123 | 19567,0.5 124 | 12809,0.5 125 | 22682,0.5 126 | 1216,0.5 127 | 4417,0.5 128 | 24162,0.5 129 | 16873,0.5 130 | 21920,0.5 131 | 24230,0.5 132 | 5189,0.5 133 | 24396,0.5 134 | 770,0.5 135 | 30913,0.5 136 | 14566,0.5 137 | 15634,0.5 138 | 18163,0.5 139 | 16673,0.5 140 | 18805,0.5 141 | 15367,0.5 142 | 22556,0.5 143 | 27439,0.5 144 | 18426,0.5 145 | 9789,0.5 146 | 28172,0.5 147 | 9184,0.5 148 | 3587,0.5 149 | 1167,0.5 150 | 1663,0.5 151 | 20948,0.5 152 | 31594,0.5 153 | 27117,0.5 154 | 678,0.5 155 | 1441,0.5 156 | 31272,0.5 157 | 12443,0.5 158 | 32981,0.5 159 | 1317,0.5 160 | 4601,0.5 161 | 30498,0.5 162 | 7863,0.5 163 | 8744,0.5 164 | 14698,0.5 165 | 10021,0.5 166 | 15253,0.5 167 | 18108,0.5 168 | 31410,0.5 169 | 30532,0.5 170 | 31733,0.5 171 | 28833,0.5 172 | 8708,0.5 173 | 10050,0.5 174 | 21685,0.5 175 | 18529,0.5 176 | 1850,0.5 177 | 22639,0.5 178 | 5967,0.5 179 | 20977,0.5 180 | 5391,0.5 181 | 4398,0.5 182 | 18383,0.5 183 | 17336,0.5 184 | 7470,0.5 185 | 24781,0.5 186 | 24202,0.5 187 | 20650,0.5 188 | 5377,0.5 189 | 31693,0.5 190 | 28619,0.5 191 | 15432,0.5 192 | 22999,0.5 193 | 8377,0.5 194 | 9302,0.5 195 | 16158,0.5 196 | 29575,0.5 197 | 16573,0.5 198 | 30736,0.5 199 | 20612,0.5 200 | 11976,0.5 201 | 28302,0.5 202 | 9462,0.5 203 | 14512,0.5 204 | 8401,0.5 205 | 19780,0.5 206 | 2594,0.5 207 | 1466,0.5 208 | 17205,0.5 209 | 12990,0.5 210 | 4234,0.5 211 | 18171,0.5 212 | 15457,0.5 213 | 23319,0.5 214 | 10598,0.5 215 | 7788,0.5 216 | 32021,0.5 217 | 23969,0.5 218 | 13037,0.5 219 | 30196,0.5 220 | 19504,0.5 221 | 16336,0.5 222 | 6048,0.5 223 | 6827,0.5 224 | 9268,0.5 225 | 11169,0.5 226 | 31131,0.5 227 | 12361,0.5 228 | 15165,0.5 229 | 27773,0.5 230 | 15266,0.5 231 | 26289,0.5 232 | 32553,0.5 233 | 33062,0.5 234 | 8818,0.5 235 | 15380,0.5 236 | 30120,0.5 237 | 24317,0.5 238 | 412,0.5 239 | 30607,0.5 240 | 8513,0.5 241 | 8596,0.5 242 | 14539,0.5 243 | 20456,0.5 244 | 15221,0.5 245 | 28968,0.5 246 | 21648,0.5 247 | 3210,0.5 248 | 22118,0.5 249 | 5605,0.5 250 | 30930,0.5 251 | 28718,0.5 252 | 8141,0.5 253 | 3486,0.5 254 | 8805,0.5 255 | 6602,0.5 256 | 14916,0.5 257 | 21636,0.5 258 | 9047,0.5 259 | 6694,0.5 260 | 17793,0.5 261 | 32857,0.5 262 | 26325,0.5 263 | 20907,0.5 264 | 12617,0.5 265 | 24295,0.5 266 | 32409,0.5 267 | 16713,0.5 268 | 4863,0.5 269 | 13274,0.5 270 | 12462,0.5 271 | 8524,0.5 272 | 21728,0.5 273 | 20577,0.5 274 | 3407,0.5 275 | 27184,0.5 276 | 28845,0.5 277 | 2851,0.5 278 | 485,0.5 279 | 7207,0.5 280 | 9005,0.5 281 | 4532,0.5 282 | 23235,0.5 283 | 5403,0.5 284 | 8232,0.5 285 | 40,0.5 286 | 8991,0.5 287 | 28620,0.5 288 | 16355,0.5 289 | 18340,0.5 290 | 5138,0.5 291 | 12391,0.5 292 | 15550,0.5 293 | 27155,0.5 294 | 19883,0.5 295 | 25140,0.5 296 | 27463,0.5 297 | 23894,0.5 298 | 18285,0.5 299 | 25415,0.5 300 | 9894,0.5 301 | 15242,0.5 302 | 8485,0.5 303 | 11982,0.5 304 | 28370,0.5 305 | 17047,0.5 306 | 24941,0.5 307 | 28936,0.5 308 | 9562,0.5 309 | 30061,0.5 310 | 2718,0.5 311 | 24681,0.5 312 | 16210,0.5 313 | 1517,0.5 314 | 29475,0.5 315 | 32233,0.5 316 | 26601,0.5 317 | 22457,0.5 318 | 30759,0.5 319 | 27417,0.5 320 | 18983,0.5 321 | 32085,0.5 322 | 13197,0.5 323 | 14026,0.5 324 | 19719,0.5 325 | 30046,0.5 326 | 10446,0.5 327 | 5907,0.5 328 | 1392,0.5 329 | 10348,0.5 330 | 7957,0.5 331 | 19058,0.5 332 | 19243,0.5 333 | 7770,0.5 334 | 15910,0.5 335 | 30486,0.5 336 | 20333,0.5 337 | 6816,0.5 338 | 26209,0.5 339 | 10803,0.5 340 | 26411,0.5 341 | 31555,0.5 342 | 15564,0.5 343 | 28764,0.5 344 | 14172,0.5 345 | 3068,0.5 346 | 27164,0.5 347 | 20887,0.5 348 | 27102,0.5 349 | 14534,0.5 350 | 9021,0.5 351 | 6527,0.5 352 | 7615,0.5 353 | 11392,0.5 354 | 33148,0.5 355 | 20910,0.5 356 | 20269,0.5 357 | 23670,0.5 358 | 19946,0.5 359 | 29652,0.5 360 | 23770,0.5 361 | 24340,0.5 362 | 18737,0.5 363 | 24739,0.5 364 | 31072,0.5 365 | 32629,0.5 366 | 4184,0.5 367 | 19028,0.5 368 | 12295,0.5 369 | 17898,0.5 370 | 25160,0.5 371 | 13000,0.5 372 | 8849,0.5 373 | 4773,0.5 374 | 23867,0.5 375 | 25341,0.5 376 | 1456,0.5 377 | 22152,0.5 378 | 6560,0.5 379 | 22829,0.5 380 | 4745,0.5 381 | 22814,0.5 382 | 23233,0.5 383 | 26370,0.5 384 | 12695,0.5 385 | 11888,0.5 386 | 319,0.5 387 | 2510,0.5 388 | 5298,0.5 389 | 18400,0.5 390 | 30849,0.5 391 | 31123,0.5 392 | 15829,0.5 393 | 15578,0.5 394 | 4037,0.5 395 | 29658,0.5 396 | 10171,0.5 397 | 1937,0.5 398 | 7376,0.5 399 | 25243,0.5 400 | 9234,0.5 401 | 8471,0.5 402 | 5367,0.5 403 | 5576,0.5 404 | 5488,0.5 405 | 18306,0.5 406 | 2063,0.5 407 | 14205,0.5 408 | 16490,0.5 409 | 10560,0.5 410 | 23064,0.5 411 | 32545,0.5 412 | 29833,0.5 413 | 14200,0.5 414 | 29830,0.5 415 | 21423,0.5 416 | 13869,0.5 417 | 28259,0.5 418 | 9618,0.5 419 | 18209,0.5 420 | 27437,0.5 421 | 17129,0.5 422 | 8349,0.5 423 | 6179,0.5 424 | 28842,0.5 425 | 26563,0.5 426 | 19256,0.5 427 | 25579,0.5 428 | 27521,0.5 429 | 31378,0.5 430 | 14870,0.5 431 | 11929,0.5 432 | 14585,0.5 433 | 32487,0.5 434 | 15593,0.5 435 | 13170,0.5 436 | 24544,0.5 437 | 11613,0.5 438 | 30221,0.5 439 | 28251,0.5 440 | 4062,0.5 441 | 29018,0.5 442 | 26433,0.5 443 | 5489,0.5 444 | 19459,0.5 445 | 6017,0.5 446 | 24261,0.5 447 | 16705,0.5 448 | 16540,0.5 449 | 7508,0.5 450 | 32650,0.5 451 | 21381,0.5 452 | 9487,0.5 453 | 9040,0.5 454 | 12854,0.5 455 | 32495,0.5 456 | 1622,0.5 457 | 15660,0.5 458 | 4052,0.5 459 | 23279,0.5 460 | 20286,0.5 461 | 13832,0.5 462 | 8066,0.5 463 | 31585,0.5 464 | 1249,0.5 465 | 10843,0.5 466 | 9706,0.5 467 | 14601,0.5 468 | 5823,0.5 469 | 1148,0.5 470 | 31284,0.5 471 | 21383,0.5 472 | 32156,0.5 473 | 14110,0.5 474 | 20035,0.5 475 | 20872,0.5 476 | 14568,0.5 477 | 12115,0.5 478 | 26440,0.5 479 | 28319,0.5 480 | 11654,0.5 481 | 22964,0.5 482 | 6834,0.5 483 | 15305,0.5 484 | 14669,0.5 485 | 15978,0.5 486 | 32027,0.5 487 | 4806,0.5 488 | 23700,0.5 489 | 5956,0.5 490 | 2441,0.5 491 | 20068,0.5 492 | 18369,0.5 493 | 28121,0.5 494 | 15061,0.5 495 | 7443,0.5 496 | 14456,0.5 497 | 1864,0.5 498 | 23766,0.5 499 | 13051,0.5 500 | 25644,0.5 501 | 16941,0.5 502 | 30388,0.5 503 | 5861,0.5 504 | 9840,0.5 505 | 16203,0.5 506 | 23986,0.5 507 | 6889,0.5 508 | 3658,0.5 509 | 4004,0.5 510 | 14620,0.5 511 | 18979,0.5 512 | 25101,0.5 513 | 10873,0.5 514 | 24570,0.5 515 | 25051,0.5 516 | 22366,0.5 517 | 11762,0.5 518 | 9993,0.5 519 | 31464,0.5 520 | 5040,0.5 521 | 976,0.5 522 | 30784,0.5 523 | 31557,0.5 524 | 22982,0.5 525 | 29300,0.5 526 | 5932,0.5 527 | 31852,0.5 528 | 20833,0.5 529 | 9501,0.5 530 | 9707,0.5 531 | 20756,0.5 532 | 11541,0.5 533 | 28084,0.5 534 | 9726,0.5 535 | 31483,0.5 536 | 17440,0.5 537 | 30836,0.5 538 | 139,0.5 539 | 2606,0.5 540 | 14158,0.5 541 | 13100,0.5 542 | 30502,0.5 543 | 24245,0.5 544 | 28562,0.5 545 | 12735,0.5 546 | 4114,0.5 547 | 30367,0.5 548 | 5412,0.5 549 | 27834,0.5 550 | 4709,0.5 551 | 23880,0.5 552 | 18607,0.5 553 | 15527,0.5 554 | 13748,0.5 555 | 24331,0.5 556 | 10636,0.5 557 | 12488,0.5 558 | 16660,0.5 559 | 2892,0.5 560 | 6332,0.5 561 | 6504,0.5 562 | 19043,0.5 563 | 22715,0.5 564 | 27606,0.5 565 | 33052,0.5 566 | 6793,0.5 567 | 16595,0.5 568 | 18261,0.5 569 | 27307,0.5 570 | 25699,0.5 571 | 11707,0.5 572 | 21613,0.5 573 | 32057,0.5 574 | 115,0.5 575 | 6823,0.5 576 | 14353,0.5 577 | 26805,0.5 578 | 15635,0.5 579 | 26417,0.5 580 | 3848,0.5 581 | 17211,0.5 582 | 13103,0.5 583 | 5243,0.5 584 | 2107,0.5 585 | 30974,0.5 586 | 2998,0.5 587 | 22975,0.5 588 | 27239,0.5 589 | 18463,0.5 590 | 21490,0.5 591 | 30657,0.5 592 | 32075,0.5 593 | 31141,0.5 594 | 2340,0.5 595 | 21188,0.5 596 | 24156,0.5 597 | 32584,0.5 598 | 6515,0.5 599 | 14292,0.5 600 | 16125,0.5 601 | 25802,0.5 602 | 19385,0.5 603 | 27304,0.5 604 | 3697,0.5 605 | 11800,0.5 606 | 180,0.5 607 | 7733,0.5 608 | 6935,0.5 609 | 4082,0.5 610 | 31959,0.5 611 | 25113,0.5 612 | 14329,0.5 613 | 15570,0.5 614 | 32516,0.5 615 | 2535,0.5 616 | 16014,0.5 617 | 24251,0.5 618 | 31019,0.5 619 | 21012,0.5 620 | 22140,0.5 621 | 21462,0.5 622 | 20786,0.5 623 | 32404,0.5 624 | 16084,0.5 625 | 20103,0.5 626 | 22525,0.5 627 | 13230,0.5 628 | 29502,0.5 629 | 11646,0.5 630 | 6058,0.5 631 | 30892,0.5 632 | 31017,0.5 633 | 23803,0.5 634 | 6831,0.5 635 | 20380,0.5 636 | 15629,0.5 637 | 17342,0.5 638 | 22359,0.5 639 | 27610,0.5 640 | 26769,0.5 641 | 3979,0.5 642 | 25171,0.5 643 | 23379,0.5 644 | 18138,0.5 645 | 31687,0.5 646 | 23739,0.5 647 | 8392,0.5 648 | 6427,0.5 649 | 27813,0.5 650 | 20687,0.5 651 | 22527,0.5 652 | 33343,0.5 653 | 818,0.5 654 | 31669,0.5 655 | 10952,0.5 656 | 16331,0.5 657 | 32029,0.5 658 | 21152,0.5 659 | 23488,0.5 660 | 11945,0.5 661 | 1670,0.5 662 | 16104,0.5 663 | 4158,0.5 664 | 29781,0.5 665 | 6720,0.5 666 | 14369,0.5 667 | 20235,0.5 668 | 3617,0.5 669 | 30756,0.5 670 | 22625,0.5 671 | 22057,0.5 672 | 20635,0.5 673 | 1588,0.5 674 | 234,0.5 675 | 18752,0.5 676 | 18128,0.5 677 | 18260,0.5 678 | 19332,0.5 679 | 9564,0.5 680 | 5685,0.5 681 | 18063,0.5 682 | 27124,0.5 683 | 3395,0.5 684 | 22310,0.5 685 | 15977,0.5 686 | 4917,0.5 687 | 19102,0.5 688 | 23275,0.5 689 | 13157,0.5 690 | 13269,0.5 691 | 29977,0.5 692 | 20571,0.5 693 | 23883,0.5 694 | 33033,0.5 695 | 10579,0.5 696 | 5258,0.5 697 | 853,0.5 698 | 27245,0.5 699 | 30670,0.5 700 | 22497,0.5 701 | 3218,0.5 702 | 464,0.5 703 | 15770,0.5 704 | 18264,0.5 705 | 32066,0.5 706 | 11386,0.5 707 | 17502,0.5 708 | 32273,0.5 709 | 27543,0.5 710 | 16317,0.5 711 | 2852,0.5 712 | 5056,0.5 713 | 17504,0.5 714 | 24585,0.5 715 | 11734,0.5 716 | 16675,0.5 717 | 23344,0.5 718 | 21786,0.5 719 | 31079,0.5 720 | 33251,0.5 721 | 7805,0.5 722 | 8911,0.5 723 | 7315,0.5 724 | 28132,0.5 725 | 8367,0.5 726 | 27909,0.5 727 | 32320,0.5 728 | 15441,0.5 729 | 25999,0.5 730 | 20169,0.5 731 | 11682,0.5 732 | 26581,0.5 733 | 14832,0.5 734 | 18023,0.5 735 | 18963,0.5 736 | 9105,0.5 737 | 18344,0.5 738 | 576,0.5 739 | 2656,0.5 740 | 16881,0.5 741 | 30245,0.5 742 | 9630,0.5 743 | 3580,0.5 744 | 14773,0.5 745 | 31238,0.5 746 | 1633,0.5 747 | 1995,0.5 748 | 30587,0.5 749 | 32369,0.5 750 | 3722,0.5 751 | 10721,0.5 752 | 407,0.5 753 | 31098,0.5 754 | 4053,0.5 755 | 13782,0.5 756 | 20767,0.5 757 | 20113,0.5 758 | 4674,0.5 759 | 2444,0.5 760 | 19966,0.5 761 | 26367,0.5 762 | 19508,0.5 763 | 13006,0.5 764 | 7563,0.5 765 | 25993,0.5 766 | 18013,0.5 767 | 27699,0.5 768 | 3003,0.5 769 | 6620,0.5 770 | 4364,0.5 771 | 2296,0.5 772 | 17958,0.5 773 | 9740,0.5 774 | 1304,0.5 775 | 28735,0.5 776 | 32212,0.5 777 | 14053,0.5 778 | 22641,0.5 779 | 17900,0.5 780 | 31333,0.5 781 | 501,0.5 782 | 18104,0.5 783 | 6092,0.5 784 | 17249,0.5 785 | 1227,0.5 786 | 23515,0.5 787 | 16309,0.5 788 | 5368,0.5 789 | 27693,0.5 790 | 2582,0.5 791 | 12096,0.5 792 | 17526,0.5 793 | 23647,0.5 794 | 11440,0.5 795 | 7942,0.5 796 | 12064,0.5 797 | 2170,0.5 798 | 15663,0.5 799 | 18378,0.5 800 | 5943,0.5 801 | 8578,0.5 802 | 28645,0.5 803 | 5101,0.5 804 | 14529,0.5 805 | 26235,0.5 806 | 24260,0.5 807 | 17549,0.5 808 | 17610,0.5 809 | 10246,0.5 810 | 8990,0.5 811 | 20459,0.5 812 | 22775,0.5 813 | 11212,0.5 814 | 11963,0.5 815 | 14516,0.5 816 | 6464,0.5 817 | 31981,0.5 818 | 19350,0.5 819 | 675,0.5 820 | 3374,0.5 821 | 24495,0.5 822 | 8484,0.5 823 | 12459,0.5 824 | 29414,0.5 825 | 10548,0.5 826 | 29383,0.5 827 | 13373,0.5 828 | 21283,0.5 829 | 2280,0.5 830 | 5624,0.5 831 | 6778,0.5 832 | 2926,0.5 833 | 20431,0.5 834 | 29537,0.5 835 | 4450,0.5 836 | 25833,0.5 837 | 33112,0.5 838 | 547,0.5 839 | 9270,0.5 840 | 15566,0.5 841 | 30826,0.5 842 | 250,0.5 843 | 25714,0.5 844 | 28267,0.5 845 | 4504,0.5 846 | 12581,0.5 847 | 15483,0.5 848 | 2894,0.5 849 | 15726,0.5 850 | 17117,0.5 851 | 14182,0.5 852 | 3699,0.5 853 | 29624,0.5 854 | 16168,0.5 855 | 9800,0.5 856 | 9544,0.5 857 | 1433,0.5 858 | 27458,0.5 859 | 4804,0.5 860 | 24376,0.5 861 | 31613,0.5 862 | 26895,0.5 863 | 17085,0.5 864 | 22698,0.5 865 | 146,0.5 866 | 24022,0.5 867 | 14658,0.5 868 | 21548,0.5 869 | 9827,0.5 870 | 18544,0.5 871 | 28874,0.5 872 | 6361,0.5 873 | 13089,0.5 874 | 23426,0.5 875 | 22520,0.5 876 | 9649,0.5 877 | 23255,0.5 878 | 24081,0.5 879 | 23116,0.5 880 | 27338,0.5 881 | 14873,0.5 882 | 11886,0.5 883 | 9207,0.5 884 | 3291,0.5 885 | 5002,0.5 886 | 6768,0.5 887 | 6281,0.5 888 | 11155,0.5 889 | 14342,0.5 890 | 10394,0.5 891 | 14014,0.5 892 | 28671,0.5 893 | 5109,0.5 894 | 31775,0.5 895 | 17944,0.5 896 | 7499,0.5 897 | 13124,0.5 898 | 22808,0.5 899 | 29695,0.5 900 | 6167,0.5 901 | 137,0.5 902 | 19494,0.5 903 | 33277,0.5 904 | 3760,0.5 905 | 6837,0.5 906 | 27220,0.5 907 | 26985,0.5 908 | 23667,0.5 909 | 7793,0.5 910 | 11502,0.5 911 | 5882,0.5 912 | 24978,0.5 913 | 25866,0.5 914 | 30020,0.5 915 | 5380,0.5 916 | 20045,0.5 917 | 26651,0.5 918 | 14077,0.5 919 | 32000,0.5 920 | 26694,0.5 921 | 167,0.5 922 | 28381,0.5 923 | 24612,0.5 924 | 17481,0.5 925 | 28007,0.5 926 | 26178,0.5 927 | 13467,0.5 928 | 5720,0.5 929 | 18565,0.5 930 | 17018,0.5 931 | 13047,0.5 932 | 20475,0.5 933 | 5150,0.5 934 | 31451,0.5 935 | 14621,0.5 936 | 29123,0.5 937 | 13949,0.5 938 | 2269,0.5 939 | 12814,0.5 940 | 5255,0.5 941 | 3880,0.5 942 | 25297,0.5 943 | 27008,0.5 944 | 1886,0.5 945 | 31129,0.5 946 | 1123,0.5 947 | 9149,0.5 948 | 21962,0.5 949 | 462,0.5 950 | 2677,0.5 951 | 18648,0.5 952 | 25612,0.5 953 | 2784,0.5 954 | 33064,0.5 955 | 3543,0.5 956 | 16419,0.5 957 | 31606,0.5 958 | 5800,0.5 959 | 9032,0.5 960 | 32908,0.5 961 | 31186,0.5 962 | 18411,0.5 963 | 7636,0.5 964 | 25586,0.5 965 | 2583,0.5 966 | 560,0.5 967 | 5514,0.5 968 | 3624,0.5 969 | 1274,0.5 970 | 4957,0.5 971 | 7424,0.5 972 | 12055,0.5 973 | 9163,0.5 974 | 29171,0.5 975 | 16193,0.5 976 | 25623,0.5 977 | 2575,0.5 978 | 21353,0.5 979 | 9106,0.5 980 | 30470,0.5 981 | 20437,0.5 982 | 18316,0.5 983 | 11956,0.5 984 | 8713,0.5 985 | 12951,0.5 986 | 23795,0.5 987 | 25933,0.5 988 | 14271,0.5 989 | 25129,0.5 990 | 344,0.5 991 | 31672,0.5 992 | 6400,0.5 993 | 30719,0.5 994 | 26660,0.5 995 | 14428,0.5 996 | 6225,0.5 997 | 7773,0.5 998 | 7720,0.5 999 | 2018,0.5 1000 | 5485,0.5 1001 | 23288,0.5 1002 | 33010,0.5 1003 | 4819,0.5 1004 | 3127,0.5 1005 | 32360,0.5 1006 | 23133,0.5 1007 | 28972,0.5 1008 | 7439,0.5 1009 | 28333,0.5 1010 | 25726,0.5 1011 | 15009,0.5 1012 | 20205,0.5 1013 | 31245,0.5 1014 | 10810,0.5 1015 | 1172,0.5 1016 | 10809,0.5 1017 | 16944,0.5 1018 | 12829,0.5 1019 | 24246,0.5 1020 | 33108,0.5 1021 | 5484,0.5 1022 | 20725,0.5 1023 | 19501,0.5 1024 | 19468,0.5 1025 | 1097,0.5 1026 | 31984,0.5 1027 | 172,0.5 1028 | 4899,0.5 1029 | 19171,0.5 1030 | 21296,0.5 1031 | 14156,0.5 1032 | 31565,0.5 1033 | 21308,0.5 1034 | 691,0.5 1035 | 15225,0.5 1036 | 852,0.5 1037 | 3413,0.5 1038 | 33234,0.5 1039 | 13314,0.5 1040 | 30921,0.5 1041 | 17072,0.5 1042 | 31230,0.5 1043 | 6689,0.5 1044 | 19117,0.5 1045 | 32259,0.5 1046 | 15640,0.5 1047 | 16690,0.5 1048 | 10928,0.5 1049 | 10640,0.5 1050 | 14904,0.5 1051 | 5160,0.5 1052 | 8239,0.5 1053 | 11912,0.5 1054 | 23554,0.5 1055 | 17221,0.5 1056 | 25072,0.5 1057 | 19240,0.5 1058 | 12151,0.5 1059 | 26963,0.5 1060 | 2889,0.5 1061 | 19260,0.5 1062 | 7626,0.5 1063 | 31896,0.5 1064 | 17673,0.5 1065 | 12645,0.5 1066 | 13726,0.5 1067 | 14240,0.5 1068 | 5113,0.5 1069 | 32646,0.5 1070 | 30645,0.5 1071 | 14500,0.5 1072 | 16525,0.5 1073 | 20663,0.5 1074 | 8897,0.5 1075 | 10049,0.5 1076 | 13543,0.5 1077 | 1250,0.5 1078 | 16345,0.5 1079 | 3673,0.5 1080 | 17165,0.5 1081 | 8587,0.5 1082 | 7903,0.5 1083 | 28390,0.5 1084 | 18101,0.5 1085 | 3408,0.5 1086 | 3619,0.5 1087 | 9335,0.5 1088 | 31337,0.5 1089 | 18903,0.5 1090 | 1406,0.5 1091 | 31133,0.5 1092 | 30475,0.5 1093 | 11339,0.5 1094 | 10455,0.5 1095 | 22881,0.5 1096 | 29667,0.5 1097 | 16517,0.5 1098 | 15094,0.5 1099 | 2682,0.5 1100 | 7679,0.5 1101 | 2954,0.5 1102 | 12709,0.5 1103 | 24845,0.5 1104 | 6829,0.5 1105 | 12810,0.5 1106 | 20607,0.5 1107 | 10429,0.5 1108 | 18781,0.5 1109 | 21189,0.5 1110 | 19996,0.5 1111 | 24837,0.5 1112 | 4955,0.5 1113 | 32766,0.5 1114 | 6209,0.5 1115 | 24293,0.5 1116 | 28090,0.5 1117 | 11842,0.5 1118 | 13211,0.5 1119 | 26309,0.5 1120 | 4832,0.5 1121 | 23885,0.5 1122 | 27278,0.5 1123 | 32853,0.5 1124 | 3264,0.5 1125 | 9997,0.5 1126 | 21496,0.5 1127 | 20570,0.5 1128 | 11907,0.5 1129 | 28629,0.5 1130 | 31388,0.5 1131 | 14538,0.5 1132 | 28,0.5 1133 | 32099,0.5 1134 | 6356,0.5 1135 | 16058,0.5 1136 | 10198,0.5 1137 | 24993,0.5 1138 | 28864,0.5 1139 | 1206,0.5 1140 | 14412,0.5 1141 | 19987,0.5 1142 | 15586,0.5 1143 | 17424,0.5 1144 | 19783,0.5 1145 | 15763,0.5 1146 | 6433,0.5 1147 | 7881,0.5 1148 | 9237,0.5 1149 | 26656,0.5 1150 | 14019,0.5 1151 | 27036,0.5 1152 | 8304,0.5 1153 | 16458,0.5 1154 | 16138,0.5 1155 | 8701,0.5 1156 | 14281,0.5 1157 | 1968,0.5 1158 | 742,0.5 1159 | 17953,0.5 1160 | 660,0.5 1161 | 10829,0.5 1162 | 14159,0.5 1163 | 13603,0.5 1164 | 18232,0.5 1165 | 14574,0.5 1166 | 24725,0.5 1167 | 10737,0.5 1168 | 15141,0.5 1169 | 25308,0.5 1170 | 23084,0.5 1171 | 25465,0.5 1172 | 12340,0.5 1173 | 15589,0.5 1174 | 129,0.5 1175 | 19641,0.5 1176 | 8083,0.5 1177 | 4166,0.5 1178 | 14586,0.5 1179 | 21822,0.5 1180 | 2415,0.5 1181 | 1382,0.5 1182 | 30373,0.5 1183 | 1135,0.5 1184 | 29230,0.5 1185 | 16972,0.5 1186 | 25730,0.5 1187 | 17021,0.5 1188 | 19032,0.5 1189 | 6154,0.5 1190 | 2744,0.5 1191 | 621,0.5 1192 | 14035,0.5 1193 | 13621,0.5 1194 | 19202,0.5 1195 | 29010,0.5 1196 | 3606,0.5 1197 | 22214,0.5 1198 | 16245,0.5 1199 | 30639,0.5 1200 | 28365,0.5 1201 | 30546,0.5 1202 | 7792,0.5 1203 | 12846,0.5 1204 | 25038,0.5 1205 | 17919,0.5 1206 | 6465,0.5 1207 | 13836,0.5 1208 | 30399,0.5 1209 | 27949,0.5 1210 | 27512,0.5 1211 | 22507,0.5 1212 | 656,0.5 1213 | 23663,0.5 1214 | 30907,0.5 1215 | 30023,0.5 1216 | 22045,0.5 1217 | 2209,0.5 1218 | 4838,0.5 1219 | 28498,0.5 1220 | 1179,0.5 1221 | 10682,0.5 1222 | 20707,0.5 1223 | 31228,0.5 1224 | 11642,0.5 1225 | 14477,0.5 1226 | 25737,0.5 1227 | 21032,0.5 1228 | 30770,0.5 1229 | 28733,0.5 1230 | 26032,0.5 1231 | 2421,0.5 1232 | 6027,0.5 1233 | 7266,0.5 1234 | 20956,0.5 1235 | 26068,0.5 1236 | 20179,0.5 1237 | 32956,0.5 1238 | 12570,0.5 1239 | 7689,0.5 1240 | 19653,0.5 1241 | 8447,0.5 1242 | 18513,0.5 1243 | 4066,0.5 1244 | 613,0.5 1245 | 12437,0.5 1246 | 20917,0.5 1247 | 12505,0.5 1248 | 22510,0.5 1249 | 6642,0.5 1250 | 8562,0.5 1251 | 13030,0.5 1252 | 33291,0.5 1253 | 10469,0.5 1254 | 30777,0.5 1255 | 31756,0.5 1256 | 3879,0.5 1257 | 16255,0.5 1258 | 5050,0.5 1259 | 4273,0.5 1260 | 14867,0.5 1261 | 16180,0.5 1262 | 8491,0.5 1263 | 23514,0.5 1264 | 14398,0.5 1265 | 11444,0.5 1266 | 22303,0.5 1267 | 7391,0.5 1268 | 9195,0.5 1269 | 7519,0.5 1270 | 15307,0.5 1271 | 24683,0.5 1272 | 27067,0.5 1273 | 11327,0.5 1274 | 2529,0.5 1275 | 31349,0.5 1276 | 30739,0.5 1277 | 32141,0.5 1278 | 7759,0.5 1279 | 16286,0.5 1280 | 5381,0.5 1281 | 16782,0.5 1282 | 8122,0.5 1283 | 4370,0.5 1284 | 13883,0.5 1285 | 21673,0.5 1286 | 24268,0.5 1287 | 17200,0.5 1288 | 31533,0.5 1289 | 23172,0.5 1290 | 1647,0.5 1291 | 1276,0.5 1292 | 19942,0.5 1293 | 26888,0.5 1294 | 11667,0.5 1295 | 3890,0.5 1296 | 17267,0.5 1297 | 4934,0.5 1298 | 2752,0.5 1299 | 6413,0.5 1300 | 5817,0.5 1301 | 27952,0.5 1302 | 6402,0.5 1303 | 2358,0.5 1304 | 7645,0.5 1305 | 15411,0.5 1306 | 32727,0.5 1307 | 32693,0.5 1308 | 471,0.5 1309 | 16922,0.5 1310 | 31991,0.5 1311 | 16212,0.5 1312 | 22477,0.5 1313 | 11514,0.5 1314 | 28290,0.5 1315 | 11473,0.5 1316 | 28584,0.5 1317 | 9209,0.5 1318 | 28252,0.5 1319 | 30158,0.5 1320 | 18492,0.5 1321 | 18940,0.5 1322 | 30512,0.5 1323 | 19654,0.5 1324 | 16577,0.5 1325 | 17836,0.5 1326 | 29074,0.5 1327 | 25155,0.5 1328 | 31796,0.5 1329 | 30965,0.5 1330 | 7212,0.5 1331 | 20419,0.5 1332 | 27143,0.5 1333 | 33134,0.5 1334 | 21657,0.5 1335 | 14255,0.5 1336 | 11728,0.5 1337 | 915,0.5 1338 | 7987,0.5 1339 | 25241,0.5 1340 | 18483,0.5 1341 | 7032,0.5 1342 | 31668,0.5 1343 | 22870,0.5 1344 | 13142,0.5 1345 | 11481,0.5 1346 | 1679,0.5 1347 | 15849,0.5 1348 | 22392,0.5 1349 | 29223,0.5 1350 | 5296,0.5 1351 | 25329,0.5 1352 | 15164,0.5 1353 | 5780,0.5 1354 | 14767,0.5 1355 | 7926,0.5 1356 | 32606,0.5 1357 | 30295,0.5 1358 | 2436,0.5 1359 | 12407,0.5 1360 | 5509,0.5 1361 | 33300,0.5 1362 | 12374,0.5 1363 | 23562,0.5 1364 | 27420,0.5 1365 | 15974,0.5 1366 | 13204,0.5 1367 | 12453,0.5 1368 | 21071,0.5 1369 | 795,0.5 1370 | 80,0.5 1371 | 8509,0.5 1372 | 27199,0.5 1373 | 4393,0.5 1374 | 26993,0.5 1375 | 9753,0.5 1376 | 17074,0.5 1377 | 9291,0.5 1378 | 21210,0.5 1379 | 6548,0.5 1380 | 5601,0.5 1381 | 29159,0.5 1382 | 20909,0.5 1383 | 13140,0.5 1384 | 8903,0.5 1385 | 20079,0.5 1386 | 24628,0.5 1387 | 5482,0.5 1388 | 16050,0.5 1389 | 18581,0.5 1390 | 14438,0.5 1391 | 8031,0.5 1392 | 32710,0.5 1393 | 5857,0.5 1394 | 28799,0.5 1395 | 19726,0.5 1396 | 6191,0.5 1397 | 32521,0.5 1398 | 29176,0.5 1399 | 28278,0.5 1400 | 2625,0.5 1401 | 15587,0.5 1402 | 14741,0.5 1403 | 19210,0.5 1404 | 21015,0.5 1405 | 2010,0.5 1406 | 8942,0.5 1407 | 9586,0.5 1408 | 6444,0.5 1409 | 1604,0.5 1410 | 24158,0.5 1411 | 24017,0.5 1412 | 24362,0.5 1413 | 29969,0.5 1414 | 16831,0.5 1415 | 28518,0.5 1416 | 21039,0.5 1417 | 1776,0.5 1418 | 1678,0.5 1419 | 11188,0.5 1420 | 5346,0.5 1421 | 25867,0.5 1422 | 8335,0.5 1423 | 29417,0.5 1424 | 28383,0.5 1425 | 31485,0.5 1426 | 11330,0.5 1427 | 13259,0.5 1428 | 7539,0.5 1429 | 18271,0.5 1430 | 19556,0.5 1431 | 31232,0.5 1432 | 1175,0.5 1433 | 8107,0.5 1434 | 2768,0.5 1435 | 26448,0.5 1436 | 22700,0.5 1437 | 10287,0.5 1438 | 21246,0.5 1439 | 9098,0.5 1440 | 17952,0.5 1441 | 3889,0.5 1442 | 268,0.5 1443 | 27376,0.5 1444 | 22042,0.5 1445 | 32395,0.5 1446 | 16955,0.5 1447 | 15027,0.5 1448 | 27771,0.5 1449 | 25918,0.5 1450 | 28694,0.5 1451 | 10523,0.5 1452 | 12163,0.5 1453 | 10279,0.5 1454 | 20918,0.5 1455 | 22940,0.5 1456 | 11283,0.5 1457 | 15682,0.5 1458 | 29890,0.5 1459 | 24998,0.5 1460 | 15853,0.5 1461 | 14581,0.5 1462 | 27390,0.5 1463 | 21976,0.5 1464 | 28808,0.5 1465 | 14285,0.5 1466 | 7784,0.5 1467 | 15973,0.5 1468 | 24155,0.5 1469 | 24815,0.5 1470 | 21023,0.5 1471 | 27787,0.5 1472 | 24378,0.5 1473 | 7346,0.5 1474 | 25958,0.5 1475 | 32635,0.5 1476 | 1985,0.5 1477 | 288,0.5 1478 | 27281,0.5 1479 | 7953,0.5 1480 | 366,0.5 1481 | 27108,0.5 1482 | 9514,0.5 1483 | 17386,0.5 1484 | 4889,0.5 1485 | 22974,0.5 1486 | 28176,0.5 1487 | 17224,0.5 1488 | 32636,0.5 1489 | 21511,0.5 1490 | 25408,0.5 1491 | 10308,0.5 1492 | 6509,0.5 1493 | 12676,0.5 1494 | 22320,0.5 1495 | 19403,0.5 1496 | 25679,0.5 1497 | 25097,0.5 1498 | 30538,0.5 1499 | 29321,0.5 1500 | 5083,0.5 1501 | 17194,0.5 1502 | 25371,0.5 1503 | 25629,0.5 1504 | 2790,0.5 1505 | 31615,0.5 1506 | 9134,0.5 1507 | 23968,0.5 1508 | 24908,0.5 1509 | 22712,0.5 1510 | 11063,0.5 1511 | 16129,0.5 1512 | 25292,0.5 1513 | 11796,0.5 1514 | 31234,0.5 1515 | 4581,0.5 1516 | 17703,0.5 1517 | 30036,0.5 1518 | 9837,0.5 1519 | 2715,0.5 1520 | 22652,0.5 1521 | 15158,0.5 1522 | 830,0.5 1523 | 24660,0.5 1524 | 2915,0.5 1525 | 18322,0.5 1526 | 23189,0.5 1527 | 25544,0.5 1528 | 15534,0.5 1529 | 12312,0.5 1530 | 7789,0.5 1531 | 6335,0.5 1532 | 17675,0.5 1533 | 7156,0.5 1534 | 14816,0.5 1535 | 31402,0.5 1536 | 12759,0.5 1537 | 18706,0.5 1538 | 5266,0.5 1539 | 27308,0.5 1540 | 6721,0.5 1541 | 667,0.5 1542 | 3027,0.5 1543 | 8735,0.5 1544 | 24238,0.5 1545 | 28911,0.5 1546 | 18575,0.5 1547 | 15098,0.5 1548 | 33308,0.5 1549 | 185,0.5 1550 | 25603,0.5 1551 | 27386,0.5 1552 | 28630,0.5 1553 | 32243,0.5 1554 | 3635,0.5 1555 | 30957,0.5 1556 | 2326,0.5 1557 | 17950,0.5 1558 | 32910,0.5 1559 | 32353,0.5 1560 | 13462,0.5 1561 | 28937,0.5 1562 | 29276,0.5 1563 | 16082,0.5 1564 | 515,0.5 1565 | 31826,0.5 1566 | 14515,0.5 1567 | 26722,0.5 1568 | 2937,0.5 1569 | 30103,0.5 1570 | 25100,0.5 1571 | 13397,0.5 1572 | 8413,0.5 1573 | 11413,0.5 1574 | 9556,0.5 1575 | 28061,0.5 1576 | 32374,0.5 1577 | 16251,0.5 1578 | 23674,0.5 1579 | 16689,0.5 1580 | 8042,0.5 1581 | 9055,0.5 1582 | 12674,0.5 1583 | 16328,0.5 1584 | 22099,0.5 1585 | 6314,0.5 1586 | 4579,0.5 1587 | 11640,0.5 1588 | 5126,0.5 1589 | 11401,0.5 1590 | 5841,0.5 1591 | 1838,0.5 1592 | 6398,0.5 1593 | 18267,0.5 1594 | 22591,0.5 1595 | 12996,0.5 1596 | 8514,0.5 1597 | 3862,0.5 1598 | 29762,0.5 1599 | 32795,0.5 1600 | 9918,0.5 1601 | 10162,0.5 1602 | 18847,0.5 1603 | 26138,0.5 1604 | 30294,0.5 1605 | 31629,0.5 1606 | 32019,0.5 1607 | 29341,0.5 1608 | 31465,0.5 1609 | 19158,0.5 1610 | 26354,0.5 1611 | 2936,0.5 1612 | 24820,0.5 1613 | 29326,0.5 1614 | 32022,0.5 1615 | 10478,0.5 1616 | 24800,0.5 1617 | 29243,0.5 1618 | 22835,0.5 1619 | 6615,0.5 1620 | 32152,0.5 1621 | 7281,0.5 1622 | 7314,0.5 1623 | 5479,0.5 1624 | 28427,0.5 1625 | 18166,0.5 1626 | 18384,0.5 1627 | 23628,0.5 1628 | 18665,0.5 1629 | 20691,0.5 1630 | 10260,0.5 1631 | 4586,0.5 1632 | 610,0.5 1633 | 17389,0.5 1634 | 12558,0.5 1635 | 16395,0.5 1636 | 11770,0.5 1637 | 27991,0.5 1638 | 27425,0.5 1639 | 25585,0.5 1640 | 20758,0.5 1641 | 4791,0.5 1642 | 18816,0.5 1643 | 31466,0.5 1644 | 12500,0.5 1645 | 1928,0.5 1646 | 15385,0.5 1647 | 14264,0.5 1648 | 29541,0.5 1649 | 8426,0.5 1650 | 11148,0.5 1651 | 22661,0.5 1652 | 19550,0.5 1653 | 15384,0.5 1654 | 1443,0.5 1655 | 14491,0.5 1656 | 3275,0.5 1657 | 5265,0.5 1658 | 15865,0.5 1659 | 8539,0.5 1660 | 25995,0.5 1661 | 12288,0.5 1662 | 25411,0.5 1663 | 12189,0.5 1664 | 27933,0.5 1665 | 11273,0.5 1666 | 30859,0.5 1667 | 15521,0.5 1668 | 25054,0.5 1669 | 11506,0.5 1670 | 5934,0.5 1671 | 3689,0.5 1672 | 27337,0.5 1673 | 15911,0.5 1674 | 32996,0.5 1675 | 10663,0.5 1676 | 18356,0.5 1677 | 6865,0.5 1678 | 30679,0.5 1679 | 7347,0.5 1680 | 31951,0.5 1681 | 13009,0.5 1682 | 6452,0.5 1683 | 19294,0.5 1684 | 12946,0.5 1685 | 8375,0.5 1686 | 8043,0.5 1687 | 4063,0.5 1688 | 14821,0.5 1689 | 16107,0.5 1690 | 23465,0.5 1691 | 18698,0.5 1692 | 24582,0.5 1693 | 19239,0.5 1694 | 9664,0.5 1695 | 17300,0.5 1696 | 21257,0.5 1697 | 26856,0.5 1698 | 29283,0.5 1699 | 30846,0.5 1700 | 24670,0.5 1701 | 11391,0.5 1702 | 13823,0.5 1703 | 25931,0.5 1704 | 14638,0.5 1705 | 29031,0.5 1706 | 14883,0.5 1707 | 17924,0.5 1708 | 30951,0.5 1709 | 9051,0.5 1710 | 6963,0.5 1711 | 3559,0.5 1712 | 9700,0.5 1713 | 11849,0.5 1714 | 22737,0.5 1715 | 6969,0.5 1716 | 31870,0.5 1717 | 25263,0.5 1718 | 21049,0.5 1719 | 17307,0.5 1720 | 19471,0.5 1721 | 22338,0.5 1722 | 18519,0.5 1723 | 8752,0.5 1724 | 17254,0.5 1725 | 31441,0.5 1726 | 13175,0.5 1727 | 2122,0.5 1728 | 734,0.5 1729 | 10655,0.5 1730 | 20900,0.5 1731 | 25977,0.5 1732 | 8038,0.5 1733 | 9275,0.5 1734 | 26576,0.5 1735 | 8184,0.5 1736 | 25181,0.5 1737 | 27059,0.5 1738 | 17920,0.5 1739 | 14932,0.5 1740 | 2491,0.5 1741 | 22450,0.5 1742 | 12831,0.5 1743 | 24057,0.5 1744 | 27854,0.5 1745 | 9083,0.5 1746 | 26670,0.5 1747 | 5709,0.5 1748 | 31995,0.5 1749 | 11845,0.5 1750 | 14052,0.5 1751 | 22407,0.5 1752 | 33353,0.5 1753 | 32278,0.5 1754 | 14069,0.5 1755 | 828,0.5 1756 | 16574,0.5 1757 | 6742,0.5 1758 | 6583,0.5 1759 | 15159,0.5 1760 | 16614,0.5 1761 | 27456,0.5 1762 | 16462,0.5 1763 | 32105,0.5 1764 | 22464,0.5 1765 | 20165,0.5 1766 | 2610,0.5 1767 | 18668,0.5 1768 | 20361,0.5 1769 | 1055,0.5 1770 | 19794,0.5 1771 | 4810,0.5 1772 | 16560,0.5 1773 | 5236,0.5 1774 | 28886,0.5 1775 | 18338,0.5 1776 | 25697,0.5 1777 | 15150,0.5 1778 | 5005,0.5 1779 | 8358,0.5 1780 | 27297,0.5 1781 | 19413,0.5 1782 | 5111,0.5 1783 | 13477,0.5 1784 | 2120,0.5 1785 | 28293,0.5 1786 | 31481,0.5 1787 | 25635,0.5 1788 | 14041,0.5 1789 | 10311,0.5 1790 | 13925,0.5 1791 | 2183,0.5 1792 | 23188,0.5 1793 | 8982,0.5 1794 | 20064,0.5 1795 | 21604,0.5 1796 | 3991,0.5 1797 | 3307,0.5 1798 | 4343,0.5 1799 | 24642,0.5 1800 | 12008,0.5 1801 | 22200,0.5 1802 | 2789,0.5 1803 | 22697,0.5 1804 | 20321,0.5 1805 | 13470,0.5 1806 | 31236,0.5 1807 | 32607,0.5 1808 | 8216,0.5 1809 | 5320,0.5 1810 | 30466,0.5 1811 | 24026,0.5 1812 | 30013,0.5 1813 | 22342,0.5 1814 | 370,0.5 1815 | 30365,0.5 1816 | 30316,0.5 1817 | 28350,0.5 1818 | 11927,0.5 1819 | 31708,0.5 1820 | 25882,0.5 1821 | 16079,0.5 1822 | 21788,0.5 1823 | 2530,0.5 1824 | 20640,0.5 1825 | 7148,0.5 1826 | 20308,0.5 1827 | 2196,0.5 1828 | 17225,0.5 1829 | 28163,0.5 1830 | 16164,0.5 1831 | 11460,0.5 1832 | 2900,0.5 1833 | 1026,0.5 1834 | 8049,0.5 1835 | 12413,0.5 1836 | 17269,0.5 1837 | 3885,0.5 1838 | 5194,0.5 1839 | 11644,0.5 1840 | 28377,0.5 1841 | 25914,0.5 1842 | 24947,0.5 1843 | 32540,0.5 1844 | 1346,0.5 1845 | 13220,0.5 1846 | 19336,0.5 1847 | 7416,0.5 1848 | 26996,0.5 1849 | 26859,0.5 1850 | 13498,0.5 1851 | 17659,0.5 1852 | 25173,0.5 1853 | 12002,0.5 1854 | 22468,0.5 1855 | 25106,0.5 1856 | 11730,0.5 1857 | 21871,0.5 1858 | 19543,0.5 1859 | 4842,0.5 1860 | 12874,0.5 1861 | 19725,0.5 1862 | 27614,0.5 1863 | 322,0.5 1864 | 29603,0.5 1865 | 28292,0.5 1866 | 423,0.5 1867 | 22858,0.5 1868 | 16449,0.5 1869 | 26195,0.5 1870 | 29710,0.5 1871 | 11901,0.5 1872 | 8170,0.5 1873 | 31818,0.5 1874 | 10618,0.5 1875 | 10217,0.5 1876 | 13819,0.5 1877 | 13722,0.5 1878 | 18100,0.5 1879 | 5029,0.5 1880 | 31473,0.5 1881 | 26801,0.5 1882 | 18912,0.5 1883 | 27030,0.5 1884 | 3647,0.5 1885 | 4222,0.5 1886 | 25614,0.5 1887 | 19648,0.5 1888 | 22430,0.5 1889 | 15851,0.5 1890 | 301,0.5 1891 | 18825,0.5 1892 | 31758,0.5 1893 | 5898,0.5 1894 | 17932,0.5 1895 | 30260,0.5 1896 | 17669,0.5 1897 | 14806,0.5 1898 | 22480,0.5 1899 | 29259,0.5 1900 | 22746,0.5 1901 | 9852,0.5 1902 | 30,0.5 1903 | 17854,0.5 1904 | 9205,0.5 1905 | 17779,0.5 1906 | 20154,0.5 1907 | 16828,0.5 1908 | 7387,0.5 1909 | 31802,0.5 1910 | 17188,0.5 1911 | 7300,0.5 1912 | 12136,0.5 1913 | 21899,0.5 1914 | 10834,0.5 1915 | 20841,0.5 1916 | 5962,0.5 1917 | 7813,0.5 1918 | 10847,0.5 1919 | 30109,0.5 1920 | 3312,0.5 1921 | 12884,0.5 1922 | 20514,0.5 1923 | 8411,0.5 1924 | 16798,0.5 1925 | 27389,0.5 1926 | 32783,0.5 1927 | 10230,0.5 1928 | 5980,0.5 1929 | 3672,0.5 1930 | 29832,0.5 1931 | 18719,0.5 1932 | 23024,0.5 1933 | 29629,0.5 1934 | 8112,0.5 1935 | 13953,0.5 1936 | 17450,0.5 1937 | 9752,0.5 1938 | 10167,0.5 1939 | 181,0.5 1940 | 1476,0.5 1941 | 16816,0.5 1942 | 16023,0.5 1943 | 12059,0.5 1944 | 28220,0.5 1945 | 18822,0.5 1946 | 17720,0.5 1947 | 13419,0.5 1948 | 23734,0.5 1949 | 6610,0.5 1950 | 18569,0.5 1951 | 25136,0.5 1952 | 21469,0.5 1953 | 19752,0.5 1954 | 32453,0.5 1955 | 24625,0.5 1956 | 32745,0.5 1957 | 15144,0.5 1958 | 26541,0.5 1959 | 14132,0.5 1960 | 2580,0.5 1961 | 32229,0.5 1962 | 11638,0.5 1963 | 7132,0.5 1964 | 22168,0.5 1965 | 29886,0.5 1966 | 5130,0.5 1967 | 923,0.5 1968 | 28035,0.5 1969 | 17153,0.5 1970 | 30428,0.5 1971 | 14687,0.5 1972 | 26621,0.5 1973 | 19744,0.5 1974 | 32698,0.5 1975 | 15049,0.5 1976 | 32808,0.5 1977 | 7535,0.5 1978 | 20622,0.5 1979 | 22863,0.5 1980 | 21845,0.5 1981 | 16135,0.5 1982 | 15095,0.5 1983 | 29703,0.5 1984 | 14785,0.5 1985 | 20150,0.5 1986 | 19473,0.5 1987 | 26862,0.5 1988 | 3377,0.5 1989 | 21166,0.5 1990 | 24684,0.5 1991 | 32511,0.5 1992 | 10587,0.5 1993 | 23210,0.5 1994 | 8243,0.5 1995 | 2046,0.5 1996 | 875,0.5 1997 | 437,0.5 1998 | 9208,0.5 1999 | 18560,0.5 2000 | 31361,0.5 2001 | 3432,0.5 2002 | 17066,0.5 2003 | 17993,0.5 2004 | 4879,0.5 2005 | 32898,0.5 2006 | 28680,0.5 2007 | 10304,0.5 2008 | 26899,0.5 2009 | 23403,0.5 2010 | 21936,0.5 2011 | 26927,0.5 2012 | 25713,0.5 2013 | 23976,0.5 2014 | 29908,0.5 2015 | 17426,0.5 2016 | 9806,0.5 2017 | 25886,0.5 2018 | 2736,0.5 2019 | 26688,0.5 2020 | 19261,0.5 2021 | 16728,0.5 2022 | 8837,0.5 2023 | 9345,0.5 2024 | 25696,0.5 2025 | 33236,0.5 2026 | 7258,0.5 2027 | 4274,0.5 2028 | 18287,0.5 2029 | 25062,0.5 2030 | 11144,0.5 2031 | 11404,0.5 2032 | 13232,0.5 2033 | 21968,0.5 2034 | 12142,0.5 2035 | 30796,0.5 2036 | 23735,0.5 2037 | 26679,0.5 2038 | 21726,0.5 2039 | 5171,0.5 2040 | 3180,0.5 2041 | 26950,0.5 2042 | 24234,0.5 2043 | 32649,0.5 2044 | 4377,0.5 2045 | 545,0.5 2046 | 13114,0.5 2047 | 22786,0.5 2048 | 21335,0.5 2049 | 13292,0.5 2050 | 25862,0.5 2051 | 37,0.5 2052 | 25890,0.5 2053 | 22037,0.5 2054 | 29304,0.5 2055 | 19816,0.5 2056 | 7012,0.5 2057 | 23338,0.5 2058 | 30621,0.5 2059 | 11855,0.5 2060 | 14062,0.5 2061 | 952,0.5 2062 | 28695,0.5 2063 | 25255,0.5 2064 | 14684,0.5 2065 | 2599,0.5 2066 | 27764,0.5 2067 | 22708,0.5 2068 | 13605,0.5 2069 | 3445,0.5 2070 | 12029,0.5 2071 | 28494,0.5 2072 | 26151,0.5 2073 | 30903,0.5 2074 | 23078,0.5 2075 | 3520,0.5 2076 | 23948,0.5 2077 | 20536,0.5 2078 | 12472,0.5 2079 | 12756,0.5 2080 | 634,0.5 2081 | 11458,0.5 2082 | 20348,0.5 2083 | 21057,0.5 2084 | 26446,0.5 2085 | 24170,0.5 2086 | 16216,0.5 2087 | 28349,0.5 2088 | 17295,0.5 2089 | 33316,0.5 2090 | 5280,0.5 2091 | 11201,0.5 2092 | 26483,0.5 2093 | 10977,0.5 2094 | 33290,0.5 2095 | 27216,0.5 2096 | 7877,0.5 2097 | 5650,0.5 2098 | 6590,0.5 2099 | 13464,0.5 2100 | 25639,0.5 2101 | 12406,0.5 2102 | 32113,0.5 2103 | 3787,0.5 2104 | 23606,0.5 2105 | 7522,0.5 2106 | 15293,0.5 2107 | 7564,0.5 2108 | 19218,0.5 2109 | 19678,0.5 2110 | 19499,0.5 2111 | 13962,0.5 2112 | 22744,0.5 2113 | 21887,0.5 2114 | 28552,0.5 2115 | 10726,0.5 2116 | 6294,0.5 2117 | 13833,0.5 2118 | 31643,0.5 2119 | 21500,0.5 2120 | 33225,0.5 2121 | 8905,0.5 2122 | 9772,0.5 2123 | 27163,0.5 2124 | 24507,0.5 2125 | 21339,0.5 2126 | 1289,0.5 2127 | 195,0.5 2128 | 31762,0.5 2129 | 7873,0.5 2130 | 12215,0.5 2131 | -------------------------------------------------------------------------------- /images/artifacts-s3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmedbesbes/mlflow/e9bb339eb899c61598b5c0d2686997ff1ea68094/images/artifacts-s3.png -------------------------------------------------------------------------------- /images/mlflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmedbesbes/mlflow/e9bb339eb899c61598b5c0d2686997ff1ea68094/images/mlflow.png -------------------------------------------------------------------------------- /images/runs-remote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmedbesbes/mlflow/e9bb339eb899c61598b5c0d2686997ff1ea68094/images/runs-remote.png -------------------------------------------------------------------------------- /images/runs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmedbesbes/mlflow/e9bb339eb899c61598b5c0d2686997ff1ea68094/images/runs.png -------------------------------------------------------------------------------- /images/s3-console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmedbesbes/mlflow/e9bb339eb899c61598b5c0d2686997ff1ea68094/images/s3-console.png -------------------------------------------------------------------------------- /notebooks/1_EDA.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "human-marks", 6 | "metadata": {}, 7 | "source": [ 8 | "The data comes from Kaggle:\n", 9 | "- https://www.kaggle.com/arashnic/hr-analytics-job-change-of-data-scientists?select=sample_submission.csv" 10 | ] 11 | }, 12 | { 13 | "cell_type": "code", 14 | "execution_count": 1, 15 | "id": "subsequent-anthropology", 16 | "metadata": {}, 17 | "outputs": [], 18 | "source": [ 19 | "%matplotlib inline\n", 20 | "%config Completer.use_jedi=False" 21 | ] 22 | }, 23 | { 24 | "cell_type": "code", 25 | "execution_count": 2, 26 | "id": "annoying-sociology", 27 | "metadata": {}, 28 | "outputs": [], 29 | "source": [ 30 | "from urllib.parse import urlparse\n", 31 | "\n", 32 | "import pandas as pd\n", 33 | "from sklearn.preprocessing import LabelEncoder\n", 34 | "from sklearn.model_selection import train_test_split\n", 35 | "from sklearn.linear_model import LogisticRegression\n", 36 | "from sklearn.tree import DecisionTreeClassifier\n", 37 | "from sklearn.ensemble import RandomForestClassifier\n", 38 | "from sklearn.metrics import (accuracy_score, precision_score, recall_score, f1_score,\n", 39 | " roc_auc_score, classification_report)\n", 40 | "import mlflow\n", 41 | "import mlflow.sklearn" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 4, 47 | "id": "substantial-comedy", 48 | "metadata": {}, 49 | "outputs": [], 50 | "source": [ 51 | "mlflow.set_tracking_uri(\"file:///Users/ahmed.besbes/projects/mlflow/mlruns\")" 52 | ] 53 | }, 54 | { 55 | "cell_type": "code", 56 | "execution_count": 5, 57 | "id": "nervous-aquatic", 58 | "metadata": {}, 59 | "outputs": [], 60 | "source": [ 61 | "tracking_uri = mlflow.get_tracking_uri()" 62 | ] 63 | }, 64 | { 65 | "cell_type": "code", 66 | "execution_count": 6, 67 | "id": "comprehensive-future", 68 | "metadata": {}, 69 | "outputs": [ 70 | { 71 | "data": { 72 | "text/plain": [ 73 | "'file:///Users/ahmed.besbes/projects/mlflow/mlruns'" 74 | ] 75 | }, 76 | "execution_count": 6, 77 | "metadata": {}, 78 | "output_type": "execute_result" 79 | } 80 | ], 81 | "source": [ 82 | "tracking_uri" 83 | ] 84 | }, 85 | { 86 | "cell_type": "code", 87 | "execution_count": 7, 88 | "id": "strategic-parameter", 89 | "metadata": {}, 90 | "outputs": [], 91 | "source": [ 92 | "data = pd.read_csv(\"./../data/aug_train.csv\")\n", 93 | "targets = data[[\"target\"]]\n", 94 | "data.drop([\"enrollee_id\", \"target\"], inplace=True, axis=1)" 95 | ] 96 | }, 97 | { 98 | "cell_type": "code", 99 | "execution_count": 8, 100 | "id": "worse-headquarters", 101 | "metadata": {}, 102 | "outputs": [], 103 | "source": [ 104 | "categorical_features = []\n", 105 | "numerical_features = []\n", 106 | "\n", 107 | "for column in data.columns:\n", 108 | " dtype = str(data[column].dtype)\n", 109 | " if dtype in [\"float64\", \"int64\"]:\n", 110 | " numerical_features.append(column)\n", 111 | " else:\n", 112 | " categorical_features.append(column)" 113 | ] 114 | }, 115 | { 116 | "cell_type": "code", 117 | "execution_count": 9, 118 | "id": "computational-browser", 119 | "metadata": {}, 120 | "outputs": [], 121 | "source": [ 122 | "for categorical_feature in categorical_features:\n", 123 | " data[categorical_feature].fillna('missing', inplace=True)" 124 | ] 125 | }, 126 | { 127 | "cell_type": "code", 128 | "execution_count": 10, 129 | "id": "atmospheric-volume", 130 | "metadata": {}, 131 | "outputs": [], 132 | "source": [ 133 | "for categorical_feature in categorical_features:\n", 134 | " le = LabelEncoder()\n", 135 | " data[categorical_feature] = le.fit_transform(data[categorical_feature])" 136 | ] 137 | }, 138 | { 139 | "cell_type": "code", 140 | "execution_count": 11, 141 | "id": "liable-diameter", 142 | "metadata": {}, 143 | "outputs": [], 144 | "source": [ 145 | "x_train, x_test, y_train, y_test = train_test_split(data.values, \n", 146 | " targets.values.ravel(), \n", 147 | " test_size=0.3, \n", 148 | " random_state=2021,\n", 149 | " stratify=targets.values)" 150 | ] 151 | }, 152 | { 153 | "cell_type": "code", 154 | "execution_count": 12, 155 | "id": "painful-diagnosis", 156 | "metadata": {}, 157 | "outputs": [ 158 | { 159 | "name": "stdout", 160 | "output_type": "stream", 161 | "text": [ 162 | "(13410, 12) (5748, 12)\n" 163 | ] 164 | } 165 | ], 166 | "source": [ 167 | "print(x_train.shape, x_test.shape)" 168 | ] 169 | }, 170 | { 171 | "cell_type": "code", 172 | "execution_count": 13, 173 | "id": "collect-clark", 174 | "metadata": {}, 175 | "outputs": [ 176 | { 177 | "name": "stdout", 178 | "output_type": "stream", 179 | "text": [ 180 | "(13410,) (5748,)\n" 181 | ] 182 | } 183 | ], 184 | "source": [ 185 | "print(y_train.shape, y_test.shape)" 186 | ] 187 | }, 188 | { 189 | "cell_type": "code", 190 | "execution_count": 18, 191 | "id": "double-safety", 192 | "metadata": { 193 | "scrolled": false 194 | }, 195 | "outputs": [], 196 | "source": [ 197 | "with mlflow.start_run():\n", 198 | " class_weight = \"balanced\"\n", 199 | " max_iter = 1000\n", 200 | "\n", 201 | " logistic_regression = LogisticRegression(class_weight=class_weight, max_iter=max_iter)\n", 202 | " logistic_regression.fit(x_train, y_train)\n", 203 | "\n", 204 | " y_pred = logistic_regression.predict(x_test)\n", 205 | "\n", 206 | " accuracy = accuracy_score(y_test, y_pred)\n", 207 | " precision = precision_score(y_test, y_pred)\n", 208 | " recall = recall_score(y_test, y_pred)\n", 209 | " f1 = f1_score(y_test, y_pred)\n", 210 | " auc = roc_auc_score(y_test, y_pred)\n", 211 | " \n", 212 | " mlflow.log_param(\"class_weight\", class_weight)\n", 213 | " mlflow.log_param(\"max_iter\", max_iter)\n", 214 | " \n", 215 | " mlflow.log_metric(\"accuracy\", accuracy)\n", 216 | " mlflow.log_metric(\"precision\", precision)\n", 217 | " mlflow.log_metric(\"recall\", recall)\n", 218 | " mlflow.log_metric(\"f1\", f1)\n", 219 | " mlflow.log_metric(\"auc\", auc) \n", 220 | " \n", 221 | " mlflow.sklearn.log_model(logistic_regression, \"model\")" 222 | ] 223 | }, 224 | { 225 | "cell_type": "code", 226 | "execution_count": null, 227 | "id": "black-costa", 228 | "metadata": {}, 229 | "outputs": [], 230 | "source": [] 231 | } 232 | ], 233 | "metadata": { 234 | "kernelspec": { 235 | "display_name": "Python 3", 236 | "language": "python", 237 | "name": "python3" 238 | }, 239 | "language_info": { 240 | "codemirror_mode": { 241 | "name": "ipython", 242 | "version": 3 243 | }, 244 | "file_extension": ".py", 245 | "mimetype": "text/x-python", 246 | "name": "python", 247 | "nbconvert_exporter": "python", 248 | "pygments_lexer": "ipython3", 249 | "version": "3.8.6" 250 | } 251 | }, 252 | "nbformat": 4, 253 | "nbformat_minor": 5 254 | } 255 | -------------------------------------------------------------------------------- /src/MLproject: -------------------------------------------------------------------------------- 1 | name: hr_analytics 2 | 3 | conda_env: conda.yaml 4 | 5 | entry_points: 6 | main: 7 | parameters: 8 | n_estimators: int 9 | 10 | command: "python train.py {n_estimators} {balanced}" 11 | 12 | -------------------------------------------------------------------------------- /src/conda.yaml: -------------------------------------------------------------------------------- 1 | name: hr_analytics 2 | 3 | channels: 4 | - defaults 5 | 6 | dependencies: 7 | - numpy=1.20.1 8 | - pandas=1.2.2 9 | - scikit-learn=0.24.1 10 | - pip: 11 | - mlflow 12 | -------------------------------------------------------------------------------- /src/train.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | import pandas as pd 4 | import numpy as np 5 | 6 | from sklearn.preprocessing import LabelEncoder 7 | from sklearn.model_selection import train_test_split 8 | 9 | from sklearn.ensemble import RandomForestClassifier 10 | from sklearn.metrics import ( 11 | accuracy_score, 12 | precision_score, 13 | recall_score, 14 | f1_score, 15 | roc_auc_score, 16 | ) 17 | from tqdm import tqdm 18 | 19 | import mlflow 20 | import mlflow.sklearn 21 | 22 | # set registry URI i.e. where MLflow saves runs 23 | 24 | # mlflow.set_tracking_uri("file:///Users/ahmed.besbes/projects/mlflow/mlruns") 25 | 26 | 27 | mlflow.set_tracking_uri( 28 | "http://ec2-35-180-45-108.eu-west-3.compute.amazonaws.com:5000/" 29 | ) 30 | 31 | 32 | # print("artifact store : ", mlflow.get_artifact_uri()) 33 | 34 | # load data 35 | data = pd.read_csv("./../data/aug_train.csv") 36 | targets = data[["target"]] 37 | 38 | 39 | data.drop(["enrollee_id", "target"], inplace=True, axis=1) 40 | 41 | # process features 42 | ## fill in missing categorical variables and label encode them 43 | 44 | categorical_features = [] 45 | numerical_features = [] 46 | 47 | for column in data.columns: 48 | dtype = str(data[column].dtype) 49 | if dtype in ["float64", "int64"]: 50 | numerical_features.append(column) 51 | else: 52 | categorical_features.append(column) 53 | 54 | for categorical_feature in categorical_features: 55 | data[categorical_feature].fillna("missing", inplace=True) 56 | le = LabelEncoder() 57 | data[categorical_feature] = le.fit_transform(data[categorical_feature]) 58 | 59 | print("features processed") 60 | 61 | # split train / test 62 | 63 | x_train, x_test, y_train, y_test = train_test_split( 64 | data.values, 65 | targets.values.ravel(), 66 | test_size=0.3, 67 | random_state=2021, 68 | stratify=targets.values, 69 | ) 70 | alpha = sys.argv[0] if len(sys.argv) > 1 else 0.5 71 | 72 | 73 | # experiment_id = mlflow.create_experiment("training experiment") 74 | experiment_id = mlflow.set_experiment("training experiment") 75 | 76 | 77 | n_estimators_range = np.arange(100, 500, 25) 78 | max_depth_range = np.arange(1, 25, 2) 79 | max_features_range = ["sqrt", None, "log2"] 80 | 81 | 82 | for n_estimators in tqdm(n_estimators_range): 83 | for max_depth in tqdm(max_depth_range, leave=False): 84 | for max_features in tqdm(max_features_range, leave=False): 85 | 86 | with mlflow.start_run(experiment_id=experiment_id): 87 | 88 | model = RandomForestClassifier( 89 | n_estimators=n_estimators, 90 | max_depth=max_depth, 91 | max_features=max_features, 92 | n_jobs=3, 93 | ) 94 | 95 | model.fit(x_train, y_train) 96 | y_pred = model.predict(x_test) 97 | 98 | accuracy = accuracy_score(y_test, y_pred) 99 | precision = precision_score(y_test, y_pred) 100 | recall = recall_score(y_test, y_pred) 101 | f1 = f1_score(y_test, y_pred) 102 | auc = roc_auc_score(y_test, y_pred) 103 | 104 | mlflow.log_param("n_estimators", n_estimators) 105 | mlflow.log_param("max_depth", max_depth) 106 | mlflow.log_param("max_features", max_features) 107 | 108 | mlflow.log_metric("accuracy", accuracy) 109 | mlflow.log_metric("precision", precision) 110 | mlflow.log_metric("recall", recall) 111 | mlflow.log_metric("f1", f1) 112 | mlflow.log_metric("auc", auc) 113 | 114 | mlflow.sklearn.log_model(model, "model") 115 | --------------------------------------------------------------------------------