Autorské riešenie
Našou úlohou je rozdeliť vstupný zoznam príkladov do dvoch zoznamov, tréningového a testovacieho, pričom dodržíme nasledovné podmienky:
Pri rozdeľovaní tak musíme dodržať dve podmienky. Postupovať môžeme podľa nasledovnej schémy: Najskôr rozdelíme príklady na pozitívne a negatívne. Z každej časti potom vyberieme požadovaných x% príkladov to tréningového zoznamu. Zvyšok potom zaradíme do testovacieho zoznamu. Výsledné riešenie môže vyzerať nasledovne: import random def rozdel_priklady(priklady, percento): treningove_priklady = [] testovacie_priklady = [] pozitivne_priklady = [] negativne_priklady = [] for priklad in priklady: if priklad[1] == 0: pozitivne_priklady.append(priklad) else: negativne_priklady.append(priklad) random.shuffle(pozitivne_priklady) random.shuffle(negativne_priklady) pocet_pozitivnych_trenovanie = round(len(pozitivne_priklady) * percento / 100) pocet_negativnych_trenovanie = round(len(negativne_priklady) * percento / 100) treningove_priklady.extend(pozitivne_priklady[:pocet_pozitivnych_trenovanie]) treningove_priklady.extend(negativne_priklady[:pocet_negativnych_trenovanie]) testovacie_priklady.extend(pozitivne_priklady[pocet_pozitivnych_trenovanie:]) testovacie_priklady.extend(negativne_priklady[pocet_negativnych_trenovanie:]) return treningove_priklady, testovacie_priklady Podľa zadania úlohy: "Dostupné príklady najskôr náhodne rozdelíme do dvoch zoznamov". Preto sme zoznamy pozitívnych a negatívnych príkladov pred samotným výberom do tréningového a testovacieho zoznamu náhodne preusporiadali. Nie vždy bude možné príklady presne rozdeliť (napr. nedá sa vybrať 50 % z 11 príkladov). Zadanie preto pripúšťa aj toleranciu +- 1 príklad. Presný počet príkladov, ktorý nemusí byť celé číslo, preto zaokrúhlime . Vaše zaujímavé riešenia a najčastejšie chyby Zbytočnou chybou, ktorú spravilo viacero z vás, bolo nedodržanie požiadaviek zadania na parametre funkcie a na návratovú hodnotu funkcie. Takmer v každom zadaní súťaže PALMA junior je požiadavka na funkciu, ktorá má nejaké parametre a pokiaľ nie je jej úlohou niečo kresliť, tak má aj návratovú hodnotu. Vo všeobecnosti platí, že všetky hodnoty ktoré funkcia potrebuje by mala dostať v parametroch a všetky (nekresliace) výsledky vracia ako svoju návratovú hodnotu. Pomerne častou chybou bolo nedodržanie pomeru pozitívnych a negatívnych príkladov v tréningovom a testovacom zozname. Ďalšou pomerne častou chybou bolo, že rozdeľovanie príkladov do tréningového a testovacieho zoznamu nebolo náhodné, ale záviselo od poradia príkladov vo vstupnom zozname. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |