Radar Sinic (model otwarty): ryzyko zakwitu sinic z Sentinel-2

Modele LightGBM przewidujące, czy na kąpielisku wystąpią sinice (dziś, jutro, w ciągu 3 dni), wyłącznie z dwóch cech zdjęcia Sentinel-2 L2A (wycinek 2 x 2 km wokół kąpieliska):

  • s2_ndci_p90 - 90. percentyl NDCI = (B5 - B4) / (B5 + B4) na pikselach wody: jak zielona jest woda;
  • s2_scum_frac - odsetek pikseli wody z kożuchem (FVI = (B8 - B4) / (B8 + B4) > 0,2 i B8 > 0,03).

Bez pogody, Sentinel-3 i położenia kąpieliska. Cechy liczy model/features.py projektu „Radar Sinic” (Analiza Danych Przestrzennych). Etykieta uczenia: oceny wody sanepidu (zamknięcia kąpielisk z powodu zakwitu sinic).

  • Walidacja „w przód”: uczenie na sezonach 2023–2025, test na sezonie 2026.
  • Pliki: model_<cel>_open_S2.txt, cele y_cyano_0 (dziś), y_cyano_1 (jutro), y_cyano_3d (3 dni).

Użycie

import lightgbm as lgb
from huggingface_hub import hf_hub_download

path = hf_hub_download("lustachowicz/radar-sinic-open", "model_y_cyano_0_open_S2.txt")
model = lgb.Booster(model_file=path)
p = model.predict([[0.12, 0.03]])   # s2_ndci_p90, s2_scum_frac

Ograniczenia

  • Słabszy od modelu pełnego (satelity, pogoda, położenie) i od rankingu „historia” (kąpieliska z największą liczbą zamknięć w poprzednich latach) - tabela niżej.
  • Bez bezchmurnego zdjęcia (ostatnie 10 dni) cechy są puste - model widzi tylko brak danych.
  • Bez temperatury wody: poza sezonem może dawać fałszywe alarmy.
  • Etykieta sanepidu jest rzadka i „post factum”: zakwity, których nikt nie zbadał, nie są w danych.
  • Model nie zastępuje komunikatów sanepidu.

Wyniki (raport z treningu)

Model otwarty: tylko Sentinel-2

Cechy (2): s2_ndci_p90, s2_scum_frac. Bez pogody, Sentinel-3, dryfu i położenia. Sanepid tylko jako etykieta. Uczenie: [2023, 2024, 2025], test: [2026], protokół jak w train.py.

Cel: y_cyano_0

41901 wierszy testu, 590 z sinicami. 28 drzew, próg 0.04, ROC-AUC w CV 0.729.

Wariant ROC-AUC PR-AUC precyzja czułość F1 top 10 top 20 top 50
losowo 0.496 0.014 – – – 3% 6% 11%
historia 0.881 0.294 – – – 35% 42% 60%
open: S2 0.82 0.094 0.077 0.425 0.13 18% 28% 44%
v1: S2 (closed) 0.905 0.335 0.335 0.436 0.378 43% 53% 67%
v3: S2 + S3 + dryf (closed) 0.905 0.34 0.426 0.412 0.419 43% 55% 68%

Cel: y_cyano_1

41305 wierszy testu, 587 z sinicami. 17 drzew, próg 0.02, ROC-AUC w CV 0.708.

Wariant ROC-AUC PR-AUC precyzja czułość F1 top 10 top 20 top 50
losowo 0.501 0.015 – – – 3% 6% 12%
historia 0.881 0.294 – – – 35% 42% 60%
open: S2 0.817 0.103 0.052 0.678 0.097 21% 27% 48%
v1: S2 (closed) 0.904 0.34 0.518 0.342 0.412 43% 54% 69%
v3: S2 + S3 + dryf (closed) 0.905 0.336 0.494 0.373 0.425 44% 56% 67%

Cel: y_cyano_3d

41305 wierszy testu, 763 z sinicami. 31 drzew, próg 0.04, ROC-AUC w CV 0.679.

Wariant ROC-AUC PR-AUC precyzja czułość F1 top 10 top 20 top 50
losowo 0.507 0.019 – – – 3% 5% 11%
historia 0.874 0.277 – – – 29% 38% 57%
open: S2 0.777 0.09 0.079 0.515 0.137 16% 23% 41%
v1: S2 (closed) 0.884 0.317 0.495 0.312 0.383 35% 46% 62%
v3: S2 + S3 + dryf (closed) 0.88 0.325 0.486 0.303 0.373 35% 46% 62%
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support