Autorské riešenie
Úlohou bolo vytvoriť funkciu 1. Nahradenie podprahových hodnôt: Všetky hodnoty rýchlostí, ktoré sú podprahové (t.j., menšie alebo rovné 0), sa musia nahradiť nulou. To simuluje, že príliš slabý alebo negatívny signál je v podstate výpadok.
# Najprv nahradíme všetky hodnoty <= 0 nulou
upravene = []
for prenos in denne_prenosy:
upraveny = [r if r > 0 else 0 for r in prenos]
upravene.append(upraveny)
Riešenie prechádza cez každý jednotlivý prenos ( 2. Normalizácia: Následne sa všetky hodnoty znormalizujú do intervalu <0,1>. Normalizácia je kľúčová, pretože umožňuje porovnať rôzne sady dát, aj keď sú v rôznych rozsahoch (napríklad jeden prenos má max 50 a druhý max 300). Normalizácia zabezpečí, že:
# Nájdeme maximálnu hodnotu zo všetkých (po úprave)
max_hodnota = max((r for prenos in upravene for r in prenos), default=0)
Pre normalizáciu na interval <0,1> je kľúčové nájsť globálnu maximálnu hodnotu zo všetkých prenosov za celý deň.
Táto hodnota sa potom stane 1. Riešenie používa list comprehension # Ak je max 0, všetky hodnoty sú nuly ? normalizácia zostáva rovnaká, aby nedošlo k deleniu nulou
if max_hodnota == 0:
return upravene
Ak je maximálna hodnota 0, znamená to, že všetky rýchlosti signálu za celý deň boli podprahové (pôvodne ?0) a boli nahradené nulami.
V takom prípade by delenie # Normalizujeme
normalizovane = []
for prenos in upravene:
norm_prenos = [r / max_hodnota if r > 0 else 0 for r in prenos]
normalizovane.append(norm_prenos)
return normalizovane
Ak je Vaše najčastejšie chyby Bežným problémom bolo, že riešenie ale funguje len pre jeden zoznam - v zmysle zadania sa očakávala práca so zoznamom záznamov (teda zoznamom zoznamov) od všetkých senzorov. Taktiež sa stávalo, že riešenie nezvláda poruchové(t.j.podprahové alebo nulové) hodnoty a nebola na vstupe hraničná hodnota alebo sa s ňou vôbec nepracovalo. |
||||||||||
© Univerzita Pavla Jozefa Cafárika v Koąiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |