#ifndef NAIVEBAYES_H
#define NAIVEBAYES_H

#include "minmax.h"

typedef std::pair<std::string, int> DataPair;

typedef std::map<std::string, int> innerMap;
typedef std::map<std::string, innerMap> mainMap;

/**
 * @brief The NaiveBayes class holds fucntions for NavieBayes algoritm
 * @autor Jakub Srom
 * @required minmax.h
 */
class NaiveBayes:public MinMax
{
public:
    NaiveBayes(std::map <std::string, double> classes);

    std::vector <probabilityPair> Train(std::vector < std::vector<std::string> > Data);

    std::vector <std::string> Classify(std::vector < std::vector<std::string> > test, std::vector <probabilityPair> DataProbabilities);

private:

    std::map <std::string, double> cls;

};

#endif // NAIVEBAYES_H
