Update to include BayesNet 1.0.3

This commit is contained in:
2024-02-25 18:25:10 +01:00
parent 731e03681a
commit 82f2c36621
61 changed files with 25 additions and 80 deletions

View File

@@ -4,7 +4,7 @@ diagrams:
Platform: Platform:
type: class type: class
glob: glob:
- src/Platform/*.cc - src/*.cc
- src/Command/*.cc - src/Command/*.cc
using_namespace: platform using_namespace: platform
include: include:
@@ -25,7 +25,6 @@ diagrams:
- platform - platform
include: include:
paths: paths:
- src/Command - src
- src/Platform
start_from: start_from:
- function: main(int,const char **) - function: main(int,const char **)

12
.vscode/launch.json vendored
View File

@@ -22,7 +22,7 @@
"type": "lldb", "type": "lldb",
"request": "launch", "request": "launch",
"name": "experimentPy", "name": "experimentPy",
"program": "${workspaceFolder}/build_debug/src/Platform/b_main", "program": "${workspaceFolder}/build_debug/src/b_main",
"args": [ "args": [
"-m", "-m",
"STree", "STree",
@@ -39,7 +39,7 @@
"type": "lldb", "type": "lldb",
"request": "launch", "request": "launch",
"name": "gridsearch", "name": "gridsearch",
"program": "${workspaceFolder}/build_debug/src/Platform/b_grid", "program": "${workspaceFolder}/build_debug/src/b_grid",
"args": [ "args": [
"-m", "-m",
"KDB", "KDB",
@@ -55,7 +55,7 @@
"type": "lldb", "type": "lldb",
"request": "launch", "request": "launch",
"name": "experimentBayes", "name": "experimentBayes",
"program": "${workspaceFolder}/build_debug/src/Platform/b_main", "program": "${workspaceFolder}/build_debug/src/b_main",
"args": [ "args": [
"-m", "-m",
"TAN", "TAN",
@@ -72,7 +72,7 @@
"type": "lldb", "type": "lldb",
"request": "launch", "request": "launch",
"name": "best", "name": "best",
"program": "${workspaceFolder}/build_debug/src/Platform/b_best", "program": "${workspaceFolder}/build_debug/src/b_best",
"args": [ "args": [
"-m", "-m",
"BoostAODE", "BoostAODE",
@@ -86,7 +86,7 @@
"type": "lldb", "type": "lldb",
"request": "launch", "request": "launch",
"name": "manage", "name": "manage",
"program": "${workspaceFolder}/build_debug/src/Platform/b_manage", "program": "${workspaceFolder}/build_debug/src/b_manage",
"args": [ "args": [
"-n", "-n",
"20" "20"
@@ -97,7 +97,7 @@
"type": "lldb", "type": "lldb",
"request": "launch", "request": "launch",
"name": "list", "name": "list",
"program": "${workspaceFolder}/build_debug/src/Platform/b_list", "program": "${workspaceFolder}/build_debug/src/b_list",
"args": [], "args": [],
//"cwd": "/Users/rmontanana/Code/discretizbench", //"cwd": "/Users/rmontanana/Code/discretizbench",
"cwd": "${workspaceFolder}/../discretizbench", "cwd": "${workspaceFolder}/../discretizbench",

View File

@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.20) cmake_minimum_required(VERSION 3.20)
project(Platform project(Platform
VERSION 1.0.1 VERSION 1.0.2
DESCRIPTION "Platform to run Experiments with classifiers." DESCRIPTION "Platform to run Experiments with classifiers."
HOMEPAGE_URL "https://github.com/rmontanana/platform" HOMEPAGE_URL "https://github.com/rmontanana/platform"
LANGUAGES CXX LANGUAGES CXX
@@ -78,11 +78,11 @@ message("XLSXWRITER_LIB=${XLSXWRITER_LIB}")
# Subdirectories # Subdirectories
# -------------- # --------------
set(Platform_MODULES ${Platform_SOURCE_DIR}/src/Platform/modules/) set(Platform_MODULES ${Platform_SOURCE_DIR}/src/modules/)
add_subdirectory(config) add_subdirectory(config)
add_subdirectory(src/Platform) add_subdirectory(src)
add_subdirectory(sample) add_subdirectory(sample)
file(GLOB Platform_SOURCES CONFIGURE_DEPENDS ${Platform_SOURCE_DIR}/src/Platform/*.cc) file(GLOB Platform_SOURCES CONFIGURE_DEPENDS ${Platform_SOURCE_DIR}/src/*.cc)
# Testing # Testing
# ------- # -------

View File

@@ -47,7 +47,7 @@ install: ## Copy binary files to bin folder
@echo "*******************************************" @echo "*******************************************"
@for item in $(app_targets); do \ @for item in $(app_targets); do \
echo ">>> Copying $$item" ; \ echo ">>> Copying $$item" ; \
cp $(f_release)/src/Platform/$$item $(dest) ; \ cp $(f_release)/src/$$item $(dest) ; \
done done
dependency: ## Create a dependency graph diagram of the project (build/dependency.png) dependency: ## Create a dependency graph diagram of the project (build/dependency.png)

View File

@@ -1,10 +1,10 @@
include_directories( include_directories(
${Platform_SOURCE_DIR}/src/Platform/modules ${Platform_SOURCE_DIR}/src/modules
${Platform_SOURCE_DIR}/lib/PyClassifiers/src/PyClassifiers ${Platform_SOURCE_DIR}/lib/PyClassifiers/src
${Python3_INCLUDE_DIRS} ${Python3_INCLUDE_DIRS}
${Platform_SOURCE_DIR}/lib/Files ${Platform_SOURCE_DIR}/lib/Files
${Platform_SOURCE_DIR}/lib/argparse/include ${Platform_SOURCE_DIR}/lib/argparse/include
${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/src/BayesNet ${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/src
${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/lib/folding ${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/lib/folding
${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/lib/mdlp ${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/lib/mdlp
${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/lib/json/include ${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/lib/json/include

View File

@@ -1,9 +1,9 @@
include_directories( include_directories(
${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/src/BayesNet ${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/src
${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/lib/folding ${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/lib/folding
${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/lib/mdlp ${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/lib/mdlp
${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/lib/json/include ${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/lib/json/include
${Platform_SOURCE_DIR}/lib/PyClassifiers/src/PyClassifiers ${Platform_SOURCE_DIR}/lib/PyClassifiers/src
${Platform_MODULES} ${Platform_MODULES}
${Platform_SOURCE_DIR}/lib/Files ${Platform_SOURCE_DIR}/lib/Files
${Platform_SOURCE_DIR}/lib/mdlp ${Platform_SOURCE_DIR}/lib/mdlp

View File

@@ -1,7 +1,7 @@
if(ENABLE_TESTING) if(ENABLE_TESTING)
set(TEST_PLATFORM "unit_tests_platform") set(TEST_PLATFORM "unit_tests_platform")
include_directories( include_directories(
${Platform_SOURCE_DIR}/src/Platform ${Platform_SOURCE_DIR}/src
${Platform_SOURCE_DIR}/lib/argparse/include ${Platform_SOURCE_DIR}/lib/argparse/include
${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/lib/mdlp ${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/lib/mdlp
${Platform_SOURCE_DIR}/lib/Files ${Platform_SOURCE_DIR}/lib/Files

View File

@@ -6,65 +6,11 @@
#include <map> #include <map>
#include <string> #include <string>
#include "TestUtils.h" #include "TestUtils.h"
#include "config.h"
TEST_CASE("Test Python Classifiers score", "[PyClassifiers]") TEST_CASE("Test Python Classifiers score", "[PyClassifiers]")
{ {
map <pair<std::string, std::string>, float> scores = { std::string version = { project_version.begin(), project_version.end() };
// Diabetes REQUIRE(version == "1.0.2");
{{"diabetes", "STree"}, 0.81641}, {{"diabetes", "ODTE"}, 0.84635}, {{"diabetes", "SVC"}, 0.76823}, {{"diabetes", "RandomForest"}, 1.0},
// Ecoli
{{"ecoli", "STree"}, 0.8125}, {{"ecoli", "ODTE"}, 0.84821}, {{"ecoli", "SVC"}, 0.89583}, {{"ecoli", "RandomForest"}, 1.0},
// Glass
{{"glass", "STree"}, 0.57009}, {{"glass", "ODTE"}, 0.77103}, {{"glass", "SVC"}, 0.35514}, {{"glass", "RandomForest"}, 1.0},
// Iris
{{"iris", "STree"}, 0.99333}, {{"iris", "ODTE"}, 0.98667}, {{"iris", "SVC"}, 0.97333}, {{"iris", "RandomForest"}, 1.0},
};
std::string file_name = GENERATE("glass", "iris", "ecoli", "diabetes");
auto raw = RawDatasets(file_name, false);
SECTION("Test STree classifier (" + file_name + ")")
{
auto clf = pywrap::STree();
clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
auto score = clf.score(raw.Xt, raw.yt);
REQUIRE(score == Catch::Approx(scores[{file_name, "STree"}]).epsilon(raw.epsilon));
}
SECTION("Test ODTE classifier (" + file_name + ")")
{
auto clf = pywrap::ODTE();
clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
auto score = clf.score(raw.Xt, raw.yt);
REQUIRE(score == Catch::Approx(scores[{file_name, "ODTE"}]).epsilon(raw.epsilon));
}
SECTION("Test SVC classifier (" + file_name + ")")
{
auto clf = pywrap::SVC();
clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
auto score = clf.score(raw.Xt, raw.yt);
REQUIRE(score == Catch::Approx(scores[{file_name, "SVC"}]).epsilon(raw.epsilon));
}
SECTION("Test RandomForest classifier (" + file_name + ")")
{
auto clf = pywrap::RandomForest();
clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
auto score = clf.score(raw.Xt, raw.yt);
REQUIRE(score == Catch::Approx(scores[{file_name, "RandomForest"}]).epsilon(raw.epsilon));
}
}
TEST_CASE("Classifiers features", "[PyClassifiers]")
{
auto raw = RawDatasets("iris", true);
auto clf = pywrap::STree();
clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
REQUIRE(clf.getNumberOfNodes() == 3);
REQUIRE(clf.getNumberOfEdges() == 2);
}
TEST_CASE("Get num features & num edges", "[PyClassifiers]")
{
auto raw = RawDatasets("iris", true);
auto clf = pywrap::ODTE();
clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
REQUIRE(clf.getNumberOfNodes() == 10);
REQUIRE(clf.getNumberOfEdges() == 10);
} }