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?