Hodně užitečných nástrojů pro uživatele počítačů má formu příkazů/skriptů spouštěných z příkazové řádky (ls
, dir
, grep
, …). Tyto příkazy obvykle přijímají argumenty uvedené na příkazové řádce za příkazem (např. ls -la
), které ovlivňují chování příkazu. Python obsahuje standardní modul argparse (tutorial), který umožňuje snadno konfigurovat možné parametry skriptu a následně je snadno zpracovat.
Skript, který máte vytvořit, se má chovat podle specifikací. To lze zajistit např. tak, že modul argparse
pro klasifikátor k-NN nakonfigurujete následujícím způsobem:
import argparse def setup_arg_parser(): parser = argparse.ArgumentParser(description='Learn and classify image data.') parser.add_argument('train_path', type=str, help='path to the training data directory') parser.add_argument('test_path', type=str, help='path to the testing data directory') parser.add_argument('-k', type=int, help='number of neighbours (if k is 0 the code may decide about proper K by itself') parser.add_argument("-o", metavar='filepath', default='classification.dsv', help="path (including the filename) of the output .dsv file with the results") return parser
Když pak tuto funkci použijete takto:
parser = setup_arg_parser() args = parser.parse_args() print(args.train_path)
proměnná args
bude obsahovat všechny potřebné informace předané skriptu na příkazové řádce a můžete s nimi dál pracovat. Pro naivní bayesovský klasifikátor stačí uvedený kód jen drobně modifikovat (odstranit argument -k
).
Soubory knn.py a naive_bayes.py můžete použít jako výchozí kostru vašeho řešení. Pokud např. modul knn.py
spustíte jako
python3 knn.py -k 3 ./train_data ./test_dataměli byste vidět následující výstup:
Training data directory: ./train_data Testing data directory: ./test_data Output file: classification.dsv Running k-NN classifier with k=3tedy
argparse
doplnil výchozí hodnotu, a
Modul naive_bayes.py
můžete použít obdobně.