Vytvořte 3 jednoduché neadaptivní filtry, paranoidní, naivní a náhodný, a u každého z nich určete, jak kvalitní predikce poskytuje.
Testy ke kroku 4:
Rozmyslete si a načrtněte na kus papíru:
Prostudujte si, jak v OOP funguje a jak se v Pythonu realizuje dědičnost. Informace najdete např.
Úkoly:
simplefilters.py vytvořte tři třídy představující tři hloupé filtry:
NaiveFilter, který bude všechny emaily klasifikovat jako OK,
ParanoidFilter, který bude všechny emaily klasifikovat jako SPAM, a
RandomFilter, který bude maily náhodně zařazovat do tříd OK a SPAM.
BaseFilter v modulu basefilter.py.
K čemu nám to bude:
Abychom umožnili pozdější automatické testování vašeho finálního filtru, budeme vyžadovat, aby se třída vašeho filtru jmenovala MyFilter a byla umístěna v modulu filter.py. V tomto kroku ale máte vytvořit 3 třídy pojmenované NaiveFilter, ParanoidFilter a RandomFilter umístěné v modulu simplefilters.py.
Filtr pro nás bude představován třídou, která bude mít minimálně dvě metody: train() a test(). Filtry, které se nebudou učit z dat, budou mít metodu train() prázdnou. Další struktura třídy je libovolná.
Metoda train():
| Vstupy | Cesta k adresáři s ohodnocenými emaily, tj. adresář musí obsahovat soubor !truth.txt. (Pro jednoduché filtry je to jedno.) |
|---|---|
| Výstupy | Nic. |
| Efekty | Vytvoření a nastavení vnitřních datových struktur třídy, aby byly později využitelné metodou test(). |
Metoda test():
| Vstupy | Cesta k adresáři s maily. (Adresář nebude obsahovat soubor !truth.txt.) |
|---|---|
| Výstupy | Nic. |
| Efekty | Vytvoří v zadaném adresáři soubor !prediction.txt. |
Vytvořte jednoduchý skript, který vypočte kvalitu predikcí zvoleného filtru. Skript:
train() na jedné poskytnuté datové sadě,
test() na druhé poskytnuté datové sadě,
compute_quality_for_corpus() pro druhou datovou sadu,
!prediction.txt z datové sady.