Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

Argumenty na příkazové řádce

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.

Využití v úloze klasifikace znaků

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).

Kostry modulů ''knn.py'' a ''naive_bayes.py''

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_data 
mě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=3
tedy

  • adresáře s trénovacími a testovacími daty specifikované na příkazové řádce,
  • název výstupního souboru, který na příkazové řádce specifikován nebyl a argparse doplnil výchozí hodnotu, a
  • zvolený počet sousedů k pro k-NN. (Klasifikátor ale musíte implementovat sami. :-) )

Modul naive_bayes.py můžete použít obdobně.

courses/b3b33kui/semestralni_ulohy/5_ml/argparse.txt · Last modified: 2023/04/28 18:08 by xposik