Spaces:
Sleeping
Sleeping
Upload 28 files
Browse files- Dockerfile +28 -0
- app.py +52 -0
- data/Test.csv +0 -0
- data/Train.csv +0 -0
- data/Weather.csv +62 -0
- data/history/history.csv +579 -0
- requirements.txt +12 -0
- utils/__init__.py +0 -0
- utils/config.py +101 -0
- utils/dashboard.py +568 -0
- utils/data.py +163 -0
- utils/history.py +56 -0
- utils/home.py +113 -0
- utils/predict.py +435 -0
- utils/redis.py +26 -0
- utils/url_to_coordinates.py +24 -0
- utils/utils.py +169 -0
- www/comfort.webp +0 -0
- www/favicon-yassir-forward.png +0 -0
- www/image-2-1.webp +0 -0
- www/iphone-frame.svg +47 -0
- www/logo-yassir-forward-dark.png +0 -0
- www/logo-yassir-forward-dark.svg +39 -0
- www/logo-yassir-forward-light.png +0 -0
- www/logo-yassir-forward-light.svg +39 -0
- www/ride-hailing-hero.webp +0 -0
- www/servicesBlock-3.webp +0 -0
- www/styles.css +35 -0
Dockerfile
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
FROM python:3.11.9-slim
|
2 |
+
|
3 |
+
# Copy requirements file
|
4 |
+
COPY requirements.txt .
|
5 |
+
|
6 |
+
# Update pip
|
7 |
+
RUN pip --timeout=3000 install --no-cache-dir --upgrade pip
|
8 |
+
|
9 |
+
# Install dependecies
|
10 |
+
RUN pip --timeout=3000 install --no-cache-dir -r requirements.txt
|
11 |
+
|
12 |
+
# Make project directory
|
13 |
+
RUN mkdir -p /client/
|
14 |
+
|
15 |
+
# Set working directory
|
16 |
+
WORKDIR /client
|
17 |
+
|
18 |
+
# Copy client frontend
|
19 |
+
COPY . .
|
20 |
+
|
21 |
+
# # Expose app port Huggingface
|
22 |
+
# EXPOSE 7860
|
23 |
+
|
24 |
+
# Expose app port
|
25 |
+
EXPOSE 3939
|
26 |
+
|
27 |
+
# Start application
|
28 |
+
CMD ["shiny", "run", "app.py", "--host", "0.0.0.0", "--port", "3939"]
|
app.py
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from functools import partial
|
2 |
+
|
3 |
+
from shiny.ui import page_navbar
|
4 |
+
from shiny.express import ui
|
5 |
+
|
6 |
+
from utils.utils import footer
|
7 |
+
from utils.config import BRANDCOLORS
|
8 |
+
from utils.home import home_page
|
9 |
+
from utils.dashboard import dashboard_page
|
10 |
+
from utils.predict import predict_page
|
11 |
+
from utils.history import history_page
|
12 |
+
|
13 |
+
|
14 |
+
|
15 |
+
|
16 |
+
|
17 |
+
ui.page_opts(
|
18 |
+
title=ui.img(src="logo-yassir-forward-light.svg",
|
19 |
+
alt="Yassir logo", height="50px"),
|
20 |
+
window_title="Yassir Home",
|
21 |
+
page_fn=partial(page_navbar, id="page"),
|
22 |
+
inverse=True,
|
23 |
+
bg=BRANDCOLORS["purple-dark"],
|
24 |
+
fillable=True,
|
25 |
+
lang="en",
|
26 |
+
footer=footer,
|
27 |
+
)
|
28 |
+
|
29 |
+
# Add Yassir favicon
|
30 |
+
ui.head_content(ui.tags.link(rel="icon", type="image/png",
|
31 |
+
sizes="32x32", href="favicon-yassir-forward.png"))
|
32 |
+
|
33 |
+
|
34 |
+
with ui.nav_panel("Home"):
|
35 |
+
home_page("home")
|
36 |
+
|
37 |
+
|
38 |
+
with ui.nav_panel("Dashboard"):
|
39 |
+
dashboard_page("dashboard")
|
40 |
+
|
41 |
+
|
42 |
+
with ui.nav_panel("Predict"):
|
43 |
+
predict_page("predict")
|
44 |
+
|
45 |
+
|
46 |
+
with ui.nav_panel("History"):
|
47 |
+
history_page("history")
|
48 |
+
|
49 |
+
|
50 |
+
with ui.nav_control():
|
51 |
+
# Mode Switcher
|
52 |
+
ui.input_dark_mode(mode="light")
|
data/Test.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
data/Train.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
data/Weather.csv
ADDED
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"date","dewpoint_2m_temperature","maximum_2m_air_temperature","mean_2m_air_temperature","mean_sea_level_pressure","minimum_2m_air_temperature","surface_pressure","total_precipitation","u_component_of_wind_10m","v_component_of_wind_10m"
|
2 |
+
2019-11-01,290.630523681641,296.434661865234,294.125061035156,101853.6171875,292.503997802734,100806.3515625,0.004297100007534,3.56132316589355,0.941694676876068
|
3 |
+
2019-11-02,289.135284423828,298.432403564453,295.551666259766,101225.1640625,293.337921142578,100187.25,0.001766970381141,5.31859302520752,3.2582368850708
|
4 |
+
2019-11-03,287.667694091797,296.612121582031,295.182830810547,100806.6171875,293.67431640625,99771.4140625,0.000797010026872,8.4476490020752,3.17298221588135
|
5 |
+
2019-11-04,287.634643554687,297.173736572266,294.368133544922,101240.9296875,292.376220703125,100200.84375,0.000393278896809,5.99142837524414,2.23669981956482
|
6 |
+
2019-11-05,286.413787841797,294.284851074219,292.496978759766,101131.75,289.14306640625,100088.5,0.004657875746489,6.96272993087769,2.65536379814148
|
7 |
+
2019-11-06,283.408782958984,292.336120605469,289.727630615234,101370.9375,287.188354492188,100318.9765625,0.005435148254037,5.76258993148804,0.564044535160065
|
8 |
+
2019-11-07,283.211395263672,293.419891357422,290.415191650391,101249.84375,286.82373046875,100201.875,0.000247925519943,4.00305700302124,2.68575859069824
|
9 |
+
2019-11-08,281.389923095703,290.577392578125,288.396331787109,101331.3515625,286.591522216797,100274.3046875,0.005571857094765,6.60480737686157,0.676896631717682
|
10 |
+
2019-11-09,280.681365966797,291.216400146484,289.184478759766,101801.1953125,286.891204833984,100742.28125,0.000360472127795,7.45922040939331,0.228752419352531
|
11 |
+
2019-11-10,282.495880126953,287.458679199219,286.003326416016,101158.3046875,283.836639404297,100094.7109375,0.029922166839242,4.83168601989746,0.762373924255371
|
12 |
+
2019-11-11,281.025604248047,288.555297851562,286.935089111328,101095.0859375,284.143981933594,100033.6171875,0.004549514502287,6.18370389938355,-1.88874566555023
|
13 |
+
2019-11-12,282.531280517578,287.975402832031,287.462615966797,101044.1875,286.898010253906,99988.8828125,0.009929362684488,3.17873740196228,-2.04183602333069
|
14 |
+
2019-11-13,284.286773681641,289.910339355469,288.380340576172,100997.6328125,286.113128662109,99946.8984375,0.009136160835624,5.44643640518189,2.58233404159546
|
15 |
+
2019-11-14,284.291259765625,293.278839111328,289.770050048828,100674.53125,286.158020019531,99632.1484375,0.003291759639978,4.69763612747192,3.18607401847839
|
16 |
+
2019-11-15,281.382629394531,288.264526367188,286.137908935547,100623.2734375,283.950164794922,99567.3046875,0.004061112180352,5.19720602035522,2.63942575454712
|
17 |
+
2019-11-16,280.143890380859,285.989593505859,284.518981933594,100999.96875,283.658782958984,99933.6015625,0.012909781187773,5.37002897262573,0.500064074993134
|
18 |
+
2019-11-17,279.41162109375,289.193786621094,287.278594970703,101503.59375,285.190551757813,100441.5078125,0.000602759420872,6.17518091201782,2.33178448677063
|
19 |
+
2019-11-18,282.907958984375,289.452941894531,286.752227783203,101106.1640625,284.470031738281,100048.1875,0.024332545697689,4.95947265625,2.72832131385803
|
20 |
+
2019-11-19,281.222930908203,288.498199462891,285.203338623047,101709.28125,282.853973388672,100640.4765625,0.003459326922894,3.19898533821106,0.879467189311981
|
21 |
+
2019-11-20,280.365142822266,289.753082275391,285.982574462891,101344.1171875,282.348388671875,100287.9921875,3.89E-05,0.466841250658035,1.32042729854584
|
22 |
+
2019-11-21,283.449432373047,291.342742919922,288.261260986328,101161.4453125,285.202117919922,100111.96875,6.89E-05,1.45859718322754,1.85686385631561
|
23 |
+
2019-11-22,283.759460449219,294.419952392578,289.869781494141,100665.5625,285.254333496094,99628.7734375,0.001163817942142,0.095185160636902,2.96889758110046
|
24 |
+
2019-11-23,284.370819091797,292.536529541016,289.942077636719,100172.9140625,287.650238037109,99133.3828125,0.009119542315602,6.63799238204956,3.54840111732483
|
25 |
+
2019-11-24,281.071228027344,289.889709472656,288.453796386719,101219.3046875,286.728210449219,100163.75,0.000329688191414,7.77185869216919,-0.73418515920639
|
26 |
+
2019-11-25,283.602447509766,290.946685791016,288.87890625,101522.15625,286.303833007812,100466.875,0.000427037477493,5.99508476257324,1.86915338039398
|
27 |
+
2019-11-26,286.12109375,292.557403564453,289.742034912109,101492.4296875,287.364227294922,100444.0546875,6.34E-05,2.39880895614624,1.82474529743195
|
28 |
+
2019-11-27,286.326782226562,293.878845214844,291.110260009766,101353.2890625,287.571166992188,100308.9765625,2.58E-05,3.80795884132385,1.94991743564606
|
29 |
+
2019-11-28,286.033294677734,292.165618896484,289.886566162109,101758.7421875,286.286590576172,100707.15625,2.12E-05,3.60884380340576,0.900128543376923
|
30 |
+
2019-11-29,284.880950927734,292.095916748047,288.464324951172,102024.2734375,285.781341552734,100969.4609375,-1.86E-09,1.86156606674194,1.0910028219223
|
31 |
+
2019-11-30,284.823516845703,293.076416015625,288.458770751953,102011.875,285.040802001953,100959.8046875,-4.28E-08,-0.138433709740639,0.79097443819046
|
32 |
+
2019-12-01,284.528839111328,292.345764160156,288.691711425781,101382.9140625,285.9404296875,100338.4609375,1.86E-09,-0.076007284224033,1.09013211727142
|
33 |
+
2019-12-02,285.230133056641,291.094268798828,288.451446533203,101204.84375,285.601501464844,100152.75,5.00E-05,-2.45333647727966,-0.377469331026077
|
34 |
+
2019-12-03,286.093933105469,290.898132324219,289.181732177734,100773.4453125,287.693237304688,99728.28125,5.80E-05,-5.21076822280884,-0.760020196437836
|
35 |
+
2019-12-04,283.047546386719,288.319152832031,286.984436035156,100523.0625,286.001770019531,99474.21875,0.005779733881354,1.91458237171173,2.43778586387634
|
36 |
+
2019-12-05,283.376892089844,291.184631347656,287.946655273437,101614.2734375,285.452697753906,100561.6171875,6.50E-06,-1.01359665393829,0.962993383407593
|
37 |
+
2019-12-06,282.896270751953,293.013366699219,288.524871826172,102065.46875,284.863128662109,101012.7578125,0,-1.44293296337128,1.48972141742706
|
38 |
+
2019-12-07,283.338928222656,291.378387451172,287.575012207031,102077.3515625,284.683471679687,101021.75,2.96E-06,-1.2587878704071,0.078127600252628
|
39 |
+
2019-12-08,285.852081298828,288.70263671875,287.290679931641,102294.90625,286.266906738281,101226.15625,0.008476560935378,1.37802827358246,-0.072672076523304
|
40 |
+
2019-12-09,284.933837890625,290.305847167969,288.071228027344,102419.5859375,285.373046875,101352.7578125,0.000439904630184,5.34705781936646,0.965534210205078
|
41 |
+
2019-12-10,282.28662109375,289.168975830078,286.988830566406,102472.1484375,283.798736572266,101401.2421875,0.001321921125054,2.55038285255432,-1.54461085796356
|
42 |
+
2019-12-11,282.495025634766,290.447174072266,287.158081054688,102097.625,282.602386474609,101033.2265625,0.001650800928473,4.09385919570923,1.15139448642731
|
43 |
+
2019-12-12,281.361419677734,288.673583984375,287.432952880859,101891.0703125,285.356292724609,100826.9921875,0.000418987125158,5.7578616142273,0.574900448322296
|
44 |
+
2019-12-13,283.989654541016,291.369964599609,289.867828369141,101305.5546875,287.646362304688,100255.3359375,5.32E-05,9.46642971038818,2.8544065952301
|
45 |
+
2019-12-14,284.226440429688,291.734436035156,288.992950439453,101800.9453125,285.212677001953,100745.8671875,6.50E-06,4.06499671936035,1.82024967670441
|
46 |
+
2019-12-15,283.476165771484,291.411834716797,287.440490722656,101664.78125,284.523986816406,100616.5625,-4.28E-08,-0.448076725006104,0.808631181716919
|
47 |
+
2019-12-16,279.516693115234,294.247253417969,291.593322753906,100969.6171875,286.060699462891,99929.71875,0,-1.23186004161835,6.00036287307739
|
48 |
+
2019-12-17,281.457794189453,292.583679199219,291.200866699219,100634.4609375,287.550262451172,99595.8203125,0.000536819919944,-1.77081143856049,2.67074871063232
|
49 |
+
2019-12-18,284.618560791016,288.200622558594,287.254333496094,101586.0859375,286.124969482422,100524.6328125,0.009122317656875,4.99246835708618,0.138764828443527
|
50 |
+
2019-12-19,280.996368408203,290.565307617188,286.986572265625,101902.7890625,284.7138671875,100843.0078125,1.86E-09,1.81780385971069,2.30060434341431
|
51 |
+
2019-12-20,281.592559814453,293.419189453125,290.122161865234,101216.5703125,285.235137939453,100175,0.001026257872581,1.45235931873322,4.92853879928589
|
52 |
+
2019-12-21,284.806182861328,294.206604003906,293.212799072266,101113.4453125,292.543029785156,100074.2890625,0.000189838930964,8.24301815032959,4.16265535354614
|
53 |
+
2019-12-22,283.318756103516,293.494262695312,292.244781494141,101723.5234375,290.701873779297,100675.2265625,0,9.11418628692627,2.06118369102478
|
54 |
+
2019-12-23,284.867401123047,291.184387207031,289.438781738281,102574.09375,286.471374511719,101510.75,8.58E-06,4.8449912071228,0.780286073684692
|
55 |
+
2019-12-24,281.922943115234,293.490112304687,288.258850097656,102777.8515625,284.315368652344,101717.0078125,0,0.458070993423462,1.25784504413605
|
56 |
+
2019-12-25,282.767425537109,293.182098388672,287.179046630859,102420.6484375,283.159210205078,101367.8046875,-1.86E-09,-0.946755170822144,0.584219515323639
|
57 |
+
2019-12-26,282.831512451172,291.251312255859,287.191986083984,102508.3984375,283.852508544922,101447.5546875,-4.28E-08,0.908101558685303,0.448448449373245
|
58 |
+
2019-12-27,282.856231689453,290.419464111328,286.725158691406,102797.125,283.695648193359,101725.4453125,5.72E-06,-2.66779518127441,-0.424410969018936
|
59 |
+
2019-12-28,281.909332275391,289.479797363281,285.969177246094,102934.4765625,282.802825927734,101858.8359375,2.10E-05,-2.3729031085968,-0.184997797012329
|
60 |
+
2019-12-29,281.217468261719,288.779541015625,285.632904052734,103071.9375,283.222503662109,101990.8359375,3.75E-05,-2.15144658088684,-0.673203945159912
|
61 |
+
2019-12-30,279.548278808594,288.651000976562,285.355255126953,103127.2421875,282.709594726562,102044.125,1.23E-05,-2.28719973564148,-0.562189280986786
|
62 |
+
2019-12-31,279.129180908203,288.594665527344,285.817230224609,103213.5,282.037567138672,102129.1953125,0.000101646408439,-0.851781070232391,-0.921644449234009
|
data/history/history.csv
ADDED
@@ -0,0 +1,579 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
timestamp,origin_lat,origin_lon,destination_lat,destination_lon,trip_distance,eta_prediction,time_of_prediction,model_used
|
2 |
+
2024-08-08T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-08 20:54:10.381005,XGBRegressor
|
3 |
+
2024-08-08T00:00:00Z,-1.284604486663143,36.68626785278321,-1.2739575,36.8118501,19952.5,1658.4490966796875,2024-08-08 20:54:36.795122,XGBRegressor
|
4 |
+
2024-08-08T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-08 20:54:51.846503,XGBRegressor
|
5 |
+
2024-08-08T00:00:00Z,-1.2593742778212769,36.71167373657227,-1.2739575,36.8118501,13089.4,1363.249755859375,2024-08-08 20:56:06.931112,XGBRegressor
|
6 |
+
2024-08-08T00:00:00Z,-1.2593742778212769,36.71167373657227,-1.2739575,36.8118501,13131,1517.115966796875,2024-08-08 20:56:39.431254,XGBRegressor
|
7 |
+
2024-08-08T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-08 21:00:56.619925,XGBRegressor
|
8 |
+
2024-08-08T00:00:00Z,1.1004796,36.6825914,-1.2739575,36.8118501,336236.8,3222.885986328125,2024-08-08 21:02:20.288798,XGBRegressor
|
9 |
+
2024-08-08T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-08 21:02:35.881502,XGBRegressor
|
10 |
+
2024-08-08T00:00:00Z,1.1004796,36.6825914,-1.2739575,36.8118501,336236.8,3222.885986328125,2024-08-08 21:03:00.630205,XGBRegressor
|
11 |
+
2024-08-08T00:00:00Z,1.1004796,36.6825914,-1.2739575,36.8118501,336236.8,3222.885986328125,2024-08-08 21:03:15.907424,XGBRegressor
|
12 |
+
2024-08-08T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-08 21:04:03.555102,XGBRegressor
|
13 |
+
2024-08-08T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-08 21:05:42.420271,XGBRegressor
|
14 |
+
2024-08-08T00:00:00Z,-1.2348303708657813,36.71407699584962,-1.2739575,36.8118501,13622.7,1585.31982421875,2024-08-08 21:06:21.498996,XGBRegressor
|
15 |
+
2024-08-08T00:00:00Z,-1.2300305138401768,36.78814888000489,-1.2739575,36.8118501,9179.3,1404.4130859375,2024-08-08 21:12:13.322594,XGBRegressor
|
16 |
+
2024-08-08T00:00:00Z,-1.2247101870976034,36.8078899383545,-1.2739575,36.8118501,9024.4,1453.57763671875,2024-08-08 21:12:37.959140,XGBRegressor
|
17 |
+
2024-08-08T00:00:00Z,-1.2241099219360259,36.85132026672364,-1.2739575,36.8118501,12854.5,1885.8411865234375,2024-08-08 21:14:38.340452,XGBRegressor
|
18 |
+
2024-08-09T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-09 18:25:55.768108,XGBRegressor
|
19 |
+
2024-08-09T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-09 22:58:00.444359,XGBRegressor
|
20 |
+
2024-08-09T00:00:00Z,-1.2634935124040183,36.67476654052735,-1.2739575,36.8118501,24889.9,1949.59033203125,2024-08-10 00:55:27.050682,XGBRegressor
|
21 |
+
2024-08-09T00:00:00Z,-1.2344905625908813,36.70721054077149,-1.2739575,36.8118501,17458.1,1568.106201171875,2024-08-10 00:55:31.322439,XGBRegressor
|
22 |
+
2024-08-09T00:00:00Z,-1.2296872701762085,36.72429084777833,-1.2739575,36.8118501,13954.1,1587.1683349609375,2024-08-10 00:55:34.795439,XGBRegressor
|
23 |
+
2024-08-09T00:00:00Z,-1.2282287765932283,36.7339038848877,-1.2739575,36.8118501,13114.5,1681.5767822265625,2024-08-10 00:55:39.476598,XGBRegressor
|
24 |
+
2024-08-09T00:00:00Z,-1.2442769091840473,36.73330307006837,-1.2739575,36.8118501,12168.6,1595.6368408203125,2024-08-10 00:55:43.702761,XGBRegressor
|
25 |
+
2024-08-09T00:00:00Z,-1.2578347077838283,36.73476219177247,-1.2739575,36.8118501,12773.4,1684.4033203125,2024-08-10 00:55:46.809349,XGBRegressor
|
26 |
+
2024-08-09T00:00:00Z,-1.2504532069640324,36.753816604614265,-1.2739575,36.8118501,9806.9,1370.1663818359375,2024-08-10 00:55:51.061717,XGBRegressor
|
27 |
+
2024-08-09T00:00:00Z,-1.2504532069640324,36.753816604614265,-1.2586044704178534,36.81467056274415,7998.1,1172.1009521484375,2024-08-10 00:55:54.771776,XGBRegressor
|
28 |
+
2024-08-09T00:00:00Z,-1.2504532069640324,36.753816604614265,-1.2401549895943969,36.814241409301765,12207.4,1601.82275390625,2024-08-10 00:55:58.525757,XGBRegressor
|
29 |
+
2024-08-09T00:00:00Z,-1.2388684304870725,36.7503833770752,-1.2401549895943969,36.814241409301765,11501.0,1505.4560546875,2024-08-10 00:56:03.215109,XGBRegressor
|
30 |
+
2024-08-09T00:00:00Z,-1.232175620750091,36.74652099609376,-1.2401549895943969,36.814241409301765,9697.2,1363.687744140625,2024-08-10 00:56:10.069325,XGBRegressor
|
31 |
+
2024-08-09T00:00:00Z,-1.219131786066074,36.74549102783204,-1.2401549895943969,36.814241409301765,10077.5,1363.687744140625,2024-08-10 00:56:13.854676,XGBRegressor
|
32 |
+
2024-08-09T00:00:00Z,-1.2058309856260987,36.74652099609376,-1.2401549895943969,36.814241409301765,9821.5,1363.687744140625,2024-08-10 00:56:18.289717,XGBRegressor
|
33 |
+
2024-08-09T00:00:00Z,-1.2058309856260987,36.74652099609376,-1.2225638367765916,36.81758880615235,11566.6,1500.314208984375,2024-08-10 00:56:25.096484,XGBRegressor
|
34 |
+
2024-08-09T00:00:00Z,-1.2151006037408045,36.74222946166993,-1.2225638367765916,36.81758880615235,14050.5,1676.714599609375,2024-08-10 00:56:30.308178,XGBRegressor
|
35 |
+
2024-08-09T00:00:00Z,-1.1982792397607618,36.73716545104981,-1.2225638367765916,36.81758880615235,10837.5,1369.01953125,2024-08-10 00:56:46.657927,XGBRegressor
|
36 |
+
2024-08-09T00:00:00Z,-1.2084932013192353,36.73596382141114,-1.2225638367765916,36.81758880615235,13745.6,1756.673095703125,2024-08-10 00:57:05.750627,XGBRegressor
|
37 |
+
2024-08-09T00:00:00Z,-1.2132123550762133,36.73587799072266,-1.2225638367765916,36.81758880615235,14045.1,1671.0679931640625,2024-08-10 00:57:24.545443,XGBRegressor
|
38 |
+
2024-08-09T00:00:00Z,-1.207719524414527,36.74463272094727,-1.2225638367765916,36.81758880615235,11955.4,1585.6553955078125,2024-08-10 01:00:20.250400,XGBRegressor
|
39 |
+
2024-08-09T00:00:00Z,-1.195705300979875,36.753559112548835,-1.2225638367765916,36.81758880615235,8259.0,1137.809814453125,2024-08-10 01:00:21.832745,XGBRegressor
|
40 |
+
2024-08-09T00:00:00Z,-1.195705300979875,36.753559112548835,-1.2069463347620175,36.80909156799317,9719.3,1370.1663818359375,2024-08-10 01:00:23.843966,XGBRegressor
|
41 |
+
2024-08-09T00:00:00Z,-1.1900422581924321,36.76548957824708,-1.2069463347620175,36.80909156799317,9544.7,1313.4239501953125,2024-08-10 01:00:25.481542,XGBRegressor
|
42 |
+
2024-08-09T00:00:00Z,-1.1774272321794046,36.77707672119141,-1.2069463347620175,36.80909156799317,10751.5,1638.998291015625,2024-08-10 01:00:30.914118,XGBRegressor
|
43 |
+
2024-08-09T00:00:00Z,-1.1774272321794046,36.77707672119141,-1.2069463347620175,36.9096888,20205.7,1790.7154541015625,2024-08-10 01:00:40.456516,XGBRegressor
|
44 |
+
2024-08-09T00:00:00Z,-1.1279097306962256,36.80540084838868,-1.2069463347620175,36.9096888,20965.2,2047.6016845703125,2024-08-10 01:00:43.485801,XGBRegressor
|
45 |
+
2024-08-09T00:00:00Z,-1.175458799728333,36.79922103881837,-1.2069463347620175,36.9096888,19400.4,1858.7974853515625,2024-08-10 01:00:46.329734,XGBRegressor
|
46 |
+
2024-08-09T00:00:00Z,-1.175458799728333,36.79922103881837,-1.2069463347620175,36.9096888,19471,1858.7974853515625,2024-08-10 01:55:05.959182,XGBRegressor
|
47 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 02:00:17.240709,XGBRegressor
|
48 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 02:03:16.059912,XGBRegressor
|
49 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 02:17:31.852145,XGBRegressor
|
50 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 02:25:57.372842,XGBRegressor
|
51 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 02:34:44.333119,XGBRegressor
|
52 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 04:46:55.522587,XGBRegressor
|
53 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 04:48:40.898553,XGBRegressor
|
54 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 04:52:47.021149,XGBRegressor
|
55 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 04:53:40.181433,XGBRegressor
|
56 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 04:54:08.818077,XGBRegressor
|
57 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 04:54:39.964806,XGBRegressor
|
58 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 04:55:00.750310,XGBRegressor
|
59 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 04:55:24.277585,XGBRegressor
|
60 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 04:55:52.640168,XGBRegressor
|
61 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 04:56:41.120565,XGBRegressor
|
62 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 04:57:14.606174,XGBRegressor
|
63 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 04:57:49.061144,XGBRegressor
|
64 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 04:58:24.264051,XGBRegressor
|
65 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 04:59:37.341599,XGBRegressor
|
66 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:07:45.067268,XGBRegressor
|
67 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:11:13.945531,XGBRegressor
|
68 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:11:45.784325,XGBRegressor
|
69 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:11:47.969325,XGBRegressor
|
70 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:12:44.455092,XGBRegressor
|
71 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:14:02.068273,XGBRegressor
|
72 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:14:50.067799,XGBRegressor
|
73 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:15:53.882264,XGBRegressor
|
74 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:17:08.471432,XGBRegressor
|
75 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:17:43.487345,XGBRegressor
|
76 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:23:20.508611,XGBRegressor
|
77 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:24:06.444294,XGBRegressor
|
78 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:25:10.527673,XGBRegressor
|
79 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:33:26.824242,XGBRegressor
|
80 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:34:22.390386,XGBRegressor
|
81 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:34:48.686001,XGBRegressor
|
82 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:37:05.399326,XGBRegressor
|
83 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:37:27.662683,XGBRegressor
|
84 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:38:10.579333,XGBRegressor
|
85 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:38:58.529622,XGBRegressor
|
86 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:39:55.802412,XGBRegressor
|
87 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:52:19.046686,XGBRegressor
|
88 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:53:13.462921,XGBRegressor
|
89 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:53:54.617689,XGBRegressor
|
90 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:55:02.187459,XGBRegressor
|
91 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:56:36.306680,XGBRegressor
|
92 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:57:27.182927,XGBRegressor
|
93 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:57:48.751982,XGBRegressor
|
94 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 05:58:48.270546,XGBRegressor
|
95 |
+
2024-08-10T00:00:00Z,-1.2801440285719086,36.684894561767585,-1.2739575,36.8118501,19549.8,1649.6002197265625,2024-08-10 05:59:30.414458,XGBRegressor
|
96 |
+
2024-08-10T00:00:00Z,-1.2801440285719086,36.684894561767585,-1.2638402163901739,36.80866241455079,18955.2,1827.345703125,2024-08-10 05:59:34.704826,XGBRegressor
|
97 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:21:32.986965,XGBRegressor
|
98 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:27:10.609698,XGBRegressor
|
99 |
+
2024-08-10T00:00:00Z,-1.2902741129989992,36.6830062866211,-1.2739575,36.8118501,28070.1,2311.299072265625,2024-08-10 06:27:18.727525,XGBRegressor
|
100 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:27:36.471580,XGBRegressor
|
101 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:29:22.494797,XGBRegressor
|
102 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:29:24.724339,XGBRegressor
|
103 |
+
2024-08-10T00:00:00Z,-1.2935336819505119,36.68455123901368,-1.2739575,36.8118501,28781.6,2289.66650390625,2024-08-10 06:29:48.348109,XGBRegressor
|
104 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:30:47.689166,XGBRegressor
|
105 |
+
2024-08-10T00:00:00Z,-1.293019013446838,36.69210433959962,-1.2739575,36.8118501,21425.5,1620.2279052734375,2024-08-10 06:30:55.372282,XGBRegressor
|
106 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:31:36.831780,XGBRegressor
|
107 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:32:09.052084,XGBRegressor
|
108 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:53:19.819876,XGBRegressor
|
109 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:54:33.780416,XGBRegressor
|
110 |
+
2024-08-10T00:00:00Z,-1.2127270365248108,36.71356201171876,-1.2739575,36.8118501,16163.8,1582.31396484375,2024-08-10 06:54:49.923960,XGBRegressor
|
111 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:54:52.274297,XGBRegressor
|
112 |
+
2024-08-10T00:00:00Z,-1.2377755661610916,36.70480728149415,-1.2739575,36.8118501,15709.4,1560.776611328125,2024-08-10 06:55:05.758887,XGBRegressor
|
113 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:55:07.944834,XGBRegressor
|
114 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:55:34.274873,XGBRegressor
|
115 |
+
2024-08-10T00:00:00Z,-1.257333842852575,36.72248840332032,-1.2739575,36.8118501,11829.1,1272.27685546875,2024-08-10 06:55:44.443979,XGBRegressor
|
116 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:55:46.412234,XGBRegressor
|
117 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:57:57.635813,XGBRegressor
|
118 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:58:24.994561,XGBRegressor
|
119 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:59:09.230782,XGBRegressor
|
120 |
+
2024-08-10T00:00:00Z,-1.2183887109319589,36.725578308105476,-1.2739575,36.8118501,14659.1,1666.1309814453125,2024-08-10 06:59:26.563158,XGBRegressor
|
121 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 06:59:28.209229,XGBRegressor
|
122 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 07:20:24.741010,XGBRegressor
|
123 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 08:25:32.067787,XGBRegressor
|
124 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 08:27:50.566361,XGBRegressor
|
125 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 08:29:35.751549,XGBRegressor
|
126 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 08:29:58.189047,XGBRegressor
|
127 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 08:38:10.125708,XGBRegressor
|
128 |
+
2024-08-10T00:00:00Z,-1.2573318688925188,36.73278808593751,-1.2739575,36.8118501,12705.4,1684.4033203125,2024-08-10 08:38:49.128323,XGBRegressor
|
129 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 08:43:14.299165,XGBRegressor
|
130 |
+
2024-08-10T00:00:00Z,-1.2279931353600209,36.698627471923835,-1.2739575,36.8118501,16062.3,1561.5941162109375,2024-08-10 08:43:36.643750,XGBRegressor
|
131 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 08:48:01.141625,XGBRegressor
|
132 |
+
2024-08-10T00:00:00Z,-1.2032865833452848,36.759567260742195,-1.2739575,36.8118501,13725.1,1796.5091552734375,2024-08-10 08:48:08.710935,XGBRegressor
|
133 |
+
2024-08-10T00:00:00Z,-1.200426822924041,36.79012298583985,-1.2739575,36.8118501,13240.0,2102.8544921875,2024-08-10 08:48:24.408470,XGBRegressor
|
134 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 08:52:01.144916,XGBRegressor
|
135 |
+
2024-08-10T00:00:00Z,-1.2050023234074223,36.784801483154304,-1.2739575,36.8118501,12320.7,1765.6004638671875,2024-08-10 08:52:06.139682,XGBRegressor
|
136 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 08:56:42.125278,XGBRegressor
|
137 |
+
2024-08-10T00:00:00Z,-1.2056886191297886,36.82737350463868,-1.2739575,36.8118501,15347.4,1848.7464599609375,2024-08-10 08:56:46.990389,XGBRegressor
|
138 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 08:57:19.686314,XGBRegressor
|
139 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 09:00:52.801043,XGBRegressor
|
140 |
+
2024-08-10T00:00:00Z,-1.207232783872329,36.79681777954102,-1.2739575,36.8118501,18120.3,2039.7274169921875,2024-08-10 09:00:57.623056,XGBRegressor
|
141 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 09:03:00.427472,XGBRegressor
|
142 |
+
2024-08-10T00:00:00Z,-1.2176987661768903,36.76815032958985,-1.2739575,36.8118501,11947.2,1457.3206787109375,2024-08-10 09:03:08.395018,XGBRegressor
|
143 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 09:05:39.152886,XGBRegressor
|
144 |
+
2024-08-10T00:00:00Z,-1.2075759314738517,36.77209854125977,-1.2739575,36.8118501,13126.2,1555.254638671875,2024-08-10 09:05:43.600664,XGBRegressor
|
145 |
+
2024-08-10T00:00:00Z,-1.200084910976205,36.82333946228028,-1.2739575,36.8118501,16497.7,1912.3221435546875,2024-08-10 09:05:54.353503,XGBRegressor
|
146 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 09:13:41.058284,XGBRegressor
|
147 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 09:13:42.784383,XGBRegressor
|
148 |
+
2024-08-10T00:00:00Z,-1.2128947137499875,36.82239532470704,-1.2739575,36.8118501,15442.9,1848.7464599609375,2024-08-10 09:13:47.591045,XGBRegressor
|
149 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 09:15:59.776790,XGBRegressor
|
150 |
+
2024-08-10T00:00:00Z,-1.2132378606351348,36.83063507080079,-1.2739575,36.8118501,14198.7,2032.469482421875,2024-08-10 09:16:03.594644,XGBRegressor
|
151 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 09:16:32.139825,XGBRegressor
|
152 |
+
2024-08-10T00:00:00Z,-1.2127231402910912,36.81329727172852,-1.2739575,36.8118501,16359.7,1978.087158203125,2024-08-10 09:16:36.234624,XGBRegressor
|
153 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 09:28:42.621709,XGBRegressor
|
154 |
+
2024-08-10T00:00:00Z,-1.2170124734964574,36.77673339843751,-1.2739575,36.8118501,10882.8,1428.6334228515625,2024-08-10 09:28:48.346174,XGBRegressor
|
155 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 09:29:19.811754,XGBRegressor
|
156 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.81185,30275.7,2248.195556640625,2024-08-10 09:29:54.365828,XGBRegressor
|
157 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.9096888,33237.6,2338.11279296875,2024-08-10 09:31:12.501940,XGBRegressor
|
158 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-0.8995204,36.9096888,92475.0,2972.66845703125,2024-08-10 09:31:14.928219,XGBRegressor
|
159 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 09:31:27.332167,XGBRegressor
|
160 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 09:31:35.315324,XGBRegressor
|
161 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30271,2248.195556640625,2024-08-10 09:31:39.251510,XGBRegressor
|
162 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30261,2248.195556640625,2024-08-10 09:31:40.699399,XGBRegressor
|
163 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 09:31:42.211939,XGBRegressor
|
164 |
+
2024-08-10T00:00:00Z,7.447112616557192,35.59570312500001,-1.2739575,36.8118501,1446155.4,4159.216796875,2024-08-10 09:31:53.210885,XGBRegressor
|
165 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 09:32:13.722519,XGBRegressor
|
166 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 09:34:54.232422,XGBRegressor
|
167 |
+
2024-08-10T00:00:00Z,-1.2664250939961246,36.69021606445313,-1.2739575,36.8118501,15881.6,1728.9835205078125,2024-08-10 09:34:59.097832,XGBRegressor
|
168 |
+
2024-08-10T00:00:00Z,-1.1880058644837717,36.70274734497071,-1.2739575,36.8118501,23382.1,1923.9996337890625,2024-08-10 09:35:03.057558,XGBRegressor
|
169 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 09:39:54.098035,XGBRegressor
|
170 |
+
2024-08-10T00:00:00Z,-1.2082622265468632,36.79681777954102,-1.2739575,36.8118501,14046.7,2127.74267578125,2024-08-10 09:40:00.292722,XGBRegressor
|
171 |
+
2024-08-10T00:00:00Z,-1.2027445085810615,36.842737197875984,-1.2739575,36.8118501,16576.0,1912.7987060546875,2024-08-10 09:40:03.574686,XGBRegressor
|
172 |
+
2024-08-10T00:00:00Z,0.15456,37.908383,-1.2739575,36.8118501,265314.5,4090.07470703125,2024-08-10 09:40:12.373199,XGBRegressor
|
173 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 09:40:18.507326,XGBRegressor
|
174 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 09:59:19.861408,XGBRegressor
|
175 |
+
2024-08-10T00:00:00Z,-1.241547327596531,36.70583724975587,-1.2739575,36.8118501,14335.2,1502.6383056640625,2024-08-10 09:59:23.988120,XGBRegressor
|
176 |
+
2024-08-10T00:00:00Z,-1.179076777258127,36.80334091186524,-1.2739575,36.8118501,22929.6,2002.754150390625,2024-08-10 09:59:27.472862,XGBRegressor
|
177 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:05:38.009271,XGBRegressor
|
178 |
+
2024-08-10T00:00:00Z,-1.2144388743903374,36.79990768432618,-1.2739575,36.8118501,10377.8,1532.8798828125,2024-08-10 10:05:42.238174,XGBRegressor
|
179 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:09:43.624780,XGBRegressor
|
180 |
+
2024-08-10T00:00:00Z,-1.2482386121143034,36.73587799072266,-1.2739575,36.8118501,13174.6,1835.4429931640625,2024-08-10 10:09:47.124305,XGBRegressor
|
181 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:10:08.565936,XGBRegressor
|
182 |
+
2024-08-10T00:00:00Z,-1.2600769968003083,36.72094345092774,-1.2739575,36.8118501,10882.9,1121.5931396484375,2024-08-10 10:10:12.440866,XGBRegressor
|
183 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:10:13.940982,XGBRegressor
|
184 |
+
2024-08-10T00:00:00Z,-1.2226743828782145,36.799736022949226,-1.2739575,36.8118501,7867.7,1269.2529296875,2024-08-10 10:10:17.821223,XGBRegressor
|
185 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:10:20.046695,XGBRegressor
|
186 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:17:43.128651,XGBRegressor
|
187 |
+
2024-08-10T00:00:00Z,-1.2298804320860974,36.76214218139649,-1.2739575,36.8118501,8710.4,1251.9375,2024-08-10 10:17:47.823701,XGBRegressor
|
188 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:23:16.757416,XGBRegressor
|
189 |
+
2024-08-10T00:00:00Z,-1.2089485214465474,36.771068572998054,-1.2739575,36.8118501,13063.5,1529.4615478515625,2024-08-10 10:23:20.509823,XGBRegressor
|
190 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:23:22.761241,XGBRegressor
|
191 |
+
2024-08-10T00:00:00Z,-1.2116936993094263,36.77158355712891,-1.2739575,36.8118501,11868.9,1445.2916259765625,2024-08-10 10:23:26.916097,XGBRegressor
|
192 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:23:28.162943,XGBRegressor
|
193 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:23:36.119665,XGBRegressor
|
194 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:47:45.927636,XGBRegressor
|
195 |
+
2024-08-10T00:00:00Z,-1.2254217231944835,36.75064086914063,-1.2739575,36.8118501,10332.3,1438.423095703125,2024-08-10 10:47:54.003267,XGBRegressor
|
196 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:47:56.519179,XGBRegressor
|
197 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:48:18.687532,XGBRegressor
|
198 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:49:38.458178,XGBRegressor
|
199 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:49:49.963036,XGBRegressor
|
200 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:56:59.218604,XGBRegressor
|
201 |
+
2024-08-10T00:00:00Z,-1.2585341118550857,36.73965454101563,-1.2739575,36.8118501,9422.6,1273.8427734375,2024-08-10 10:57:07.480558,XGBRegressor
|
202 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:57:10.305898,XGBRegressor
|
203 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 10:57:29.999065,XGBRegressor
|
204 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:20:36.825838,XGBRegressor
|
205 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2357054777947696,36.816215515136726,34455.9,2523.17578125,2024-08-10 11:21:08.579534,XGBRegressor
|
206 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:21:13.940036,XGBRegressor
|
207 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:21:28.128858,XGBRegressor
|
208 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:23:37.228787,XGBRegressor
|
209 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.222494401548033,36.7928695678711,31651.2,2016.694580078125,2024-08-10 11:23:45.848554,XGBRegressor
|
210 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:23:49.387702,XGBRegressor
|
211 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:24:19.054615,XGBRegressor
|
212 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:25:54.172464,XGBRegressor
|
213 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.1916111137925989,36.824455261230476,35508.0,2523.17578125,2024-08-10 11:26:05.958082,XGBRegressor
|
214 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:26:12.125168,XGBRegressor
|
215 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:26:34.695675,XGBRegressor
|
216 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:26:53.987980,XGBRegressor
|
217 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:30:39.385403,XGBRegressor
|
218 |
+
2024-08-10T00:00:00Z,-1.2286794252329019,36.71665191650391,-1.2739575,36.8118501,15054.6,1504.7021484375,2024-08-10 11:30:48.178246,XGBRegressor
|
219 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:30:51.177904,XGBRegressor
|
220 |
+
2024-08-10T00:00:00Z,-1.242748328631474,36.698112487792976,-1.2739575,36.8118501,15230.2,1536.0408935546875,2024-08-10 11:30:55.882099,XGBRegressor
|
221 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:30:57.831853,XGBRegressor
|
222 |
+
2024-08-10T00:00:00Z,-1.2382874648957307,36.71321868896485,-1.2739575,36.8118501,14099.6,1456.050537109375,2024-08-10 11:31:09.443968,XGBRegressor
|
223 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:31:16.996038,XGBRegressor
|
224 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:37:13.616211,XGBRegressor
|
225 |
+
2024-08-10T00:00:00Z,-1.2267921276585843,36.76042556762696,-1.2739575,36.8118501,9095.0,1278.6177978515625,2024-08-10 11:37:18.368550,XGBRegressor
|
226 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:37:20.382926,XGBRegressor
|
227 |
+
2024-08-10T00:00:00Z,-1.27466044015017,36.691417694091804,-1.2739575,36.8118501,17657.3,1763.36328125,2024-08-10 11:37:23.226739,XGBRegressor
|
228 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:37:33.776223,XGBRegressor
|
229 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:37:54.204290,XGBRegressor
|
230 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:37:58.880375,XGBRegressor
|
231 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:38:44.472698,XGBRegressor
|
232 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2235238384051548,36.80110931396485,29216.1,2007.029541015625,2024-08-10 11:38:52.815815,XGBRegressor
|
233 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:38:54.174006,XGBRegressor
|
234 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:38:59.917342,XGBRegressor
|
235 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:42:18.231868,XGBRegressor
|
236 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2099695549379577,36.80505752563477,28758.8,2296.6904296875,2024-08-10 11:42:27.637107,XGBRegressor
|
237 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:42:28.192067,XGBRegressor
|
238 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:42:42.452855,XGBRegressor
|
239 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:49:32.228258,XGBRegressor
|
240 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:53:02.509853,XGBRegressor
|
241 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2192345155648856,36.80042266845704,28845.9,2023.77783203125,2024-08-10 11:53:09.172977,XGBRegressor
|
242 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2266821546264286,36.72514915466309,17155.1,1145.0989990234375,2024-08-10 11:53:12.693940,XGBRegressor
|
243 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:53:15.474304,XGBRegressor
|
244 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:53:25.026550,XGBRegressor
|
245 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 11:56:14.553232,XGBRegressor
|
246 |
+
2024-08-10T00:00:00Z,-1.3032036,36.9096888,-1.2739575,36.8118501,24443.9,2245.502685546875,2024-08-10 11:56:20.194509,XGBRegressor
|
247 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 12:55:03.608328,XGBRegressor
|
248 |
+
2024-08-10T00:00:00Z,-1.2293657149294657,36.69897079467774,-1.2739575,36.8118501,16660.4,1546.0477294921875,2024-08-10 12:55:08.413898,XGBRegressor
|
249 |
+
2024-08-10T00:00:00Z,-1.1662050681972858,36.827201843261726,-1.2739575,36.8118501,20221.9,1891.708740234375,2024-08-10 12:55:13.844907,XGBRegressor
|
250 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 12:55:16.519414,XGBRegressor
|
251 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 12:55:28.190445,XGBRegressor
|
252 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 12:57:22.964740,XGBRegressor
|
253 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 13:00:48.364323,XGBRegressor
|
254 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2398232024468718,36.786518096923835,24171.1,1552.1275634765625,2024-08-10 13:00:52.397480,XGBRegressor
|
255 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2350093468937962,36.727123260498054,17669.9,1247.2218017578125,2024-08-10 13:00:55.265238,XGBRegressor
|
256 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 13:01:01.715347,XGBRegressor
|
257 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 13:01:12.902097,XGBRegressor
|
258 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 13:02:52.487140,XGBRegressor
|
259 |
+
2024-08-10T00:00:00Z,-1.2619642705591159,36.69330596923829,-1.2739575,36.8118501,15419.6,1563.1094970703125,2024-08-10 13:02:55.454723,XGBRegressor
|
260 |
+
2024-08-10T00:00:00Z,-1.2326137178075556,36.7324447631836,-1.2739575,36.8118501,12972.2,1681.5767822265625,2024-08-10 13:02:58.467404,XGBRegressor
|
261 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 13:02:59.961264,XGBRegressor
|
262 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 13:03:10.116980,XGBRegressor
|
263 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 13:06:12.129723,XGBRegressor
|
264 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2447987778544312,36.77862167358399,23242.0,1668.1143798828125,2024-08-10 13:06:16.038222,XGBRegressor
|
265 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.242045225528559,36.699657440185554,13701.2,1078.7432861328125,2024-08-10 13:06:19.390901,XGBRegressor
|
266 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 13:06:20.577716,XGBRegressor
|
267 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 13:06:30.214063,XGBRegressor
|
268 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:18:17.716332,XGBRegressor
|
269 |
+
2024-08-10T00:00:00Z,-1.25492987960504,36.68729782104493,-1.2739575,36.8118501,14962.1,1575.412109375,2024-08-10 17:18:24.572830,XGBRegressor
|
270 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:18:28.015581,XGBRegressor
|
271 |
+
2024-08-10T00:00:00Z,-1.261449559669742,36.69605255126954,-1.2739575,36.8118501,14979.1,1540.4000244140625,2024-08-10 17:18:31.857639,XGBRegressor
|
272 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:18:41.435645,XGBRegressor
|
273 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:22:55.852514,XGBRegressor
|
274 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2118568643066119,36.792011260986335,27067.6,1908.950439453125,2024-08-10 17:23:05.771185,XGBRegressor
|
275 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:23:08.493386,XGBRegressor
|
276 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:23:19.553333,XGBRegressor
|
277 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:23:29.872288,XGBRegressor
|
278 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:23:51.654659,XGBRegressor
|
279 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:23:59.159934,XGBRegressor
|
280 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:24:18.558719,XGBRegressor
|
281 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:25:23.837098,XGBRegressor
|
282 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:25:45.868283,XGBRegressor
|
283 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:26:33.680141,XGBRegressor
|
284 |
+
2024-08-10T00:00:00Z,-1.3032036,36.9096888,-1.2739575,36.8118501,24443.9,2245.502685546875,2024-08-10 17:26:41.792489,XGBRegressor
|
285 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:26:47.316142,XGBRegressor
|
286 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:27:35.336370,XGBRegressor
|
287 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:27:45.717615,XGBRegressor
|
288 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:27:55.910763,XGBRegressor
|
289 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:28:29.685227,XGBRegressor
|
290 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:29:13.606686,XGBRegressor
|
291 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:29:22.736188,XGBRegressor
|
292 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:29:32.359735,XGBRegressor
|
293 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:29:42.100453,XGBRegressor
|
294 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:29:56.168046,XGBRegressor
|
295 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:30:16.347959,XGBRegressor
|
296 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:30:24.984939,XGBRegressor
|
297 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:33:22.203323,XGBRegressor
|
298 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2122000113233322,36.794757843017585,27837.4,2014.5064697265625,2024-08-10 17:33:30.743645,XGBRegressor
|
299 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:33:38.333722,XGBRegressor
|
300 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2070528015135051,36.80557250976563,32162.9,2399.367919921875,2024-08-10 17:33:45.441322,XGBRegressor
|
301 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:33:55.454606,XGBRegressor
|
302 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:45:06.682822,XGBRegressor
|
303 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2199208076791799,36.78411483764649,31239.4,1972.6929931640625,2024-08-10 17:45:24.056093,XGBRegressor
|
304 |
+
2024-08-10T00:00:00Z,51.056534,5.1691684,-1.2739575,36.8118501,1000,1883.396728515625,2024-08-10 17:45:31.252669,XGBRegressor
|
305 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:45:31.896746,XGBRegressor
|
306 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:53:13.471244,XGBRegressor
|
307 |
+
2024-08-10T00:00:00Z,-1.2420620423926565,36.70051574707032,-1.2739575,36.8118501,14646.0,1482.1158447265625,2024-08-10 17:53:18.153187,XGBRegressor
|
308 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:53:19.346768,XGBRegressor
|
309 |
+
2024-08-10T00:00:00Z,51.056534,5.1691684,-1.2739575,36.8118501,30275.7,3480.389404296875,2024-08-10 17:53:30.270406,XGBRegressor
|
310 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:53:30.896807,XGBRegressor
|
311 |
+
2024-08-10T00:00:00Z,51.056534,5.1691684,-1.2739575,36.8118501,30275.7,3480.389404296875,2024-08-10 17:53:42.849911,XGBRegressor
|
312 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 17:53:43.349221,XGBRegressor
|
313 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:00:11.398741,XGBRegressor
|
314 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2363917656806562,36.79664611816407,27009.7,2020.3282470703125,2024-08-10 18:00:24.542020,XGBRegressor
|
315 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:00:31.590091,XGBRegressor
|
316 |
+
2024-08-10T00:00:00Z,51.056534,5.1691684,-1.2739575,36.8118501,30275.7,3480.389404296875,2024-08-10 18:00:41.130672,XGBRegressor
|
317 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:00:41.636154,XGBRegressor
|
318 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:07:07.947734,XGBRegressor
|
319 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2333034687984368,36.7899513244629,31862.4,1984.1005859375,2024-08-10 18:07:13.643641,XGBRegressor
|
320 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:07:16.027810,XGBRegressor
|
321 |
+
2024-08-10T00:00:00Z,51.056534,5.1691684,-1.2739575,36.8118501,30275.7,3480.389404296875,2024-08-10 18:07:23.684420,XGBRegressor
|
322 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:07:24.247497,XGBRegressor
|
323 |
+
2024-08-10T00:00:00Z,-1.3032036,36.9096888,-1.2739575,36.8118501,24443.9,2245.502685546875,2024-08-10 18:16:14.463501,XGBRegressor
|
324 |
+
2024-08-10T00:00:00Z,-1.3032036,37.9096888,-1.2739575,36.8118501,30275.7,2894.838623046875,2024-08-10 18:16:16.045210,XGBRegressor
|
325 |
+
2024-08-10T00:00:00Z,-1.3032036,38.9096888,-1.2739575,36.8118501,30275.7,2894.838623046875,2024-08-10 18:16:17.164400,XGBRegressor
|
326 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:16:17.630593,XGBRegressor
|
327 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.8995204,36.8118501,86715.2,3222.885986328125,2024-08-10 18:16:25.511074,XGBRegressor
|
328 |
+
2024-08-10T00:00:00Z,-0.8995204,36.6825914,-1.8995204,36.8118501,30275.7,2248.195556640625,2024-08-10 18:16:32.393384,XGBRegressor
|
329 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:16:32.889801,XGBRegressor
|
330 |
+
2024-08-10T00:00:00Z,-0.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:16:45.783030,XGBRegressor
|
331 |
+
2024-08-10T00:00:00Z,0.1004796,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:16:46.905005,XGBRegressor
|
332 |
+
2024-08-10T00:00:00Z,1.1004796,36.6825914,-1.2739575,36.8118501,336236.8,3222.885986328125,2024-08-10 18:16:47.407945,XGBRegressor
|
333 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:16:47.902735,XGBRegressor
|
334 |
+
2024-08-10T00:00:00Z,-0.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:17:02.975900,XGBRegressor
|
335 |
+
2024-08-10T00:00:00Z,0.1004796,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:17:15.371229,XGBRegressor
|
336 |
+
2024-08-10T00:00:00Z,-0.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:17:19.647740,XGBRegressor
|
337 |
+
2024-08-10T00:00:00Z,-1.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:17:21.288070,XGBRegressor
|
338 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:17:21.817205,XGBRegressor
|
339 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:20:13.943350,XGBRegressor
|
340 |
+
2024-08-10T00:00:00Z,-1.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:20:45.765347,XGBRegressor
|
341 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:20:46.287722,XGBRegressor
|
342 |
+
2024-08-10T00:00:00Z,-1.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:20:55.081532,XGBRegressor
|
343 |
+
2024-08-10T00:00:00Z,-2.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:21:02.208091,XGBRegressor
|
344 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:21:02.719934,XGBRegressor
|
345 |
+
2024-08-10T00:00:00Z,51.056534,5.1691684,-1.2739575,36.8118501,30275.7,3480.389404296875,2024-08-10 18:21:37.195490,XGBRegressor
|
346 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:21:37.662483,XGBRegressor
|
347 |
+
2024-08-10T00:00:00Z,51.056534,5.1691684,-1.2739575,36.8118501,30275.7,3480.389404296875,2024-08-10 18:21:54.648009,XGBRegressor
|
348 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:21:55.132328,XGBRegressor
|
349 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:23:21.014592,XGBRegressor
|
350 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2458282060781152,36.77312850952149,22431.5,1671.9000244140625,2024-08-10 18:23:27.929077,XGBRegressor
|
351 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2401582342094444,36.736822128295906,18314.8,1244.9105224609375,2024-08-10 18:23:31.603554,XGBRegressor
|
352 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2394703150717925,36.693906784057624,13020.9,1134.9783935546875,2024-08-10 18:23:36.165672,XGBRegressor
|
353 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2532816069582597,36.73853874206544,21658.0,1402.258056640625,2024-08-10 18:23:40.242121,XGBRegressor
|
354 |
+
2024-08-10T00:00:00Z,-1.8995204,36.6825914,-1.2532816069582597,36.73853874206544,30275.7,1788.7811279296875,2024-08-10 18:23:45.846412,XGBRegressor
|
355 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:23:46.343056,XGBRegressor
|
356 |
+
2024-08-10T00:00:00Z,-1.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:23:49.916166,XGBRegressor
|
357 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:23:50.417970,XGBRegressor
|
358 |
+
2024-08-10T00:00:00Z,-1.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:23:54.913632,XGBRegressor
|
359 |
+
2024-08-10T00:00:00Z,-2.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:24:01.059571,XGBRegressor
|
360 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:24:01.561407,XGBRegressor
|
361 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:27:42.623308,XGBRegressor
|
362 |
+
2024-08-10T00:00:00Z,-1.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:27:50.054696,XGBRegressor
|
363 |
+
2024-08-10T00:00:00Z,-2.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:27:51.155359,XGBRegressor
|
364 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:27:51.648968,XGBRegressor
|
365 |
+
2024-08-10T00:00:00Z,-1.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:28:03.909248,XGBRegressor
|
366 |
+
2024-08-10T00:00:00Z,-2.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:28:07.190368,XGBRegressor
|
367 |
+
2024-08-10T00:00:00Z,-3.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:28:12.981798,XGBRegressor
|
368 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:28:13.470938,XGBRegressor
|
369 |
+
2024-08-10T00:00:00Z,-0.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:28:18.671316,XGBRegressor
|
370 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:28:19.171816,XGBRegressor
|
371 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:36:01.846640,XGBRegressor
|
372 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.223695411176275,36.788749694824226,31287.3,1997.2069091796875,2024-08-10 18:36:08.274156,XGBRegressor
|
373 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2312301099798313,36.72420501708985,17885.9,1201.298583984375,2024-08-10 18:36:11.956115,XGBRegressor
|
374 |
+
2024-08-10T00:00:00Z,-1.8995204,36.6825914,-1.2312301099798313,36.72420501708985,30275.7,1747.5113525390625,2024-08-10 18:36:15.334576,XGBRegressor
|
375 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:36:15.861443,XGBRegressor
|
376 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:37:54.654478,XGBRegressor
|
377 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2444556350238676,36.78617477416993,24990.3,1679.6968994140625,2024-08-10 18:37:58.338115,XGBRegressor
|
378 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2525967578410526,36.72540664672852,20399.1,1268.79931640625,2024-08-10 18:38:01.618309,XGBRegressor
|
379 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2545721717954963,36.6775131225586,9271.7,1027.1279296875,2024-08-10 18:38:06.657881,XGBRegressor
|
380 |
+
2024-08-10T00:00:00Z,51.056534,5.1691684,-1.2739575,36.8118501,30275.7,3480.389404296875,2024-08-10 18:38:35.345430,XGBRegressor
|
381 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:38:35.857473,XGBRegressor
|
382 |
+
2024-08-10T00:00:00Z,51.056534,5.1691684,-1.2739575,36.8118501,30275.7,3480.389404296875,2024-08-10 18:38:49.664619,XGBRegressor
|
383 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:38:50.193858,XGBRegressor
|
384 |
+
2024-08-10T00:00:00Z,51.056534,5.1691684,-1.2739575,36.8118501,30275.7,3480.389404296875,2024-08-10 18:39:11.843517,XGBRegressor
|
385 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:39:12.340213,XGBRegressor
|
386 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:39:52.802787,XGBRegressor
|
387 |
+
2024-08-10T00:00:00Z,51.056534,5.1691684,-1.2739575,36.8118501,30275.7,3480.389404296875,2024-08-10 18:39:59.373174,XGBRegressor
|
388 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:39:59.951331,XGBRegressor
|
389 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:45:21.111577,XGBRegressor
|
390 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:45:57.678487,XGBRegressor
|
391 |
+
2024-08-10T00:00:00Z,-1.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:46:06.687136,XGBRegressor
|
392 |
+
2024-08-10T00:00:00Z,-2.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:46:07.790296,XGBRegressor
|
393 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:46:08.275709,XGBRegressor
|
394 |
+
2024-08-10T00:00:00Z,-1.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:46:13.088165,XGBRegressor
|
395 |
+
2024-08-10T00:00:00Z,-2.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:46:13.572881,XGBRegressor
|
396 |
+
2024-08-10T00:00:00Z,-3.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:46:14.710608,XGBRegressor
|
397 |
+
2024-08-10T00:00:00Z,-4.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:46:15.829461,XGBRegressor
|
398 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:46:16.324586,XGBRegressor
|
399 |
+
2024-08-10T00:00:00Z,-1.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:46:20.421066,XGBRegressor
|
400 |
+
2024-08-10T00:00:00Z,-2.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:46:20.888539,XGBRegressor
|
401 |
+
2024-08-10T00:00:00Z,-3.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:46:21.403714,XGBRegressor
|
402 |
+
2024-08-10T00:00:00Z,-4.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:46:21.890507,XGBRegressor
|
403 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:48:20.529210,XGBRegressor
|
404 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:56:39.752360,XGBRegressor
|
405 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2477162251881952,36.76609039306641,26546.0,1697.316650390625,2024-08-10 18:56:45.593752,XGBRegressor
|
406 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2331247374089938,36.706352233886726,15422.9,1126.3240966796875,2024-08-10 18:56:48.728215,XGBRegressor
|
407 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:56:51.344084,XGBRegressor
|
408 |
+
2024-08-10T00:00:00Z,51.056534,5.1691684,-1.2739575,36.8118501,30275.7,3480.389404296875,2024-08-10 18:57:04.451856,XGBRegressor
|
409 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:57:05.089573,XGBRegressor
|
410 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:58:34.611542,XGBRegressor
|
411 |
+
2024-08-10T00:00:00Z,-1.233656967337848,36.70583724975587,-1.2739575,36.8118501,17353.0,1568.106201171875,2024-08-10 18:58:39.808413,XGBRegressor
|
412 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:58:44.609055,XGBRegressor
|
413 |
+
2024-08-10T00:00:00Z,51.056534,5.1691684,-1.2739575,36.8118501,30275.7,3480.389404296875,2024-08-10 18:58:49.459257,XGBRegressor
|
414 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:58:49.977286,XGBRegressor
|
415 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:59:37.798048,XGBRegressor
|
416 |
+
2024-08-10T00:00:00Z,51.056534,5.1691684,-1.2739575,36.8118501,30275.7,3480.389404296875,2024-08-10 18:59:47.499589,XGBRegressor
|
417 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 18:59:48.016985,XGBRegressor
|
418 |
+
2024-08-10T00:00:00Z,51.056534,5.1691684,-1.2739575,36.8118501,30275.7,3480.389404296875,2024-08-10 19:00:21.338523,XGBRegressor
|
419 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:00:21.811014,XGBRegressor
|
420 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:02:46.654748,XGBRegressor
|
421 |
+
2024-08-10T00:00:00Z,-1.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:02:57.598865,XGBRegressor
|
422 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:02:58.116540,XGBRegressor
|
423 |
+
2024-08-10T00:00:00Z,-1.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:03:01.344532,XGBRegressor
|
424 |
+
2024-08-10T00:00:00Z,-2.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:03:08.271111,XGBRegressor
|
425 |
+
2024-08-10T00:00:00Z,-3.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:03:09.379550,XGBRegressor
|
426 |
+
2024-08-10T00:00:00Z,-4.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:03:10.516385,XGBRegressor
|
427 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:03:11.012515,XGBRegressor
|
428 |
+
2024-08-10T00:00:00Z,-1.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:04:32.306019,XGBRegressor
|
429 |
+
2024-08-10T00:00:00Z,-2.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:04:33.711463,XGBRegressor
|
430 |
+
2024-08-10T00:00:00Z,-3.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:04:35.788267,XGBRegressor
|
431 |
+
2024-08-10T00:00:00Z,-4.8995204,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:04:36.261309,XGBRegressor
|
432 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:04:47.922311,XGBRegressor
|
433 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:05:08.216059,XGBRegressor
|
434 |
+
2024-08-10T00:00:00Z,-1.2226766361783479,36.72763824462891,-1.2739575,36.8118501,14349.9,1724.0120849609375,2024-08-10 19:05:25.969028,XGBRegressor
|
435 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:05:34.115372,XGBRegressor
|
436 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:12:40.842227,XGBRegressor
|
437 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2171772284580045,36.77982330322266,26424.1,1710.220947265625,2024-08-10 19:12:46.613126,XGBRegressor
|
438 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.185762071910128,36.70841217041016,25238.7,1464.56396484375,2024-08-10 19:12:49.529664,XGBRegressor
|
439 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.185762071910128,36.70841217041016,25238.7,1464.56396484375,2024-08-10 19:12:53.733545,XGBRegressor
|
440 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:12:54.221424,XGBRegressor
|
441 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:13:19.355479,XGBRegressor
|
442 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:14:21.459903,XGBRegressor
|
443 |
+
2024-08-10T00:00:00Z,-1.2382892809777724,36.70480728149415,-1.2739575,36.8118501,15712.1,1560.776611328125,2024-08-10 19:14:26.574038,XGBRegressor
|
444 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:16:34.138114,XGBRegressor
|
445 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2355349819934454,36.77209854125977,22522.0,1671.9000244140625,2024-08-10 19:16:47.913422,XGBRegressor
|
446 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2264297492467666,36.750812530517585,22519.9,1564.9390869140625,2024-08-10 19:16:51.118532,XGBRegressor
|
447 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2334611431163052,36.728067398071296,18113.0,1297.483154296875,2024-08-10 19:16:59.474416,XGBRegressor
|
448 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.239811351790342,36.71133041381837,16992.1,1105.705810546875,2024-08-10 19:17:02.445635,XGBRegressor
|
449 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2424726456032664,36.694164276123054,13201.2,1173.581787109375,2024-08-10 19:17:08.869014,XGBRegressor
|
450 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2452185533092621,36.67922973632813,14296.7,1249.5877685546875,2024-08-10 19:17:12.533399,XGBRegressor
|
451 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:18:04.053993,XGBRegressor
|
452 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2550935704374027,36.74686431884766,24421.8,1595.872802734375,2024-08-10 19:18:09.339345,XGBRegressor
|
453 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:18:30.167396,XGBRegressor
|
454 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2556082681679697,36.78668975830079,28468.1,1884.7978515625,2024-08-10 19:18:44.329582,XGBRegressor
|
455 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:19:49.076273,XGBRegressor
|
456 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2547504385607586,36.77707672119141,28050.4,1911.6507568359375,2024-08-10 19:19:55.035996,XGBRegressor
|
457 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2547504385607586,36.77707672119141,28050.4,1911.6507568359375,2024-08-10 19:20:03.287938,XGBRegressor
|
458 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:20:03.804308,XGBRegressor
|
459 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:21:05.469947,XGBRegressor
|
460 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.252348514164674,36.7734718322754,26483.7,1782.0303955078125,2024-08-10 19:21:10.166769,XGBRegressor
|
461 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2350134428330684,36.74137115478516,19125.4,1320.391357421875,2024-08-10 19:21:13.620663,XGBRegressor
|
462 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:21:22.624327,XGBRegressor
|
463 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:22:30.969318,XGBRegressor
|
464 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2667600273749045,36.80780410766602,29630.3,2246.46826171875,2024-08-10 19:23:50.388590,XGBRegressor
|
465 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2624686157291516,36.77724838256837,16755.3,1350.7723388671875,2024-08-10 19:23:57.974271,XGBRegressor
|
466 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2583496852318137,36.74171447753907,22976.9,1494.652587890625,2024-08-10 19:24:00.601832,XGBRegressor
|
467 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:24:11.385953,XGBRegressor
|
468 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:26:52.894335,XGBRegressor
|
469 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:28:48.681104,XGBRegressor
|
470 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2355349819934454,36.73553466796876,18868.1,1336.0697021484375,2024-08-10 19:28:55.820268,XGBRegressor
|
471 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2355349819934454,36.73553466796876,18868.1,1336.0697021484375,2024-08-10 19:29:02.644992,XGBRegressor
|
472 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:29:03.158643,XGBRegressor
|
473 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:29:15.964147,XGBRegressor
|
474 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2149468386355708,36.75373077392579,22069.4,1509.060791015625,2024-08-10 19:29:53.977055,XGBRegressor
|
475 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:29:58.619733,XGBRegressor
|
476 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2430839280547008,36.737594604492195,18514.8,1276.247314453125,2024-08-10 19:30:05.892293,XGBRegressor
|
477 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2430839280547008,36.737594604492195,18514.8,1276.247314453125,2024-08-10 19:30:29.921414,XGBRegressor
|
478 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:30:30.406533,XGBRegressor
|
479 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 19:58:57.143702,XGBRegressor
|
480 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2458289940056284,36.778793334960945,27208.6,1881.69287109375,2024-08-10 19:59:03.103440,XGBRegressor
|
481 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2156242129428432,36.72420501708985,22227.5,1399.1761474609375,2024-08-10 19:59:06.096346,XGBRegressor
|
482 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:04:14.625594,XGBRegressor
|
483 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.24102512671833,36.71270370483399,16769.1,1111.2071533203125,2024-08-10 20:04:20.783887,XGBRegressor
|
484 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2578282048562803,36.66961669921876,9207.9,1025.0653076171875,2024-08-10 20:04:23.775024,XGBRegressor
|
485 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:04:25.575746,XGBRegressor
|
486 |
+
2024-08-10T00:00:00Z,-1.2369167444455962,36.714591979980476,-1.2739575,36.8118501,13448.9,1585.31982421875,2024-08-10 20:04:29.395386,XGBRegressor
|
487 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:04:49.627359,XGBRegressor
|
488 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2228389789452672,36.76111221313477,23750.7,1580.15966796875,2024-08-10 20:05:57.565334,XGBRegressor
|
489 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:06:08.276230,XGBRegressor
|
490 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:07:49.281761,XGBRegressor
|
491 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2355349819934454,36.79407119750977,26423.9,1938.5538330078125,2024-08-10 20:08:19.804736,XGBRegressor
|
492 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:08:24.222244,XGBRegressor
|
493 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:13:04.072539,XGBRegressor
|
494 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:13:04.741151,XGBRegressor
|
495 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:14:24.192998,XGBRegressor
|
496 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:14:24.661499,XGBRegressor
|
497 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:15:00.226471,XGBRegressor
|
498 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:15:43.596765,XGBRegressor
|
499 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:15:44.177699,XGBRegressor
|
500 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:16:15.560410,XGBRegressor
|
501 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:17:53.119511,XGBRegressor
|
502 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:18:17.915799,XGBRegressor
|
503 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:19:32.410238,XGBRegressor
|
504 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:20:16.450353,XGBRegressor
|
505 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:20:31.571371,XGBRegressor
|
506 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:20:48.543003,XGBRegressor
|
507 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:21:36.471781,XGBRegressor
|
508 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:23:43.834960,XGBRegressor
|
509 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:24:59.562770,XGBRegressor
|
510 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:26:23.941601,XGBRegressor
|
511 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:27:39.253025,XGBRegressor
|
512 |
+
2024-08-10T00:00:00Z,-1.2427500197949533,36.699142456054695,-1.2739575,36.8118501,15301.2,1536.0408935546875,2024-08-10 20:28:34.269667,XGBRegressor
|
513 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:28:58.088115,XGBRegressor
|
514 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2434270614547671,36.795272827148445,25505.7,1876.41552734375,2024-08-10 20:29:08.190716,XGBRegressor
|
515 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2173391374262845,36.77982330322266,26432.0,1710.220947265625,2024-08-10 20:29:11.734215,XGBRegressor
|
516 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:30:24.892623,XGBRegressor
|
517 |
+
2024-08-10T00:00:00Z,-1.2545880977489388,36.70875549316407,-1.2739575,36.8118501,14463.6,1523.47705078125,2024-08-10 20:30:29.062120,XGBRegressor
|
518 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:30:34.629746,XGBRegressor
|
519 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:30:35.128765,XGBRegressor
|
520 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:34:17.033842,XGBRegressor
|
521 |
+
2024-08-10T00:00:00Z,-1.2547596637035199,36.70429229736329,-1.2739575,36.8118501,13965.8,1440.854736328125,2024-08-10 20:34:23.055012,XGBRegressor
|
522 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:34:32.297462,XGBRegressor
|
523 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:36:24.424727,XGBRegressor
|
524 |
+
2024-08-10T00:00:00Z,-1.2600782027071957,36.70309066772462,-1.2739575,36.8118501,15191.7,1542.8192138671875,2024-08-10 20:36:28.151776,XGBRegressor
|
525 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:36:30.402445,XGBRegressor
|
526 |
+
2024-08-10T00:00:00Z,-1.238460847994315,36.693649291992195,-1.2739575,36.8118501,15584.2,1583.0086669921875,2024-08-10 20:36:33.015992,XGBRegressor
|
527 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:36:37.953309,XGBRegressor
|
528 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:40:27.595186,XGBRegressor
|
529 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2477162251881952,36.78085327148438,23344.8,1578.298828125,2024-08-10 20:40:31.894264,XGBRegressor
|
530 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:40:37.929172,XGBRegressor
|
531 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:41:22.986847,XGBRegressor
|
532 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.256122965797153,36.77433013916016,25871.2,1857.8565673828125,2024-08-10 20:41:30.257078,XGBRegressor
|
533 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:41:35.696246,XGBRegressor
|
534 |
+
2024-08-10T00:00:00Z,-1.2540733998176408,36.70068740844727,-1.2739575,36.8118501,13600.5,1487.8428955078125,2024-08-10 20:41:38.154168,XGBRegressor
|
535 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:41:43.343507,XGBRegressor
|
536 |
+
2024-08-10T00:00:00Z,-1.2619654236166855,36.70171737670899,-1.2739575,36.8118501,13821.1,1487.8428955078125,2024-08-10 20:41:47.818880,XGBRegressor
|
537 |
+
2024-08-10T00:00:00Z,-1.224207724089526,36.72901153564454,-1.2739575,36.8118501,13839.9,1886.460205078125,2024-08-10 20:41:50.971352,XGBRegressor
|
538 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:43:01.032574,XGBRegressor
|
539 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2406819930063788,36.76523208618165,21964.2,1574.814208984375,2024-08-10 20:43:07.004641,XGBRegressor
|
540 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:43:13.272525,XGBRegressor
|
541 |
+
2024-08-10T00:00:00Z,-1.2756906252719775,36.68575286865235,-1.2739575,36.8118501,19147.8,1847.260498046875,2024-08-10 20:43:19.105614,XGBRegressor
|
542 |
+
2024-08-10T00:00:00Z,-1.2590401264343827,36.70377731323243,-1.2739575,36.8118501,15128.4,1508.17236328125,2024-08-10 20:43:22.117875,XGBRegressor
|
543 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:45:05.317519,XGBRegressor
|
544 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:45:05.798411,XGBRegressor
|
545 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:45:22.718080,XGBRegressor
|
546 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:45:23.232252,XGBRegressor
|
547 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:46:04.028434,XGBRegressor
|
548 |
+
2024-08-10T00:00:00Z,-1.2688280335471618,36.69794082641602,-1.2739575,36.8118501,16085.7,1600.5999755859375,2024-08-10 20:46:08.894553,XGBRegressor
|
549 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:46:14.269660,XGBRegressor
|
550 |
+
2024-08-10T00:00:00Z,-1.2767200124543694,36.69347763061524,-1.2739575,36.8118501,17989.5,1589.4560546875,2024-08-10 20:46:19.790505,XGBRegressor
|
551 |
+
2024-08-10T00:00:00Z,-1.2430847963073006,36.72042846679688,-1.2739575,36.8118501,13618.6,1477.4990234375,2024-08-10 20:46:22.718980,XGBRegressor
|
552 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:50:27.127325,XGBRegressor
|
553 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2549220045047293,36.77690505981446,28040.5,1885.5150146484375,2024-08-10 20:50:32.642026,XGBRegressor
|
554 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:50:39.074166,XGBRegressor
|
555 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:53:38.890287,XGBRegressor
|
556 |
+
2024-08-10T00:00:00Z,-1.242578453056531,36.70600891113282,-1.2739575,36.8118501,14281.4,1502.6383056640625,2024-08-10 20:53:54.613089,XGBRegressor
|
557 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:54:09.626072,XGBRegressor
|
558 |
+
2024-08-10T00:00:00Z,-1.250985210105814,36.69845581054688,-1.2739575,36.8118501,14239.3,1435.3306884765625,2024-08-10 20:54:13.826987,XGBRegressor
|
559 |
+
2024-08-10T00:00:00Z,-1.207390541573438,36.728324890136726,-1.2739575,36.8118501,16454.6,1816.543212890625,2024-08-10 20:54:17.277752,XGBRegressor
|
560 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:59:18.911639,XGBRegressor
|
561 |
+
2024-08-10T00:00:00Z,-1.2614507271407076,36.72592163085938,-1.2739575,36.8118501,10301.7,1327.281494140625,2024-08-10 20:59:24.546606,XGBRegressor
|
562 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 20:59:36.433401,XGBRegressor
|
563 |
+
2024-08-10T00:00:00Z,-1.264195773835005,36.7020606994629,-1.2739575,36.8118501,14101.0,1405.12255859375,2024-08-10 20:59:40.203085,XGBRegressor
|
564 |
+
2024-08-10T00:00:00Z,-1.2286691919712238,36.723346710205085,-1.2739575,36.8118501,14743.8,1429.518798828125,2024-08-10 20:59:42.637496,XGBRegressor
|
565 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 21:06:31.729664,XGBRegressor
|
566 |
+
2024-08-10T00:00:00Z,-1.2691711635666036,36.701374053955085,-1.2739575,36.8118501,16464.0,1506.2706298828125,2024-08-10 21:06:53.271743,XGBRegressor
|
567 |
+
2024-08-10T00:00:00Z,-1.242396141678363,36.70772552490235,-1.2739575,36.8118501,14151.5,1440.854736328125,2024-08-10 21:06:56.124072,XGBRegressor
|
568 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 21:09:31.264192,XGBRegressor
|
569 |
+
2024-08-10T00:00:00Z,-1.247210751078278,36.707897186279304,-1.2739575,36.8118501,13732.2,1508.365234375,2024-08-10 21:09:48.177268,XGBRegressor
|
570 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 21:09:56.685411,XGBRegressor
|
571 |
+
2024-08-10T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-10 22:51:54.026480,XGBRegressor
|
572 |
+
2024-08-11T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-11 03:01:49.184372,XGBRegressor
|
573 |
+
2024-08-11T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-11 03:15:49.227894,XGBRegressor
|
574 |
+
2024-08-11T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-11 14:22:52.463557,XGBRegressor
|
575 |
+
2024-08-11T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-11 14:54:32.978412,XGBRegressor
|
576 |
+
2024-08-11T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-11 21:12:35.579368,XGBRegressor
|
577 |
+
2024-08-11T00:00:00Z,-1.3032036,36.6825914,-1.2739575,36.8118501,30275.7,2248.195556640625,2024-08-11 21:13:09.222020,XGBRegressor
|
578 |
+
2024-08-11T00:00:00Z,-1.280831386263176,36.68558074083211,-1.2739575,36.8118501,19552.2,1669.5150146484375,2024-08-11 21:13:15.294747,XGBRegressor
|
579 |
+
2024-08-11T00:00:00Z,-1.2628112094774315,36.68738337186743,-1.2739575,36.8118501,16316.4,1635.612060546875,2024-08-11 22:09:25.035698,XGBRegressor
|
requirements.txt
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
shiny==1.0.0
|
2 |
+
shinywidgets==0.3.2
|
3 |
+
plotly==5.23.0
|
4 |
+
plotly_calplot==0.1.20
|
5 |
+
faicons==0.2.2
|
6 |
+
geopandas==1.0.1
|
7 |
+
geopy==2.4.1
|
8 |
+
requests==2.32.3
|
9 |
+
requests-cache==1.2.1
|
10 |
+
httpx==0.27.0
|
11 |
+
cachetools==5.4.0
|
12 |
+
python-dotenv==1.0.1
|
utils/__init__.py
ADDED
File without changes
|
utils/config.py
ADDED
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from dotenv import dotenv_values
|
2 |
+
from pathlib import Path
|
3 |
+
from ipyleaflet import basemaps
|
4 |
+
|
5 |
+
from shiny.express import ui
|
6 |
+
|
7 |
+
|
8 |
+
# Paths
|
9 |
+
# ENV when using standalone shiny server, shiny for python runs from the root of the project
|
10 |
+
ENV_PATH = Path("env/online.env")
|
11 |
+
|
12 |
+
DATA = Path(__file__).parent.parent / "data/"
|
13 |
+
TEST_FILE = DATA / "Test.csv"
|
14 |
+
TRAIN_FILE = DATA / "Train.csv"
|
15 |
+
WEATHER_FILE = DATA / "Weather.csv"
|
16 |
+
HISTORY = DATA / "history/"
|
17 |
+
HISTORY_FILE = HISTORY / "history.csv"
|
18 |
+
|
19 |
+
|
20 |
+
# Models
|
21 |
+
ALL_MODELS = [
|
22 |
+
"AdaBoostRegressor",
|
23 |
+
"DecisionTreeRegressor",
|
24 |
+
"GradientBoostingRegressor",
|
25 |
+
"HistGradientBoostingRegressor",
|
26 |
+
"LinearRegression",
|
27 |
+
"RandomForestRegressor",
|
28 |
+
"XGBRegressor",
|
29 |
+
]
|
30 |
+
|
31 |
+
BEST_MODELS = ["RandomForestRegressor", "XGBRegressor"]
|
32 |
+
|
33 |
+
|
34 |
+
# Urls
|
35 |
+
TEST_FILE_URL = "https://raw.githubusercontent.com/valiantezabuku/Yassir-ETA-Prediction-Challenge-For-Azubian-Team-Curium/main/Data/Test.csv"
|
36 |
+
TRAIN_FILE_URL = "https://raw.githubusercontent.com/valiantezabuku/Yassir-ETA-Prediction-Challenge-For-Azubian-Team-Curium/main/Data/Train.csv"
|
37 |
+
WEATHER_FILE_URL = "https://raw.githubusercontent.com/valiantezabuku/Yassir-ETA-Prediction-Challenge-For-Azubian-Team-Curium/main/Data/Weather.csv"
|
38 |
+
|
39 |
+
|
40 |
+
# Load environment variables from .env file into a dictionary
|
41 |
+
environment_variables = dotenv_values(ENV_PATH)
|
42 |
+
|
43 |
+
|
44 |
+
# Get the OpenRouteService API key
|
45 |
+
# https://openrouteservice.org/dev/#/home
|
46 |
+
ors_api_key = environment_variables.get("ORS_API_TOKEN")
|
47 |
+
|
48 |
+
# https://maps.app.goo.gl/Fx5rdPs1KeA6jCeB8
|
49 |
+
KENYA_LAT = 0.15456
|
50 |
+
KENYA_LON = 37.908383
|
51 |
+
|
52 |
+
|
53 |
+
BASEMAPS = {
|
54 |
+
"DarkMatter": basemaps.CartoDB.DarkMatter,
|
55 |
+
"Mapnik": basemaps.OpenStreetMap.Mapnik,
|
56 |
+
"NatGeoWorldMap": basemaps.Esri.NatGeoWorldMap,
|
57 |
+
"WorldImagery": basemaps.Esri.WorldImagery,
|
58 |
+
}
|
59 |
+
|
60 |
+
# Yassir
|
61 |
+
BRANDCOLORS = {
|
62 |
+
"red": "#FB2576",
|
63 |
+
"purple-light": "#6316DB",
|
64 |
+
"purple-dark": "#08031A",
|
65 |
+
}
|
66 |
+
|
67 |
+
BRANDTHEMES = {
|
68 |
+
"red": ui.value_box_theme(bg=BRANDCOLORS['red'], fg='white'),
|
69 |
+
"purple-light": ui.value_box_theme(bg=BRANDCOLORS['purple-light'], fg='white'),
|
70 |
+
"purple-dark": ui.value_box_theme(bg=BRANDCOLORS['purple-dark'], fg='white'),
|
71 |
+
}
|
72 |
+
|
73 |
+
|
74 |
+
# Nairobi, https://maps.app.goo.gl/oPbLBYHuicjrC22J9
|
75 |
+
# National Museum of Kenya, https://maps.app.goo.gl/zbmUpe71admABU9i9
|
76 |
+
# Closest location
|
77 |
+
LOCATIONS = {
|
78 |
+
"Nairobi": {"latitude": -1.3032036, "longitude": 36.6825914},
|
79 |
+
"National Museum of Kenya": {"latitude": -1.2739575, "longitude": 36.8118501},
|
80 |
+
"Mombasa": {"latitude": -1.3293123, "longitude": 36.8717466},
|
81 |
+
}
|
82 |
+
|
83 |
+
|
84 |
+
HOURS = [f"{i:02}" for i in range(0, 24)]
|
85 |
+
|
86 |
+
MINUTES = [f"{i:02}" for i in range(0, 12)]
|
87 |
+
|
88 |
+
SECONDS = [f"{i:02}" for i in range(0, 60)]
|
89 |
+
|
90 |
+
|
91 |
+
ONE_MINUTE_SEC = 60
|
92 |
+
|
93 |
+
ONE_HOUR_SEC = ONE_MINUTE_SEC * 60
|
94 |
+
|
95 |
+
ONE_DAY_SEC = ONE_HOUR_SEC * 24
|
96 |
+
|
97 |
+
ONE_WEEK_SEC = ONE_DAY_SEC * 7
|
98 |
+
|
99 |
+
|
100 |
+
# Default trip distance
|
101 |
+
TRIP_DISTANCE = 30275.7
|
utils/dashboard.py
ADDED
@@ -0,0 +1,568 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from .data import test_df, train_df, weather_df, time_sec_hms, full_time_sec_hms, get_country_geojson
|
2 |
+
from .config import BRANDCOLORS, BRANDTHEMES, ALL_MODELS
|
3 |
+
import time
|
4 |
+
import requests
|
5 |
+
import requests_cache
|
6 |
+
from pathlib import Path
|
7 |
+
|
8 |
+
from faicons import icon_svg
|
9 |
+
|
10 |
+
import pandas as pd
|
11 |
+
import plotly.io as pio
|
12 |
+
import plotly.express as px
|
13 |
+
import plotly.graph_objects as go
|
14 |
+
from plotly_calplot import calplot
|
15 |
+
from plotly.subplots import make_subplots
|
16 |
+
|
17 |
+
from shiny import reactive, render, Inputs, Outputs, Session
|
18 |
+
from shiny.express import input, output, module, ui
|
19 |
+
from shinywidgets import render_plotly, render_widget
|
20 |
+
|
21 |
+
|
22 |
+
# Set pandas to display all columns
|
23 |
+
pd.set_option("display.max_columns", None)
|
24 |
+
|
25 |
+
# High precision longitudes and Latitudes
|
26 |
+
pd.set_option('display.float_format', '{:.16f}'.format)
|
27 |
+
|
28 |
+
|
29 |
+
# Yassir plotly theme
|
30 |
+
yassir_theme = pio.templates["plotly_dark"]
|
31 |
+
|
32 |
+
yassir_theme.layout.update(
|
33 |
+
plot_bgcolor=BRANDCOLORS["purple-dark"],
|
34 |
+
paper_bgcolor=BRANDCOLORS["purple-dark"],
|
35 |
+
colorway=[BRANDCOLORS["red"], BRANDCOLORS["purple-light"],
|
36 |
+
BRANDCOLORS["purple-dark"]], # Brand colors
|
37 |
+
)
|
38 |
+
|
39 |
+
pio.templates["yassir_theme"] = yassir_theme
|
40 |
+
|
41 |
+
pio.templates.default = yassir_theme
|
42 |
+
|
43 |
+
|
44 |
+
@module
|
45 |
+
def dashboard_page(input: Inputs, output: Outputs, session: Session):
|
46 |
+
# Disable loading spinners, use elegant pulse
|
47 |
+
ui.busy_indicators.use(spinners=False)
|
48 |
+
|
49 |
+
ui.panel_title(title=ui.h1(ui.strong("Dashboard 📈")),
|
50 |
+
window_title="Yassir Dashboard")
|
51 |
+
|
52 |
+
# Link to the external CSS file
|
53 |
+
ui.tags.link(rel="stylesheet", href="styles.css")
|
54 |
+
|
55 |
+
# Add main content
|
56 |
+
ICONS = {
|
57 |
+
"eta": icon_svg("clock"),
|
58 |
+
"distance": icon_svg("route"),
|
59 |
+
"ellipsis": icon_svg("ellipsis"),
|
60 |
+
}
|
61 |
+
|
62 |
+
# Define the target column
|
63 |
+
target = 'eta'
|
64 |
+
|
65 |
+
# Columns
|
66 |
+
columns = train_df.columns.to_list()
|
67 |
+
|
68 |
+
# Weather columns
|
69 |
+
w_columns = weather_df.columns.to_list()
|
70 |
+
|
71 |
+
# Numericals
|
72 |
+
numericals = train_df.select_dtypes(include=['number']).columns.tolist()
|
73 |
+
|
74 |
+
# Input range
|
75 |
+
eta_rng = (min(train_df["eta"]), max(train_df["eta"]))
|
76 |
+
trip_distance_rng = (min(train_df["trip_distance"]),
|
77 |
+
max(train_df["trip_distance"]))
|
78 |
+
|
79 |
+
with ui.layout_sidebar():
|
80 |
+
|
81 |
+
with ui.sidebar(open="desktop"):
|
82 |
+
ui.tags.style("""
|
83 |
+
.shiny-input-container input[type="range"] {
|
84 |
+
background: linear-gradient(to right, red, #4CAF50) no-repeat;
|
85 |
+
height: 8px;
|
86 |
+
}
|
87 |
+
"""),
|
88 |
+
ui.input_slider(
|
89 |
+
"trip_distance",
|
90 |
+
"Trip Distance",
|
91 |
+
min=trip_distance_rng[0],
|
92 |
+
max=trip_distance_rng[1],
|
93 |
+
value=trip_distance_rng,
|
94 |
+
post=" m",
|
95 |
+
)
|
96 |
+
ui.input_slider(
|
97 |
+
"eta",
|
98 |
+
"ETA",
|
99 |
+
min=eta_rng[0],
|
100 |
+
max=eta_rng[1],
|
101 |
+
value=eta_rng,
|
102 |
+
post=" sec",
|
103 |
+
)
|
104 |
+
|
105 |
+
ui.input_action_button("reset", "Reset filter")
|
106 |
+
|
107 |
+
# KPIs
|
108 |
+
with ui.layout_column_wrap(fill=False):
|
109 |
+
with ui.value_box(showcase=ICONS["eta"], theme=BRANDTHEMES['purple-dark']):
|
110 |
+
"ETA (Total)"
|
111 |
+
|
112 |
+
@reactive.calc
|
113 |
+
def total_eta():
|
114 |
+
return float(train_data().eta.sum())
|
115 |
+
|
116 |
+
@render.text
|
117 |
+
def ts():
|
118 |
+
return f"{round(total_eta()):,} s"
|
119 |
+
|
120 |
+
@render.text
|
121 |
+
def thms():
|
122 |
+
return full_time_sec_hms(total_eta())
|
123 |
+
|
124 |
+
with ui.value_box(showcase=ICONS["eta"], theme=BRANDTHEMES['purple-dark']):
|
125 |
+
"ETA (Median)"
|
126 |
+
|
127 |
+
@reactive.calc
|
128 |
+
def median_eta():
|
129 |
+
d = train_data()
|
130 |
+
m_eta = None
|
131 |
+
if d.shape[0] > 0:
|
132 |
+
m_eta = d.eta.median()
|
133 |
+
return m_eta
|
134 |
+
|
135 |
+
@render.text
|
136 |
+
def ms():
|
137 |
+
return f"{round(median_eta()):,} s"
|
138 |
+
|
139 |
+
@render.text
|
140 |
+
def mhms():
|
141 |
+
return time_sec_hms(median_eta())
|
142 |
+
|
143 |
+
with ui.value_box(showcase=ICONS["distance"], theme=BRANDTHEMES['purple-light']):
|
144 |
+
"TRIP DISTANCE (Total)"
|
145 |
+
|
146 |
+
@reactive.calc
|
147 |
+
def total_trip():
|
148 |
+
return float(train_data().trip_distance.sum())
|
149 |
+
|
150 |
+
@render.text
|
151 |
+
def tdkm():
|
152 |
+
return f"{total_trip()/1000:,.1f} km"
|
153 |
+
|
154 |
+
@render.text
|
155 |
+
def tdm():
|
156 |
+
return f"{total_trip():,.1f} m"
|
157 |
+
|
158 |
+
with ui.value_box(showcase=ICONS["distance"], theme=BRANDTHEMES['purple-light']):
|
159 |
+
"TRIP DISTANCE (Median)"
|
160 |
+
|
161 |
+
@reactive.calc
|
162 |
+
def median_trip():
|
163 |
+
d = train_data()
|
164 |
+
m_trip = None
|
165 |
+
if d.shape[0] > 0:
|
166 |
+
m_trip = d.trip_distance.median()
|
167 |
+
return m_trip
|
168 |
+
|
169 |
+
@render.text
|
170 |
+
def mtdkm():
|
171 |
+
return f"{median_trip()/1000:,.1f} km"
|
172 |
+
|
173 |
+
@render.text
|
174 |
+
def mtdm():
|
175 |
+
return f"{median_trip():,.1f} m"
|
176 |
+
|
177 |
+
# Dataset view
|
178 |
+
with ui.layout_column_wrap(fill=False):
|
179 |
+
with ui.navset_card_pill(id="data_tab"):
|
180 |
+
with ui.nav_panel("Train data"):
|
181 |
+
with ui.card(full_screen=True):
|
182 |
+
ui.card_header("Train data")
|
183 |
+
|
184 |
+
@render.data_frame
|
185 |
+
def train_table():
|
186 |
+
return render.DataGrid(train_data(), filters=True)
|
187 |
+
|
188 |
+
with ui.nav_panel("Test data"):
|
189 |
+
with ui.card(full_screen=True):
|
190 |
+
ui.card_header("Test data")
|
191 |
+
|
192 |
+
@render.data_frame
|
193 |
+
def test_table():
|
194 |
+
return render.DataGrid(test_df)
|
195 |
+
|
196 |
+
with ui.nav_panel("Weather data"):
|
197 |
+
with ui.card(full_screen=True):
|
198 |
+
ui.card_header("Weather data")
|
199 |
+
|
200 |
+
@render.data_frame
|
201 |
+
def weather_table():
|
202 |
+
return render.DataGrid(weather_df)
|
203 |
+
|
204 |
+
value = "Explore the visualizations"
|
205 |
+
with ui.accordion(id="plot_acc", open=value):
|
206 |
+
with ui.accordion_panel(title=ui.strong(value), value=value):
|
207 |
+
with ui.navset_card_pill(id="eda_tab"):
|
208 |
+
with ui.nav_panel("Train features"):
|
209 |
+
with ui.card(full_screen=True):
|
210 |
+
ui.card_header(
|
211 |
+
"Correlation in the Train features")
|
212 |
+
|
213 |
+
@render_plotly
|
214 |
+
def train_features():
|
215 |
+
numeric_correlation_matrix = train_data()[
|
216 |
+
numericals].corr()
|
217 |
+
# Create heatmap trace
|
218 |
+
heatmap_trace = go.Heatmap(
|
219 |
+
z=numeric_correlation_matrix.values,
|
220 |
+
x=numeric_correlation_matrix.columns,
|
221 |
+
y=numeric_correlation_matrix.index,
|
222 |
+
colorbar=dict(title='coefficient'),
|
223 |
+
colorscale="Agsunset",
|
224 |
+
texttemplate='%{z:.3f}',
|
225 |
+
)
|
226 |
+
|
227 |
+
# Create figure
|
228 |
+
fig = go.Figure(data=[heatmap_trace])
|
229 |
+
|
230 |
+
return fig
|
231 |
+
|
232 |
+
with ui.nav_panel("Trip distance vs Eta"):
|
233 |
+
with ui.card(full_screen=True):
|
234 |
+
ui.card_header(
|
235 |
+
"Relationship between Trip Distance and ETA")
|
236 |
+
|
237 |
+
@render_plotly
|
238 |
+
def scatterplot():
|
239 |
+
return px.scatter(
|
240 |
+
train_data(),
|
241 |
+
x='trip_distance',
|
242 |
+
y='eta',
|
243 |
+
trendline='ols',
|
244 |
+
trendline_color_override=BRANDCOLORS["purple-light"],
|
245 |
+
labels={
|
246 |
+
'eta': 'Eta (seconds)', 'trip_distance': 'Trip Distance (meters)'},
|
247 |
+
)
|
248 |
+
|
249 |
+
with ui.nav_panel("Distribution"):
|
250 |
+
with ui.card(full_screen=True):
|
251 |
+
ui.card_header("Distribution per train column")
|
252 |
+
with ui.popover(title="Choose a train column"):
|
253 |
+
ICONS["ellipsis"]
|
254 |
+
ui.input_radio_buttons(
|
255 |
+
"train_col",
|
256 |
+
"Select:",
|
257 |
+
numericals,
|
258 |
+
selected="eta",
|
259 |
+
inline=True,
|
260 |
+
)
|
261 |
+
|
262 |
+
@render_plotly
|
263 |
+
def distribution():
|
264 |
+
column = input.train_col()
|
265 |
+
data = train_data()
|
266 |
+
fig1 = px.violin(data, x=column, box=True)
|
267 |
+
|
268 |
+
fig2 = px.histogram(data, x=column)
|
269 |
+
|
270 |
+
# Create a subplot layout with 1 row and 2 columns
|
271 |
+
fig = make_subplots(rows=1, cols=2)
|
272 |
+
|
273 |
+
# Add traces from fig1 to the subplot
|
274 |
+
for trace in fig1.data:
|
275 |
+
fig.add_trace(trace, row=1, col=1)
|
276 |
+
|
277 |
+
# Add traces from fig2 to the subplot
|
278 |
+
for trace in fig2.data:
|
279 |
+
fig.add_trace(trace, row=1, col=2)
|
280 |
+
|
281 |
+
# Update layout
|
282 |
+
fig.update_layout(title_text=f"Distribution in the {column} column",
|
283 |
+
showlegend=True,
|
284 |
+
legend_title_text=target
|
285 |
+
)
|
286 |
+
|
287 |
+
return fig
|
288 |
+
|
289 |
+
with ui.nav_panel("Weather features vs Eta"):
|
290 |
+
with ui.card(full_screen=True):
|
291 |
+
ui.card_header(
|
292 |
+
"Relationship between weather features and Median Eta in seconds")
|
293 |
+
with ui.popover(title="Choose a feature column"):
|
294 |
+
ICONS["ellipsis"]
|
295 |
+
ui.input_radio_buttons(
|
296 |
+
"weather_col",
|
297 |
+
"Select:",
|
298 |
+
[col for col in w_columns if col != "date"],
|
299 |
+
selected="dewpoint_2m_temperature",
|
300 |
+
inline=True,
|
301 |
+
)
|
302 |
+
|
303 |
+
@render_plotly
|
304 |
+
def weather_eta():
|
305 |
+
column = input.weather_col()
|
306 |
+
|
307 |
+
fig = px.scatter(
|
308 |
+
x=daily_weather_eta_df()[column],
|
309 |
+
y=daily_weather_eta_df()[target],
|
310 |
+
)
|
311 |
+
|
312 |
+
# Update layout
|
313 |
+
fig.update_layout(
|
314 |
+
title_text=f"Distribution in the {column} column",
|
315 |
+
showlegend=False
|
316 |
+
)
|
317 |
+
|
318 |
+
fig.update_xaxes(title_text=column) # Set x-axis title
|
319 |
+
fig.update_yaxes(title_text=target) # Set y-axis title
|
320 |
+
|
321 |
+
return fig
|
322 |
+
|
323 |
+
value = "More Visualizations..."
|
324 |
+
with ui.accordion_panel(title=ui.strong(value), value=value):
|
325 |
+
with ui.navset_card_pill(id="more_visualizations"):
|
326 |
+
with ui.nav_panel("Weather vs Eta"):
|
327 |
+
with ui.card(full_screen=True):
|
328 |
+
ui.card_header(
|
329 |
+
"Weather vs Eta Features summary")
|
330 |
+
|
331 |
+
@render_plotly
|
332 |
+
def eta_weather_summary():
|
333 |
+
daily_weather_eta_correlation_matrix = daily_weather_eta_df().corr().sort_values(by='eta')
|
334 |
+
|
335 |
+
# Create heatmap trace
|
336 |
+
heatmap_trace = go.Heatmap(
|
337 |
+
z=daily_weather_eta_correlation_matrix[[
|
338 |
+
'eta']].values,
|
339 |
+
x=daily_weather_eta_correlation_matrix[[
|
340 |
+
'eta']].columns,
|
341 |
+
y=daily_weather_eta_correlation_matrix[[
|
342 |
+
'eta']].index,
|
343 |
+
colorbar=dict(title='Coefficient'),
|
344 |
+
colorscale="Agsunset",
|
345 |
+
texttemplate='%{z:.3f}',
|
346 |
+
)
|
347 |
+
|
348 |
+
# Create figure
|
349 |
+
fig = go.Figure(data=[heatmap_trace])
|
350 |
+
|
351 |
+
return fig
|
352 |
+
|
353 |
+
with ui.nav_panel("Top locations"):
|
354 |
+
with ui.card(full_screen=True):
|
355 |
+
ui.card_header(
|
356 |
+
"Top 10 Most Common Origin and Destination Locations")
|
357 |
+
with ui.popover(title="Origin or Destination?"):
|
358 |
+
ICONS["ellipsis"]
|
359 |
+
ui.input_radio_buttons(
|
360 |
+
"location_type",
|
361 |
+
"Select:",
|
362 |
+
["origin", "destination"],
|
363 |
+
selected="origin",
|
364 |
+
inline=True,
|
365 |
+
)
|
366 |
+
|
367 |
+
@render_plotly
|
368 |
+
def top_locations():
|
369 |
+
location_type = input.location_type()
|
370 |
+
top_10_origin, top_10_dest = top_bottom_location()[
|
371 |
+
0]
|
372 |
+
|
373 |
+
data = top_10_origin if location_type == "origin" else top_10_dest
|
374 |
+
# Prepare data for origin locations
|
375 |
+
data.sort_values(by='count', inplace=True)
|
376 |
+
data['location'] = data.sort_values(by='count').apply(
|
377 |
+
lambda row: f"({row[f'{location_type}_lat']}, {row[f'{location_type}_lon']})", axis=1)
|
378 |
+
|
379 |
+
fig = go.Figure()
|
380 |
+
|
381 |
+
fig.add_trace(
|
382 |
+
go.Bar(
|
383 |
+
x=data['count'],
|
384 |
+
y=data['location'],
|
385 |
+
orientation='h',
|
386 |
+
marker=dict(
|
387 |
+
color=BRANDCOLORS['purple-light'] if location_type == "origin" else BRANDCOLORS['red']),
|
388 |
+
name=f'{location_type.title()} Locations'
|
389 |
+
)
|
390 |
+
)
|
391 |
+
|
392 |
+
# Update layout
|
393 |
+
fig.update_layout(
|
394 |
+
xaxis_title=f'{location_type.title()} Locations',
|
395 |
+
yaxis_title='Number of Rides',
|
396 |
+
showlegend=False
|
397 |
+
)
|
398 |
+
|
399 |
+
return fig
|
400 |
+
|
401 |
+
with ui.nav_panel("Trips by hour"):
|
402 |
+
with ui.card(full_screen=True):
|
403 |
+
ui.card_header(
|
404 |
+
"No of trips by Hour of the day")
|
405 |
+
with ui.popover(title="Average or Median?"):
|
406 |
+
ICONS["ellipsis"]
|
407 |
+
ui.input_radio_buttons(
|
408 |
+
"trip_agg",
|
409 |
+
"Select:",
|
410 |
+
["average", "median"],
|
411 |
+
selected="median",
|
412 |
+
inline=True,
|
413 |
+
)
|
414 |
+
|
415 |
+
@render_plotly
|
416 |
+
def trips_by_hour():
|
417 |
+
trip_agg = input.trip_agg()
|
418 |
+
|
419 |
+
# Create a DataFrame with only the Timestamp column
|
420 |
+
time_df = train_data()[['timestamp']]
|
421 |
+
|
422 |
+
# Extract the hour from the timestamp and add it as a new column
|
423 |
+
time_df = time_df.assign(hour=time_df['timestamp'].dt.hour)
|
424 |
+
|
425 |
+
# Count the number of trips for each hour of the day
|
426 |
+
tps = time_df['hour'].value_counts().sort_index().reset_index().rename(
|
427 |
+
columns={'hour': 'Hour', 'count': f'{trip_agg.title()} number of Trips'})
|
428 |
+
|
429 |
+
# Calculate the average number of trips per hour (Note: This line might not be necessary as 'trips_per_hour' already represents counts per hour)
|
430 |
+
if trip_agg == "median":
|
431 |
+
agg_trips_per_hour = tps.groupby(
|
432 |
+
'Hour')[f'{trip_agg.title()} number of Trips'].median().reset_index()
|
433 |
+
else:
|
434 |
+
agg_trips_per_hour = tps.groupby(
|
435 |
+
'Hour')[f'{trip_agg.title()} number of Trips'].mean().reset_index()
|
436 |
+
|
437 |
+
# Plot count ETA by hour
|
438 |
+
fig = px.line(
|
439 |
+
agg_trips_per_hour, x='Hour', y=f'{trip_agg.title()} number of Trips')
|
440 |
+
|
441 |
+
return fig
|
442 |
+
|
443 |
+
with ui.nav_panel("Mapping dataset locations"):
|
444 |
+
with ui.card(full_screen=True):
|
445 |
+
ui.card_header(
|
446 |
+
"Map of locations in the train dataset")
|
447 |
+
|
448 |
+
@render_plotly
|
449 |
+
def location_map():
|
450 |
+
country, geojson, data = get_country_geojson()
|
451 |
+
data['country'] = country
|
452 |
+
fig = px.scatter_geo(
|
453 |
+
data,
|
454 |
+
locations='country',
|
455 |
+
hover_name='country',
|
456 |
+
geojson=geojson,
|
457 |
+
fitbounds='geojson',
|
458 |
+
)
|
459 |
+
|
460 |
+
# Add longitude and latitude points
|
461 |
+
fig.add_scattergeo(
|
462 |
+
lon=data['longitude'],
|
463 |
+
lat=data['latitude'],
|
464 |
+
mode='markers',
|
465 |
+
marker=dict(
|
466 |
+
color=BRANDCOLORS["red"],
|
467 |
+
),
|
468 |
+
name='Locations in dataset'
|
469 |
+
)
|
470 |
+
|
471 |
+
# Add annotation to the map
|
472 |
+
fig.add_annotation(
|
473 |
+
text=f"{country}",
|
474 |
+
showarrow=False,
|
475 |
+
font=dict(size=18),
|
476 |
+
align="center"
|
477 |
+
)
|
478 |
+
|
479 |
+
fig.update_layout(
|
480 |
+
title=f'Dataset locations in {country}',
|
481 |
+
geo_scope='africa'
|
482 |
+
)
|
483 |
+
|
484 |
+
return fig
|
485 |
+
|
486 |
+
|
487 |
+
value = "Model Explainer"
|
488 |
+
with ui.accordion_panel(title=ui.strong(value), value=value):
|
489 |
+
with ui.navset_card_pill(id="model_explainer"):
|
490 |
+
with ui.nav_panel("Model Explainer..."):
|
491 |
+
with ui.card(full_screen=True):
|
492 |
+
ui.card_header("Coming Soon...")
|
493 |
+
|
494 |
+
ui.h3("Models")
|
495 |
+
@render.ui
|
496 |
+
def all_models():
|
497 |
+
return ui.tags.ul(
|
498 |
+
[ui.tags.li(item) for item in ALL_MODELS]
|
499 |
+
)
|
500 |
+
|
501 |
+
# ui.include_css("styles.css")
|
502 |
+
|
503 |
+
# --------------------------------------------------------
|
504 |
+
# Reactive calculations and effects
|
505 |
+
# --------------------------------------------------------
|
506 |
+
|
507 |
+
@reactive.calc
|
508 |
+
def train_data():
|
509 |
+
trip_distances = input.trip_distance()
|
510 |
+
idx1 = train_df.trip_distance.between(
|
511 |
+
trip_distances[0], trip_distances[1])
|
512 |
+
eta = input.eta()
|
513 |
+
idx2 = train_df.eta.between(eta[0], eta[1])
|
514 |
+
return train_df[idx1 & idx2]
|
515 |
+
|
516 |
+
@reactive.calc
|
517 |
+
def daily_weather_eta_df():
|
518 |
+
# Select relevant columns from the training DataFrame
|
519 |
+
time_eta_df = train_data()[['timestamp', 'eta']]
|
520 |
+
|
521 |
+
# Extract the date from the timestamp
|
522 |
+
time_eta_df = time_eta_df.assign(
|
523 |
+
date=pd.to_datetime(time_eta_df['timestamp'].dt.date))
|
524 |
+
|
525 |
+
# Prepare daily aggregated ETA data
|
526 |
+
daily_eta_df = (
|
527 |
+
time_eta_df
|
528 |
+
# Remove the 'timestamp' column as it's no longer needed
|
529 |
+
.drop(columns=['timestamp'])
|
530 |
+
# Set 'date' as the index for resampling
|
531 |
+
.set_index('date')
|
532 |
+
# Resample the data on a daily frequency
|
533 |
+
.resample('D')
|
534 |
+
.median() # Compute the median ETA for each day
|
535 |
+
.reset_index() # Reset the index to include 'date' as a column
|
536 |
+
)
|
537 |
+
|
538 |
+
# Merge the daily ETA data with the weather data
|
539 |
+
return (
|
540 |
+
pd.merge(daily_eta_df, weather_df, left_on='date', right_on='date')
|
541 |
+
.drop(columns=['date'])
|
542 |
+
)
|
543 |
+
|
544 |
+
@reactive.calc
|
545 |
+
def top_bottom_location():
|
546 |
+
# Group by origin locations and count occurrences
|
547 |
+
origin_counts = train_data().groupby(['origin_lat', 'origin_lon'])[
|
548 |
+
'origin_lon'].count().reset_index(name='count')
|
549 |
+
|
550 |
+
# Sort by count in descending order
|
551 |
+
top_origin = origin_counts.nlargest(10, columns=['count'])
|
552 |
+
bottom_origin = origin_counts.nsmallest(10, columns=['count'])
|
553 |
+
|
554 |
+
# Group by destination locations and count occurrences
|
555 |
+
destination_counts = train_data().groupby(['destination_lat', 'destination_lon'])[
|
556 |
+
'destination_lon'].count().reset_index(name='count')
|
557 |
+
|
558 |
+
# Sort by count in descending order
|
559 |
+
top_dest = destination_counts.nlargest(10, columns=['count'])
|
560 |
+
bottom_dest = destination_counts.nsmallest(10, columns=['count'])
|
561 |
+
|
562 |
+
return [(top_origin, top_dest), (bottom_origin, bottom_dest)]
|
563 |
+
|
564 |
+
@reactive.effect
|
565 |
+
@reactive.event(input.reset)
|
566 |
+
def _():
|
567 |
+
ui.update_slider("trip_distance", value=trip_distance_rng)
|
568 |
+
ui.update_slider("eta", value=eta_rng)
|
utils/data.py
ADDED
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import logging
|
2 |
+
import requests
|
3 |
+
import requests_cache
|
4 |
+
from geopy.geocoders import Nominatim
|
5 |
+
from utils.config import WEATHER_FILE, WEATHER_FILE_URL, TEST_FILE, TEST_FILE_URL, TRAIN_FILE, TRAIN_FILE_URL, ONE_WEEK_SEC
|
6 |
+
from cachetools import TTLCache, cached
|
7 |
+
from typing import List, Dict
|
8 |
+
from pathlib import Path
|
9 |
+
import time
|
10 |
+
|
11 |
+
import pandas as pd
|
12 |
+
# Set pandas to display all columns
|
13 |
+
pd.set_option("display.max_columns", None)
|
14 |
+
|
15 |
+
# High precision longitudes and Latitudes
|
16 |
+
pd.set_option('display.float_format', '{:.16f}'.format)
|
17 |
+
|
18 |
+
# Install persistent cache
|
19 |
+
requests_cache.install_cache('yassir_requests_cache', expire_after=ONE_WEEK_SEC) # Cache expires after 1 week
|
20 |
+
|
21 |
+
|
22 |
+
# Log
|
23 |
+
logging.basicConfig(level=logging.ERROR,
|
24 |
+
format='%(asctime)s - %(levelname)s - %(message)s')
|
25 |
+
|
26 |
+
# Date columns to parse
|
27 |
+
parse_dates = ['Timestamp']
|
28 |
+
|
29 |
+
dtype = {
|
30 |
+
'Origin_lat': 'float64',
|
31 |
+
'Origin_lon': 'float64',
|
32 |
+
'Destination_lat': 'float64',
|
33 |
+
'Destination_lon': 'float64',
|
34 |
+
}
|
35 |
+
|
36 |
+
dtype_weather = {
|
37 |
+
'dewpoint_2m_temperature': 'float64',
|
38 |
+
'maximum_2m_air_temperature': 'float64',
|
39 |
+
'mean_2m_air_temperature': 'float64',
|
40 |
+
'mean_sea_level_pressure': 'float64',
|
41 |
+
'minimum_2m_air_temperature': 'float64',
|
42 |
+
'surface_pressure': 'float64',
|
43 |
+
'total_precipitation': 'float64',
|
44 |
+
'u_component_of_wind_10m': 'float64',
|
45 |
+
'v_component_of_wind_10m': 'float64',
|
46 |
+
}
|
47 |
+
|
48 |
+
# Load CSV files
|
49 |
+
|
50 |
+
|
51 |
+
# @cached(cache=TTLCache(maxsize=100000, ttl=ONE_WEEK_SEC)) # Memory # change cache library
|
52 |
+
def get_data_df(file: Path, file_url: str, parse_dates: List[str], dtype: Dict[str, str]) -> pd.DataFrame:
|
53 |
+
df = None
|
54 |
+
try:
|
55 |
+
df = pd.read_csv(file_url, parse_dates=parse_dates, dtype=dtype)
|
56 |
+
except Exception as e:
|
57 |
+
df = pd.read_csv(file, parse_dates=parse_dates, dtype=dtype)
|
58 |
+
logging.error(
|
59 |
+
f"Oops, the file is not available on the url, trying a local version: {e}")
|
60 |
+
finally:
|
61 |
+
return df
|
62 |
+
|
63 |
+
|
64 |
+
# @cached(cache=TTLCache(maxsize=100000, ttl=ONE_WEEK_SEC)) # Memory # unhassable dict. change cache library
|
65 |
+
def clean_df(df: pd.DataFrame) -> pd.DataFrame:
|
66 |
+
df.columns = [col.lower() for col in df.columns]
|
67 |
+
return df
|
68 |
+
|
69 |
+
|
70 |
+
# Read and get cleaned data
|
71 |
+
test_df = clean_df(get_data_df(TEST_FILE, TEST_FILE_URL,
|
72 |
+
parse_dates=parse_dates, dtype=dtype))
|
73 |
+
train_df = clean_df(get_data_df(TRAIN_FILE, TRAIN_FILE_URL,
|
74 |
+
parse_dates=parse_dates, dtype=dtype))
|
75 |
+
weather_df = clean_df(get_data_df(
|
76 |
+
WEATHER_FILE, WEATHER_FILE_URL, parse_dates=['date'], dtype=dtype_weather))
|
77 |
+
|
78 |
+
|
79 |
+
def time_sec_hms(sec: float) -> str:
|
80 |
+
return time.strftime("%H:%M:%S", time.gmtime(sec))
|
81 |
+
|
82 |
+
def full_time_sec_hms(sec: float) -> str:
|
83 |
+
hours = sec // 3600
|
84 |
+
minutes = (sec % 3600) // 60
|
85 |
+
remaining_sec = sec % 60
|
86 |
+
return f"{round(hours):,}h: {round(minutes)}m: {round(remaining_sec)}s"
|
87 |
+
|
88 |
+
|
89 |
+
@cached(cache=TTLCache(maxsize=100000, ttl=ONE_WEEK_SEC)) # Memory
|
90 |
+
def get_country_geojson():
|
91 |
+
data = (
|
92 |
+
pd.concat(
|
93 |
+
[
|
94 |
+
train_df[['origin_lat', 'origin_lon', ]].rename(columns={'origin_lat': 'latitude', 'origin_lon': 'longitude'}),
|
95 |
+
train_df[['destination_lat', 'destination_lon']].rename(columns={'destination_lat': 'latitude', 'destination_lon': 'longitude'})
|
96 |
+
],
|
97 |
+
ignore_index=True
|
98 |
+
)
|
99 |
+
.drop_duplicates()
|
100 |
+
)
|
101 |
+
|
102 |
+
# Initialize the Nominatim Geocoder
|
103 |
+
geolocator = Nominatim(user_agent="yassirAPP")
|
104 |
+
|
105 |
+
# Function to reverse geocode
|
106 |
+
def reverse_geocode(lat, lon):
|
107 |
+
location = geolocator.reverse((lat, lon), exactly_one=True)
|
108 |
+
address = location.raw['address']
|
109 |
+
country = address.get('country', '')
|
110 |
+
return country
|
111 |
+
|
112 |
+
# Apply reverse geocoding to min latitude and longitude pair and also the maximum in the DataFrame
|
113 |
+
# Find the minimum latitude and longitude
|
114 |
+
min_lat = data['latitude'].min()
|
115 |
+
min_lon = data['longitude'].min()
|
116 |
+
max_lat = data['latitude'].max()
|
117 |
+
max_lon = data['longitude'].max()
|
118 |
+
country_min = reverse_geocode(min_lat, min_lon)
|
119 |
+
country_max = reverse_geocode(max_lat, max_lon)
|
120 |
+
|
121 |
+
if country_min == country_max:
|
122 |
+
country = country_min
|
123 |
+
|
124 |
+
|
125 |
+
# Get the location for Kenya
|
126 |
+
location = geolocator.geocode(country, exactly_one=True)
|
127 |
+
|
128 |
+
# If the location is found
|
129 |
+
if location:
|
130 |
+
# Get the bounding box for Kenya
|
131 |
+
bounding_box = location.raw['boundingbox']
|
132 |
+
print(f"Bounding Box: {bounding_box}")
|
133 |
+
|
134 |
+
# Nominatim API URL with query parameters
|
135 |
+
url = "https://nominatim.openstreetmap.org/search"
|
136 |
+
|
137 |
+
# Parameters for the request
|
138 |
+
params = {
|
139 |
+
'q': country, # Kenya
|
140 |
+
'format': 'json',
|
141 |
+
'polygon_geojson': 1 # Request GeoJSON polygons in the response
|
142 |
+
}
|
143 |
+
|
144 |
+
# Headers for the request
|
145 |
+
headers = {
|
146 |
+
'User-Agent': 'yassirAPP'
|
147 |
+
}
|
148 |
+
|
149 |
+
# Send the request to Nominatim with headers
|
150 |
+
response = requests.get(url, params=params, headers=headers)
|
151 |
+
|
152 |
+
# Check if the request was successful
|
153 |
+
if response.status_code == 200:
|
154 |
+
country_geojson = response.json()
|
155 |
+
|
156 |
+
geojson = country_geojson[0]['geojson']
|
157 |
+
|
158 |
+
|
159 |
+
return country, geojson, data
|
160 |
+
|
161 |
+
|
162 |
+
|
163 |
+
|
utils/history.py
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import pandas as pd
|
2 |
+
|
3 |
+
import logging
|
4 |
+
from cachetools import TTLCache, cached
|
5 |
+
|
6 |
+
from shiny import Inputs, Outputs, Session
|
7 |
+
from shiny.express import module, render, ui
|
8 |
+
|
9 |
+
from .config import HISTORY_FILE, ONE_MINUTE_SEC
|
10 |
+
|
11 |
+
|
12 |
+
# Log
|
13 |
+
logging.basicConfig(level=logging.ERROR,
|
14 |
+
format='%(asctime)s - %(levelname)s - %(message)s')
|
15 |
+
|
16 |
+
|
17 |
+
@cached(cache=TTLCache(maxsize=3000, ttl=ONE_MINUTE_SEC*5)) # Memory
|
18 |
+
def get_history_data():
|
19 |
+
try:
|
20 |
+
parse_dates = ['time_of_prediction']
|
21 |
+
df_history = pd.read_csv(HISTORY_FILE, parse_dates=parse_dates)
|
22 |
+
except Exception as e:
|
23 |
+
df_history = None
|
24 |
+
logging.error(f"Oops, an error occured in the history page: {e}")
|
25 |
+
|
26 |
+
finally:
|
27 |
+
return df_history
|
28 |
+
|
29 |
+
|
30 |
+
# Display History Page
|
31 |
+
@module
|
32 |
+
def history_page(input: Inputs, output: Outputs, session: Session):
|
33 |
+
# Disable loading spinners, use elegant pulse
|
34 |
+
ui.busy_indicators.use(spinners=False)
|
35 |
+
|
36 |
+
ui.panel_title(title=ui.h1(ui.strong("Prediction History 🕰️")),
|
37 |
+
window_title="History page")
|
38 |
+
|
39 |
+
df_history = get_history_data()
|
40 |
+
|
41 |
+
if df_history is not None:
|
42 |
+
with ui.card():
|
43 |
+
with ui.card_header():
|
44 |
+
ui.h2("Explore all past predictions")
|
45 |
+
|
46 |
+
@render.data_frame
|
47 |
+
def _():
|
48 |
+
return render.DataGrid(
|
49 |
+
df_history,
|
50 |
+
selection_mode="rows",
|
51 |
+
filters=True,
|
52 |
+
)
|
53 |
+
|
54 |
+
else:
|
55 |
+
ui.notification_show(
|
56 |
+
"🚨 There is no history file yet. Make a prediction.", duration=6, type="warning")
|
utils/home.py
ADDED
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from pathlib import Path
|
2 |
+
|
3 |
+
from shiny import experimental, Inputs, Outputs, Session
|
4 |
+
from shiny.express import ui, module
|
5 |
+
|
6 |
+
from .config import BRANDCOLORS
|
7 |
+
|
8 |
+
|
9 |
+
@module
|
10 |
+
def home_page(input: Inputs, output: Outputs, session: Session):
|
11 |
+
dir = Path(__file__).resolve().parent.parent
|
12 |
+
|
13 |
+
ui.panel_title(title=ui.h2(ui.strong("Welcome to Yassir Data App!")),
|
14 |
+
window_title="Yassir Home",)
|
15 |
+
|
16 |
+
|
17 |
+
with ui.layout_columns(col_widths=(4, 8)):
|
18 |
+
with ui.card():
|
19 |
+
ui.tags.p(
|
20 |
+
{"class": "dynamic-paragraph"},
|
21 |
+
ui.span({"class": "dropcap"}, "Y"),
|
22 |
+
ui.strong("assir"),
|
23 |
+
" is the leading super App in the Maghreb region set to changing the way daily services are provided. It currently operates in 45 cities across Algeria, Morocco and Tunisia with recent expansions into France, Canada and ",
|
24 |
+
ui.strong("Sub-Saharan Africa"),
|
25 |
+
". It is backed (~$200M in funding) by VCs from Silicon Valley, Europe and other parts of the world. Offering on-demand services such as ",
|
26 |
+
ui.strong("ride-hailing"),
|
27 |
+
" and last-mile delivery."
|
28 |
+
)
|
29 |
+
ui.tags.style(f"""
|
30 |
+
.dynamic-paragraph {{
|
31 |
+
font-size: calc(1vw + 1vh); /* Adjust this value to control the text size */
|
32 |
+
width: 100%;
|
33 |
+
height: 100%;
|
34 |
+
overflow: hidden;
|
35 |
+
}}
|
36 |
+
.dropcap {{
|
37 |
+
float: left;
|
38 |
+
font-size: 4em;
|
39 |
+
line-height: 0.8;
|
40 |
+
margin-right: 8px;
|
41 |
+
font-weight: bold;
|
42 |
+
}}
|
43 |
+
.red-text {{
|
44 |
+
color: {BRANDCOLORS['red']};
|
45 |
+
font-weight: bold;
|
46 |
+
}}
|
47 |
+
.purple-text {{
|
48 |
+
color: {BRANDCOLORS['purple-light']};
|
49 |
+
font-weight: bold;
|
50 |
+
}}
|
51 |
+
.no-decoration a {{
|
52 |
+
display: inline-block;
|
53 |
+
padding: 10px 20px;
|
54 |
+
margin: 10px 0;
|
55 |
+
background-color: {BRANDCOLORS['purple-light']};
|
56 |
+
font-size: calc(1vw + 1vh);
|
57 |
+
color: inherit;
|
58 |
+
text-decoration: none;
|
59 |
+
font-weight: bold;
|
60 |
+
border-radius: 5px;
|
61 |
+
transition: background-color 0.3s, transform 0.3s;
|
62 |
+
}}
|
63 |
+
""")
|
64 |
+
|
65 |
+
experimental.ui.card_image(file=dir / "www/ride-hailing-hero.webp")
|
66 |
+
|
67 |
+
|
68 |
+
with ui.layout_columns(col_widths=(8, 4)):
|
69 |
+
with ui.card():
|
70 |
+
ui.tags.p(
|
71 |
+
{"class": "dynamic-paragraph"},
|
72 |
+
"""In the fast-paced world of ride-hailing, accuracy and reliability are key.
|
73 |
+
For companies like Yassir, the ability to
|
74 |
+
""",
|
75 |
+
ui.strong("predict the estimated time of arrival (ETA)"),
|
76 |
+
"for trips in ",
|
77 |
+
ui.strong("real-time"),
|
78 |
+
" is crucial. Our mission is to enhance the Yassir experience by leveraging ",
|
79 |
+
ui.strong("data"),
|
80 |
+
" and ",
|
81 |
+
ui.strong("advanced machine learning algorithms"),
|
82 |
+
""" to deliver more accurate ETAs, making our services more dependable and
|
83 |
+
attractive to both customers and business partners.
|
84 |
+
""",
|
85 |
+
ui.br(),
|
86 |
+
"""By improving ETA predictions, Yassir not only boosts customer
|
87 |
+
satisfaction but also optimizes operational efficiency, allowing the company
|
88 |
+
to allocate resources more effectively and reduce costs.
|
89 |
+
""",
|
90 |
+
ui.br(),
|
91 |
+
"""This data app is a step forward in revolutionizing how Yassir operates,
|
92 |
+
ensuring that every journey is smooth and timely. It contributes to this vision by
|
93 |
+
predicting the ETA at the drop-off point for one Yassir journey at a time.
|
94 |
+
""",
|
95 |
+
ui.br(),
|
96 |
+
ui.span(
|
97 |
+
{"class": "purple-text"},
|
98 |
+
"""Join us in shaping the future of ride-hailing services with our innovative data application!"""
|
99 |
+
)
|
100 |
+
)
|
101 |
+
ui.card_footer(
|
102 |
+
ui.strong("Going somewere? "),
|
103 |
+
ui.span(
|
104 |
+
{"class": "red-text"},
|
105 |
+
ui.span(
|
106 |
+
{"class": "no-decoration"},
|
107 |
+
ui.a("Yassir", href="https://yassir.com/ride-hailing", target="_blank")
|
108 |
+
),
|
109 |
+
""" will take you there!"""
|
110 |
+
)
|
111 |
+
)
|
112 |
+
|
113 |
+
experimental.ui.card_image(file=dir / "www/image-2-1.webp")
|
utils/predict.py
ADDED
@@ -0,0 +1,435 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import re
|
3 |
+
import sys
|
4 |
+
from dotenv import load_dotenv
|
5 |
+
from datetime import datetime
|
6 |
+
import time
|
7 |
+
import logging
|
8 |
+
|
9 |
+
import httpx
|
10 |
+
import pandas as pd
|
11 |
+
|
12 |
+
from pydantic import BaseModel, Field
|
13 |
+
from typing import List, Optional
|
14 |
+
|
15 |
+
from shiny import reactive, Inputs, Outputs, Session
|
16 |
+
from shiny.express import module, render, ui
|
17 |
+
from shinywidgets import render_widget
|
18 |
+
|
19 |
+
import ipyleaflet as L
|
20 |
+
from faicons import icon_svg
|
21 |
+
from geopy.distance import geodesic
|
22 |
+
|
23 |
+
from utils.utils import *
|
24 |
+
from utils.config import LOCATIONS, BRANDTHEMES, KENYA_LAT, KENYA_LON, HOURS, MINUTES, SECONDS, ALL_MODELS
|
25 |
+
from utils.config import HISTORY_FILE, ENV_PATH
|
26 |
+
from utils.url_to_coordinates import get_full_url, on_convert
|
27 |
+
|
28 |
+
load_dotenv(ENV_PATH)
|
29 |
+
|
30 |
+
|
31 |
+
class EtaFeatures(BaseModel):
|
32 |
+
timestamp: List[datetime] = Field(
|
33 |
+
description="Timestamp: Time that the trip was started")
|
34 |
+
origin_lat: List[float] = Field(
|
35 |
+
description="Origin_lat: Origin latitude (in degrees)")
|
36 |
+
origin_lon: List[float] = Field(
|
37 |
+
description="Origin_lon: Origin longitude (in degrees)")
|
38 |
+
destination_lat: List[float] = Field(
|
39 |
+
description="Destination_lat: Destination latitude (in degrees)")
|
40 |
+
destination_lon: List[float] = Field(
|
41 |
+
description="Destination_lon: Destination longitude (in degrees)")
|
42 |
+
trip_distance: List[float] = Field(
|
43 |
+
description="Trip_distance: Distance in meters on a driving route")
|
44 |
+
|
45 |
+
|
46 |
+
# Log
|
47 |
+
logging.basicConfig(level=logging.ERROR,
|
48 |
+
format='%(asctime)s - %(levelname)s - %(message)s')
|
49 |
+
|
50 |
+
|
51 |
+
lat_min, lat_max, lon_min, lon_max = get_bounds(country='Kenya')
|
52 |
+
|
53 |
+
|
54 |
+
async def endpoint(model_name: str) -> str:
|
55 |
+
api_url = os.getenv("API_URL")
|
56 |
+
model_endpoint = f"{api_url}={model_name}"
|
57 |
+
return model_endpoint
|
58 |
+
|
59 |
+
|
60 |
+
async def predict_eta(data: EtaFeatures, model_name: str) -> Optional[float]:
|
61 |
+
prediction = None
|
62 |
+
try:
|
63 |
+
# Get model endpoint
|
64 |
+
model_endpoint = await endpoint(model_name)
|
65 |
+
|
66 |
+
if "pyodide" in sys.modules:
|
67 |
+
import pyodide.http
|
68 |
+
|
69 |
+
response = await pyodide.http.pyfetch(
|
70 |
+
model_endpoint,
|
71 |
+
method="POST",
|
72 |
+
body=data,
|
73 |
+
headers={"Content-Type": "application/json"}
|
74 |
+
)
|
75 |
+
|
76 |
+
# Handle the response
|
77 |
+
if response.ok:
|
78 |
+
# .json() parses the response as JSON and converts to dictionary.
|
79 |
+
result = await response.json()['result']
|
80 |
+
|
81 |
+
else:
|
82 |
+
# Send POST request with JSON data using the json parameter
|
83 |
+
async with httpx.AsyncClient() as client:
|
84 |
+
response = await client.post(model_endpoint, json=data, timeout=30)
|
85 |
+
response.raise_for_status() # Ensure we catch any HTTP errors
|
86 |
+
|
87 |
+
if (response.status_code == 200):
|
88 |
+
result = response.json()['result']
|
89 |
+
|
90 |
+
if result:
|
91 |
+
prediction = float(result['prediction'][0])
|
92 |
+
|
93 |
+
# Create dataframe
|
94 |
+
df = pd.DataFrame.from_dict(data)
|
95 |
+
df['eta_prediction'] = prediction
|
96 |
+
df['time_of_prediction'] = pd.Timestamp(datetime.now())
|
97 |
+
df['model_used'] = model_name
|
98 |
+
|
99 |
+
# Save to history csv file
|
100 |
+
df.to_csv(HISTORY_FILE, mode='a',
|
101 |
+
header=not (HISTORY_FILE.exists()), index=False)
|
102 |
+
except Exception as e:
|
103 |
+
logging.error(f"Oops, an error occured: {e} {response}")
|
104 |
+
|
105 |
+
return prediction
|
106 |
+
|
107 |
+
|
108 |
+
@module
|
109 |
+
def predict_page(input: Inputs, output: Outputs, session: Session):
|
110 |
+
# Disable loading spinners, use elegant pulse
|
111 |
+
ui.busy_indicators.use(spinners=False)
|
112 |
+
|
113 |
+
ui.panel_title(title=ui.h1(ui.strong("Eta Prediction 🔮")),
|
114 |
+
window_title="Eta Prediction")
|
115 |
+
|
116 |
+
with ui.layout_sidebar():
|
117 |
+
with ui.sidebar():
|
118 |
+
# Cordinates features
|
119 |
+
ui.input_numeric("origin_lat", "Origin Latitude °",
|
120 |
+
value=LOCATIONS["Nairobi"]['latitude'], min=lat_min, max=lat_max, step=1)
|
121 |
+
ui.input_numeric("origin_lon", "Origin Longitude °",
|
122 |
+
value=LOCATIONS["Nairobi"]['longitude'], min=lon_min, max=lon_max, step=1)
|
123 |
+
ui.input_numeric("destination_lat", "Destination Latitude °",
|
124 |
+
value=LOCATIONS["National Museum of Kenya"]['latitude'], min=lat_min, max=lat_max, step=1)
|
125 |
+
ui.input_numeric("destination_lon", "Destination Longitude °",
|
126 |
+
value=LOCATIONS["National Museum of Kenya"]['longitude'], min=lon_min, max=lon_max, step=1)
|
127 |
+
|
128 |
+
# Google Maps Url to Coordinates
|
129 |
+
ui.help_text("Convert Google Maps Url to Latitude and Longitudes")
|
130 |
+
ui.input_action_button("map_url", "Convert")
|
131 |
+
|
132 |
+
@reactive.effect
|
133 |
+
@reactive.event(input.map_url)
|
134 |
+
def maps_url_modal():
|
135 |
+
m = ui.modal(
|
136 |
+
ui.help_text("From Origin:"),
|
137 |
+
ui.input_text("origin_url", "Google Maps url:"),
|
138 |
+
|
139 |
+
ui.help_text("To Destination:"),
|
140 |
+
ui.input_text("destination_url", "Google Maps url:"),
|
141 |
+
|
142 |
+
ui.input_action_button("convert_url", "Convert"),
|
143 |
+
|
144 |
+
title="Google Maps Url to Coordinates",
|
145 |
+
easy_close=True,
|
146 |
+
footer=None,
|
147 |
+
)
|
148 |
+
ui.modal_show(m)
|
149 |
+
|
150 |
+
@reactive.effect
|
151 |
+
@reactive.event(input.convert_url, ignore_init=True)
|
152 |
+
def update_coordinates_from_url() -> Optional[float]:
|
153 |
+
try:
|
154 |
+
origin_url = get_full_url(input.origin_url())
|
155 |
+
destination_url = get_full_url(input.destination_url())
|
156 |
+
|
157 |
+
# Coordinates are yet to be known
|
158 |
+
origin_latitude = None
|
159 |
+
origin_longitude = None
|
160 |
+
destination_latitude = None
|
161 |
+
destination_longitude = None
|
162 |
+
|
163 |
+
# Regular expression to find coordinates in the URL
|
164 |
+
pattern = re.compile(r"@(-?\d+\.\d+),(-?\d+\.\d+)")
|
165 |
+
match = []
|
166 |
+
for url in [origin_url, destination_url]:
|
167 |
+
match.append(pattern.search(url))
|
168 |
+
|
169 |
+
if all(match):
|
170 |
+
origin_latitude = float(match[0].group(1))
|
171 |
+
origin_longitude = float(match[0].group(2))
|
172 |
+
destination_latitude = float(match[1].group(1))
|
173 |
+
destination_longitude = float(match[1].group(2))
|
174 |
+
|
175 |
+
valid.set(on_convert(origin_latitude, origin_longitude,
|
176 |
+
destination_latitude, destination_longitude))
|
177 |
+
|
178 |
+
if valid():
|
179 |
+
ui.notification_show(
|
180 |
+
f"✅ The coordinates have been updated", duration=3, type="default")
|
181 |
+
else:
|
182 |
+
raise Exception
|
183 |
+
except Exception as e:
|
184 |
+
logging.error(
|
185 |
+
f"Oops, update_coordinates_from_url says an error occured converting maps url to coordinates: {e}")
|
186 |
+
ui.notification_show(
|
187 |
+
f"Error: {e}", duration=3, type="error")
|
188 |
+
ui.notification_show(
|
189 |
+
"🚨 Could not convert url to coordinates. Try again!", duration=6, type="error")
|
190 |
+
|
191 |
+
finally:
|
192 |
+
ui.modal_remove()
|
193 |
+
|
194 |
+
# Rest coordinates back to Kenyan region
|
195 |
+
ui.input_action_button(
|
196 |
+
"reset", "Back to Nairobi", icon=icon_svg("crosshairs"))
|
197 |
+
|
198 |
+
# Trip Distance feature
|
199 |
+
ui.input_numeric("trip_distance", "Trip Distance (meters)",
|
200 |
+
value=1, min=1, max=600000, step=10)
|
201 |
+
ui.input_switch("manual_distance",
|
202 |
+
"Use manual distance", False),
|
203 |
+
|
204 |
+
# Date feature
|
205 |
+
ui.input_date("date", "Select a Date")
|
206 |
+
ui.help_text("Select the UTC time")
|
207 |
+
ui.input_select("hours", "24-hour",
|
208 |
+
choices=HOURS, selected=HOURS[0])
|
209 |
+
ui.input_select("minutes", "Minutes",
|
210 |
+
choices=MINUTES, selected=MINUTES[0])
|
211 |
+
ui.input_select("seconds", "Seconds",
|
212 |
+
choices=SECONDS, selected=SECONDS[0])
|
213 |
+
|
214 |
+
# Select model
|
215 |
+
ui.input_selectize(
|
216 |
+
"modelname",
|
217 |
+
"Choose a model",
|
218 |
+
choices=ALL_MODELS,
|
219 |
+
selected="XGBRegressor",
|
220 |
+
)
|
221 |
+
|
222 |
+
# Base map
|
223 |
+
ui.input_selectize(
|
224 |
+
"basemap",
|
225 |
+
"Choose a basemap",
|
226 |
+
choices=list(BASEMAPS.keys()),
|
227 |
+
selected="Mapnik",
|
228 |
+
)
|
229 |
+
|
230 |
+
# Top 3 cards
|
231 |
+
with ui.layout_column_wrap(fill=False):
|
232 |
+
with ui.value_box(showcase=icon_svg("route"), theme=BRANDTHEMES['purple-dark']):
|
233 |
+
"Trip Distance"
|
234 |
+
|
235 |
+
@render.text
|
236 |
+
def trip_dist_km():
|
237 |
+
return f"{trip_distance()/1000:,.1f} km" if valid else ""
|
238 |
+
|
239 |
+
@render.text
|
240 |
+
def trip_dist_m():
|
241 |
+
return f"{trip_distance():,.1f} m" if valid and trip_distance is not None else ""
|
242 |
+
|
243 |
+
with ui.value_box(showcase=icon_svg("egg"), theme=BRANDTHEMES['purple-dark']):
|
244 |
+
"Geodisic Distance"
|
245 |
+
|
246 |
+
@reactive.calc
|
247 |
+
def geo_dist():
|
248 |
+
dist = geodesic(loc1xy(), loc2xy())
|
249 |
+
return (f"{dist.meters:,.1f} m", f"{dist.kilometers:,.1f} km") if valid and trip_distance is not None else ""
|
250 |
+
|
251 |
+
@render.text
|
252 |
+
def geo_dist_km():
|
253 |
+
return geo_dist()[1] if valid and trip_distance is not None else ""
|
254 |
+
|
255 |
+
@render.text
|
256 |
+
def geo_dist_m():
|
257 |
+
return geo_dist()[0] if valid and trip_distance is not None else ""
|
258 |
+
|
259 |
+
with ui.value_box(showcase=icon_svg("clock"), theme=BRANDTHEMES['red']):
|
260 |
+
"Est. time of arrival"
|
261 |
+
|
262 |
+
@reactive.calc
|
263 |
+
async def eta():
|
264 |
+
try:
|
265 |
+
# print(valid())
|
266 |
+
# print(notification_error())
|
267 |
+
if validate_inputs(origin_lat(), origin_lon(), destination_lat(), destination_lon()) and valid():
|
268 |
+
data: EtaFeatures = {
|
269 |
+
'timestamp': [datetz()],
|
270 |
+
'origin_lat': [origin_lat()],
|
271 |
+
'origin_lon': [origin_lon()],
|
272 |
+
'destination_lat': [destination_lat()],
|
273 |
+
'destination_lon': [destination_lon()],
|
274 |
+
'trip_distance': [trip_distance()]
|
275 |
+
}
|
276 |
+
|
277 |
+
eta_sec = await predict_eta(data, input.modelname())
|
278 |
+
|
279 |
+
eta_hms = time.strftime(
|
280 |
+
'%H:%M:%S', time.gmtime(eta_sec))
|
281 |
+
|
282 |
+
ui.notification_show(
|
283 |
+
f"⏰ ETA: {eta_hms} H:M:S", duration=6, type="default")
|
284 |
+
|
285 |
+
return f"{eta_sec:,.0f} s", f"{eta_hms}"
|
286 |
+
else:
|
287 |
+
raise Exception
|
288 |
+
except Exception:
|
289 |
+
ui.notification_show(
|
290 |
+
"🚨 Could not predict Eta. Median eta is 1000 seconds", duration=3, type="error")
|
291 |
+
return None
|
292 |
+
|
293 |
+
@render.text
|
294 |
+
async def eta_sec():
|
295 |
+
text = await eta()
|
296 |
+
return text[0] if text else ""
|
297 |
+
|
298 |
+
@render.text
|
299 |
+
async def eta_hms():
|
300 |
+
text = await eta()
|
301 |
+
return text[1] if text else ""
|
302 |
+
|
303 |
+
# Map (2 indents)
|
304 |
+
with ui.card():
|
305 |
+
ui.card_header(
|
306 |
+
"💡 Map (drag the markers to change locations)")
|
307 |
+
|
308 |
+
@render_widget
|
309 |
+
def map():
|
310 |
+
return L.Map(zoom=9, center=(KENYA_LAT, KENYA_LON))
|
311 |
+
|
312 |
+
######################################################
|
313 |
+
# Reactive values to store location information
|
314 |
+
origin_lat = reactive.value()
|
315 |
+
origin_lon = reactive.value()
|
316 |
+
destination_lat = reactive.value()
|
317 |
+
destination_lon = reactive.value()
|
318 |
+
|
319 |
+
valid = reactive.value()
|
320 |
+
|
321 |
+
# Reactive value to store trip_distance information
|
322 |
+
trip_distance = reactive.value()
|
323 |
+
|
324 |
+
@reactive.effect(priority=100)
|
325 |
+
def _():
|
326 |
+
if (
|
327 |
+
validate_inputs(input.origin_lat(), input.origin_lon(),
|
328 |
+
input.destination_lat(), input.destination_lon())
|
329 |
+
and
|
330 |
+
validate_inputs(origin_lat(), origin_lon(),
|
331 |
+
destination_lat(), destination_lon())
|
332 |
+
):
|
333 |
+
value = True
|
334 |
+
else:
|
335 |
+
value = False
|
336 |
+
|
337 |
+
valid.set(value)
|
338 |
+
|
339 |
+
@reactive.calc
|
340 |
+
def datetz():
|
341 |
+
return f"{input.date()}T{input.hours()}:{input.minutes()}:{input.seconds()}Z"
|
342 |
+
|
343 |
+
@reactive.effect
|
344 |
+
def _():
|
345 |
+
origin_lat.set(input.origin_lat()
|
346 |
+
if valid else LOCATIONS["Nairobi"]['latitude'])
|
347 |
+
origin_lon.set(input.origin_lon()
|
348 |
+
if valid else LOCATIONS["Nairobi"]['longitude'])
|
349 |
+
destination_lat.set(input.destination_lat(
|
350 |
+
) if valid else LOCATIONS["National Museum of Kenya"]['latitude'])
|
351 |
+
destination_lon.set(input.destination_lon(
|
352 |
+
) if valid else LOCATIONS["National Museum of Kenya"]['longitude'])
|
353 |
+
|
354 |
+
# Automate trip distance
|
355 |
+
trip_distance.set(ops_trip_distance(loc1xy(), loc2xy()))
|
356 |
+
|
357 |
+
# Manual
|
358 |
+
if input.manual_distance() and input.trip_distance() not in [0, None]:
|
359 |
+
trip_distance.set(input.trip_distance())
|
360 |
+
|
361 |
+
@reactive.effect
|
362 |
+
@reactive.event(trip_distance)
|
363 |
+
def _():
|
364 |
+
if valid():
|
365 |
+
# Update the trip distance input with current calculated or manual trip distance
|
366 |
+
ui.update_numeric("trip_distance", value=trip_distance())
|
367 |
+
|
368 |
+
@reactive.calc
|
369 |
+
def loc1xy():
|
370 |
+
return origin_lat(), origin_lon()
|
371 |
+
|
372 |
+
@reactive.calc
|
373 |
+
def loc2xy():
|
374 |
+
return destination_lat(), destination_lon()
|
375 |
+
|
376 |
+
# Add marker for first location
|
377 |
+
|
378 |
+
@reactive.effect
|
379 |
+
def _():
|
380 |
+
if valid():
|
381 |
+
update_marker(map.widget, loc1xy(), on_move1, "origin", icon=L.AwesomeIcon(
|
382 |
+
name='fa-map-marker', marker_color='darkpurple'))
|
383 |
+
|
384 |
+
# Add marker for second location
|
385 |
+
|
386 |
+
@reactive.effect
|
387 |
+
def _():
|
388 |
+
if valid():
|
389 |
+
update_marker(map.widget, loc2xy(), on_move2, "destination", icon=L.AwesomeIcon(
|
390 |
+
name='fa-map-marker', marker_color='purple'))
|
391 |
+
|
392 |
+
# Add line and fit bounds when either marker is moved
|
393 |
+
|
394 |
+
@reactive.effect
|
395 |
+
def _():
|
396 |
+
if valid():
|
397 |
+
update_line(map.widget, loc1xy(), loc2xy())
|
398 |
+
|
399 |
+
# If new bounds fall outside of the current view, fit the bounds if valid coordinates
|
400 |
+
|
401 |
+
@reactive.effect
|
402 |
+
def _():
|
403 |
+
if valid():
|
404 |
+
l1 = loc1xy()
|
405 |
+
l2 = loc2xy()
|
406 |
+
|
407 |
+
lat_rng = [min(l1[0], l2[0]), max(l1[0], l2[0])]
|
408 |
+
lon_rng = [min(l1[1], l2[1]), max(l1[1], l2[1])]
|
409 |
+
new_bounds = [
|
410 |
+
[lat_rng[0], lon_rng[0]],
|
411 |
+
[lat_rng[1], lon_rng[1]],
|
412 |
+
]
|
413 |
+
|
414 |
+
b = map.widget.bounds
|
415 |
+
if len(b) == 0:
|
416 |
+
map.widget.fit_bounds(new_bounds)
|
417 |
+
elif (
|
418 |
+
lat_min < b[0][0]
|
419 |
+
or lat_max > b[1][0]
|
420 |
+
or lon_min < b[0][1]
|
421 |
+
or lon_max > b[1][1]
|
422 |
+
):
|
423 |
+
map.widget.fit_bounds(new_bounds)
|
424 |
+
|
425 |
+
# Update the basemap
|
426 |
+
|
427 |
+
@reactive.effect(priority=-100) # The last effect that runs
|
428 |
+
def _():
|
429 |
+
if valid():
|
430 |
+
update_basemap(map.widget, input.basemap())
|
431 |
+
|
432 |
+
@reactive.effect(priority=95)
|
433 |
+
@reactive.event(input.reset)
|
434 |
+
def _():
|
435 |
+
back_to_nairobi()
|
utils/redis.py
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Redis server has latency issues if it not a high availability backend
|
2 |
+
# Use memory cache for now.
|
3 |
+
|
4 |
+
# import os
|
5 |
+
|
6 |
+
# from dotenv import load_dotenv
|
7 |
+
|
8 |
+
# import redis
|
9 |
+
# from cashews import cache
|
10 |
+
|
11 |
+
# load_dotenv(ENV_PATH)
|
12 |
+
|
13 |
+
# # Install persistent cache using Redis Cache
|
14 |
+
# url = os.getenv("REDIS_URL")
|
15 |
+
# username = os.getenv("REDIS_USERNAME")
|
16 |
+
# password = os.getenv("REDIS_PASSWORD")
|
17 |
+
# connection = redis.from_url(url=url, username=username,
|
18 |
+
# password=password, encoding="utf8", decode_responses=False)
|
19 |
+
# backend = R.RedisCache(connection=connection)
|
20 |
+
|
21 |
+
# Functions Redis Cache- only works for async functions and awaits
|
22 |
+
# full_url = os.getenv("REDIS_FULL_URL")
|
23 |
+
# cache.setup(full_url)
|
24 |
+
|
25 |
+
|
26 |
+
# @cache(ttl="10m", prefix='yassir_history_data') # Redis
|
utils/url_to_coordinates.py
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import requests
|
2 |
+
|
3 |
+
from shiny.express import ui
|
4 |
+
from utils.utils import validate_inputs
|
5 |
+
|
6 |
+
|
7 |
+
|
8 |
+
def get_full_url(url: str) -> str:
|
9 |
+
response = requests.get(url, allow_redirects=True)
|
10 |
+
return response.url
|
11 |
+
|
12 |
+
|
13 |
+
def on_convert(origin_lat: float, origin_lon: float, destination_lat: float, destination_lon: float) -> bool:
|
14 |
+
|
15 |
+
valid = validate_inputs(origin_lat, origin_lon, destination_lat, destination_lon)
|
16 |
+
|
17 |
+
if valid:
|
18 |
+
with ui.hold():
|
19 |
+
ui.update_numeric(f"origin_lat", value=origin_lat)
|
20 |
+
ui.update_numeric(f"origin_lon", value=origin_lon)
|
21 |
+
ui.update_numeric(f"destination_lat", value=destination_lat)
|
22 |
+
ui.update_numeric(f"destination_lon", value=destination_lon)
|
23 |
+
|
24 |
+
return valid
|
utils/utils.py
ADDED
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import json
|
2 |
+
import requests
|
3 |
+
import requests_cache as R
|
4 |
+
from cachetools import TTLCache, cached
|
5 |
+
|
6 |
+
from typing import Literal, Tuple, Optional
|
7 |
+
|
8 |
+
import ipyleaflet as L
|
9 |
+
from ipyleaflet import AwesomeIcon
|
10 |
+
|
11 |
+
from shiny.express import ui
|
12 |
+
|
13 |
+
from utils.config import ors_api_key, BRANDCOLORS, BASEMAPS, ONE_WEEK_SEC, LOCATIONS, TRIP_DISTANCE
|
14 |
+
|
15 |
+
|
16 |
+
# Cache expires after 1 week
|
17 |
+
R.install_cache('yassir_requests_cache', expire_after=ONE_WEEK_SEC) # Sqlite
|
18 |
+
|
19 |
+
|
20 |
+
# ---------------------------------------------------------------
|
21 |
+
# Helper functions for map and location inputs on predict page
|
22 |
+
# ---------------------------------------------------------------
|
23 |
+
|
24 |
+
@cached(cache=TTLCache(maxsize=300, ttl=ONE_WEEK_SEC)) # Memory
|
25 |
+
def get_bounds(country: str) -> Tuple[float]:
|
26 |
+
headers = {
|
27 |
+
'User-Agent': 'Yassir ETA Shiny App/1.0 ([email protected])'
|
28 |
+
}
|
29 |
+
|
30 |
+
response = requests.get(
|
31 |
+
f"http://nominatim.openstreetmap.org/search?q={country}&format=json", headers=headers)
|
32 |
+
|
33 |
+
boundingbox = json.loads(response.text)[0]["boundingbox"]
|
34 |
+
|
35 |
+
# Extract the bounds as float datatype
|
36 |
+
lat_min, lat_max, lon_min, lon_max = (float(b) for b in boundingbox)
|
37 |
+
|
38 |
+
return lat_min, lat_max, lon_min, lon_max
|
39 |
+
|
40 |
+
|
41 |
+
@cached(cache=TTLCache(maxsize=3000, ttl=ONE_WEEK_SEC)) # Memory
|
42 |
+
def ops_trip_distance(origin: tuple, destination: tuple) -> float:
|
43 |
+
"""
|
44 |
+
The road distance calculated using openrouteservice with the driving car is the shortest
|
45 |
+
or optimal road distance based on the available road data and routing algorithm.
|
46 |
+
|
47 |
+
origin is a tuple of lat, lon
|
48 |
+
destination is a tuple of lat, lon
|
49 |
+
|
50 |
+
Returns: the calculiated trip distance or a default value
|
51 |
+
"""
|
52 |
+
|
53 |
+
# OpenRouteService API URL
|
54 |
+
# https://giscience.github.io/openrouteservice/api-reference/endpoints/directions/extra-info/
|
55 |
+
url = 'https://api.openrouteservice.org/v2/directions/driving-car'
|
56 |
+
|
57 |
+
# Request parameters
|
58 |
+
params = {
|
59 |
+
'api_key': ors_api_key,
|
60 |
+
'start': f'{origin[1]},{origin[0]}', # lon, lat
|
61 |
+
'end': f'{destination[1]},{destination[0]}' # lon, lat
|
62 |
+
}
|
63 |
+
|
64 |
+
# Send request
|
65 |
+
# https://openrouteservice.org/dev/#/api-docs/v2/directions/{profile}/get
|
66 |
+
response = requests.get(url, params=params)
|
67 |
+
data = response.json()
|
68 |
+
|
69 |
+
# Extract distance
|
70 |
+
if response.status_code == 200 and data.get('features'):
|
71 |
+
# Distance in meters
|
72 |
+
distance = data['features'][0]['properties']['summary']['distance']
|
73 |
+
else:
|
74 |
+
distance = TRIP_DISTANCE # Default
|
75 |
+
back_to_nairobi()
|
76 |
+
|
77 |
+
return distance
|
78 |
+
|
79 |
+
|
80 |
+
def update_marker(map: L.Map, loc: tuple, on_move: object, name: str, icon: AwesomeIcon):
|
81 |
+
remove_layer(map, name)
|
82 |
+
m = L.Marker(location=loc, draggable=True, name=name, icon=icon)
|
83 |
+
m.on_move(on_move)
|
84 |
+
map.add_layer(m)
|
85 |
+
|
86 |
+
|
87 |
+
def update_line(map: L.Map, loc1: tuple, loc2: tuple):
|
88 |
+
remove_layer(map, "line")
|
89 |
+
map.add_layer(
|
90 |
+
L.Polyline(locations=[loc1, loc2],
|
91 |
+
color=BRANDCOLORS['red'], weight=3, name="line")
|
92 |
+
)
|
93 |
+
|
94 |
+
|
95 |
+
def update_basemap(map: L.Map, basemap: str):
|
96 |
+
for layer in map.layers:
|
97 |
+
if isinstance(layer, L.TileLayer):
|
98 |
+
map.remove_layer(layer)
|
99 |
+
map.add_layer(L.basemap_to_tiles(BASEMAPS[basemap]))
|
100 |
+
|
101 |
+
|
102 |
+
def remove_layer(map: L.Map, name: str):
|
103 |
+
for layer in map.layers:
|
104 |
+
if layer.name == name:
|
105 |
+
map.remove_layer(layer)
|
106 |
+
|
107 |
+
|
108 |
+
def on_move1(**kwargs):
|
109 |
+
return on_move("origin", **kwargs)
|
110 |
+
|
111 |
+
|
112 |
+
def on_move2(**kwargs):
|
113 |
+
return on_move("destination", **kwargs)
|
114 |
+
|
115 |
+
# When the markers are moved, update the numeric location inputs to include the new
|
116 |
+
# location (which results in the locations() reactive value getting updated,
|
117 |
+
# which invalidates any downstream reactivity that depends on it)
|
118 |
+
|
119 |
+
|
120 |
+
def on_move(loc_type: Literal['origin', 'destination'], **kwargs):
|
121 |
+
location = kwargs["location"]
|
122 |
+
loc_lat, loc_lon = location
|
123 |
+
|
124 |
+
ui.update_numeric(f"{loc_type}_lat", value=loc_lat)
|
125 |
+
ui.update_numeric(f"{loc_type}_lon", value=loc_lon)
|
126 |
+
|
127 |
+
# origin_lat
|
128 |
+
# origin_lon
|
129 |
+
# destination_lat
|
130 |
+
# destination_lon
|
131 |
+
|
132 |
+
# Re-center to Kenya region
|
133 |
+
|
134 |
+
|
135 |
+
def back_to_nairobi():
|
136 |
+
ui.update_numeric("origin_lat", value=LOCATIONS["Nairobi"]['latitude'])
|
137 |
+
ui.update_numeric(
|
138 |
+
"origin_lon", value=LOCATIONS["Nairobi"]['longitude'])
|
139 |
+
ui.update_numeric(
|
140 |
+
"destination_lat", value=LOCATIONS["National Museum of Kenya"]['latitude'])
|
141 |
+
ui.update_numeric(
|
142 |
+
"destination_lon", value=LOCATIONS["National Museum of Kenya"]['longitude'])
|
143 |
+
|
144 |
+
|
145 |
+
def validate_inputs(origin_lat: float = None, origin_lon: float = None, destination_lat: float = None, destination_lon: float = None) -> bool:
|
146 |
+
lat_min, lat_max, lon_min, lon_max = get_bounds(country='Kenya')
|
147 |
+
|
148 |
+
valid = True
|
149 |
+
|
150 |
+
for lat, lon in [(origin_lat, origin_lon), (destination_lat, destination_lon)]:
|
151 |
+
if lat is not None and lon is not None:
|
152 |
+
if (lat < lat_min or lat > lat_max) or (lon < lon_min or lon > lon_max):
|
153 |
+
ui.notification_show(
|
154 |
+
"😮 Location is outside Kenya, taking you back to Nairobi", type="error")
|
155 |
+
valid = False
|
156 |
+
back_to_nairobi()
|
157 |
+
break
|
158 |
+
|
159 |
+
|
160 |
+
return valid
|
161 |
+
|
162 |
+
|
163 |
+
# Footer
|
164 |
+
footer = ui.tags.footer(
|
165 |
+
ui.tags.div(
|
166 |
+
"© 2024. Made with 💖",
|
167 |
+
style=f"text-align: center; padding: 10px; color: #fff; background-color: {BRANDCOLORS['purple-dark']}; margin-top: 50px;"
|
168 |
+
)
|
169 |
+
)
|
www/comfort.webp
ADDED
![]() |
www/favicon-yassir-forward.png
ADDED
![]() |
www/image-2-1.webp
ADDED
![]() |
www/iphone-frame.svg
ADDED
|
www/logo-yassir-forward-dark.png
ADDED
![]() |
www/logo-yassir-forward-dark.svg
ADDED
|
www/logo-yassir-forward-light.png
ADDED
![]() |
www/logo-yassir-forward-light.svg
ADDED
|
www/ride-hailing-hero.webp
ADDED
![]() |
www/servicesBlock-3.webp
ADDED
![]() |
www/styles.css
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Define the primary color */
|
2 |
+
:root {
|
3 |
+
--primary-color: #FB2576 !important;
|
4 |
+
--secondary-color: #6316DB !important;
|
5 |
+
}
|
6 |
+
|
7 |
+
/* Use the primary color for buttons */
|
8 |
+
.btn-primary {
|
9 |
+
background-color: var(--primary-color) !important;
|
10 |
+
border-color: var(--primary-color) !important;
|
11 |
+
}
|
12 |
+
|
13 |
+
/* Use the primary color for slider thumbs */
|
14 |
+
.irs-bar,
|
15 |
+
.irs-to,
|
16 |
+
.irs-from,
|
17 |
+
.irs-slider,
|
18 |
+
.irs-bar-edge,
|
19 |
+
.irs-handle {
|
20 |
+
background-color: var(--primary-color) !important;
|
21 |
+
border-color: var(--primary-color) !important;
|
22 |
+
}
|
23 |
+
|
24 |
+
|
25 |
+
/* Dashboard pill cards links */
|
26 |
+
.nav.nav-pills.card-header-pills.shiny-tab-input.shiny-bound-input .nav-link {
|
27 |
+
color: var(--secondary-color) !important;
|
28 |
+
}
|
29 |
+
|
30 |
+
|
31 |
+
/* Dashboard pill cards link active */
|
32 |
+
.nav.nav-pills.card-header-pills.shiny-tab-input.shiny-bound-input .nav-link.active {
|
33 |
+
background-color: var(--primary-color) !important;
|
34 |
+
color: white !important;
|
35 |
+
}
|