yield
read_classification_from_file()? Kolik lidí si myslí, že ji i úspěšně dokončilo?
encoding ve volání open(filename, mode, encoding='utf-8')?
Používáte-li k vývoji v Pythonu prostředí PyCharm, doporučujeme vám vytvořit si pro řešení úlohy projekt. PyCharm tak bude schopen lépe analyzovat váš kód a udržovat stav vaší práce mezi jednotlivými sezeními.
Při vytváření projektu dejte pozor, abyste vybrali správnou verzi interpreteru! Na cvičeních používáme Python 3 (ideálně 3.4, ale může být i 3.2).
Tutoriály k vytváření projektů v PyCharm na stránkách JetBrains:
Existuje celá řada možností, jak skript/program spustit. Každá se hodí na něco jiného, má své výhody a nevýhody.
Spouštění v Python shellu
Konfigurace pro běh a ladění
Spouštění pomocí nástroje Run
Opět existuje několik způsobů, jak testy spustit. Vyberte si ten, který vám nejvíc vyhovuje.
Spuštění testů z jednoho modulu v Python shellu
Spuštění testů jednoho modulu v nástroji Test
Spuštění všech testů v adresáři (projektu) najednou v nástroji Test
http://docs.python.org/py3k/library/unittest.html
Stáhněte si testy ke kroku 1 úlohy Spam filtr. Archiv rozbalte do adresáře, kde vyvíjíte spam filter.
Zopakujte (podle potřeby) výše uvedené i pro testy ke kroku 2.
yield?
yield je klíčové slovo, které funguje podobně jako return, ale vrací generátor.
yield, kód uvnitř funkce se nespustí! Funkce pouze vrátí generátor.
next (kterou volá cyklus for, aniž byste o tom věděli).
next se funkce spustí, dokud nenarazí na první yield. Tam se její běh přeruší (ovšem generátor si pamatuje její stav) a argument příkazu yield je vrácen volajícímu kódu.
next se funkce spustí od předchozího yield, dokud nenarazí na další yield nebo na konec funkce.
read_classification_from_file() tak, aby procházela unit testem.
Pokud se vám to nepodařilo už na cvičení, dokončete:
read_classification_from_file() tak, aby procházela testem.
Příprava na krok 3 úlohy spam filtr:
Prostudujte si:
V článku Binary Classification najděte a pochopte význam zkratek TP, FP, TN, FN.Na kus papíru napište:
co podle vás tyto zkratky znamenají pro problém filtrování spamu co budeme potřebovat, abychom tyto statistiky mohli napočítat
Příprava na krok 4 úlohy spam filtr:
Rozmyslete si a načrtněte na kus papíru:
Jakým způsobem se spam filtr vlastně používá? Jaký je z hlediska implementace rozdíl mezi učicím se filtrem a filtrem, který se učit neumí? Existuje nějaká část, kterou budou mít všechny spam filtry společnou? Je lepší realizovat spam filtr jako funkci nebo jako objekt s vlastnostmi a metodami? Jaké jsou minimální požadavky na tuto realizaci? Co všechno by měla umět? Jaké musí mít vstupy a co musí být jejím výstupem?