#ifndef ARFF_HPP #define ARFF_HPP #include #include #include namespace ARFF { void ParseArguments(int argc, char* argv[]); std::string GetDataFilename(void); struct AttributeType { public: std::string attribute; std::vector values; AttributeType(std::string attribute); void AddValue(std::string value); }; struct Instance { public: Instance(const int id, const int size); unsigned int id; std::vector values; }; struct AttributeEvaluation { AttributeEvaluation() = default; AttributeEvaluation(AttributeType *attribute); AttributeType *currentAttribute; std::map rules; float totalErrorRate = 0.0f; int totalError = 0; }; class Arff { public: Arff() = default; void Read(std::string filename); void PrintOverview(void); void PrintData(void); void OneR(void); private: std::string relation; std::vector attributeList; std::vector database; void AddAttribute(std::string line); void AddData(std::string line); void TestIntegrity(void); AttributeEvaluation _OneR(void); AttributeEvaluation EvaluateAttribute(AttributeType *attribute, const int attributePos); }; } #endif