Remove using namespace from Library
This commit is contained in:
@@ -4,24 +4,23 @@
|
||||
#include "BayesMetrics.h"
|
||||
#include "TestUtils.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
TEST_CASE("Metrics Test", "[BayesNet]")
|
||||
{
|
||||
string file_name = GENERATE("glass", "iris", "ecoli", "diabetes");
|
||||
map<string, pair<int, vector<int>>> resultsKBest = {
|
||||
std::string file_name = GENERATE("glass", "iris", "ecoli", "diabetes");
|
||||
map<std::string, pair<int, std::vector<int>>> resultsKBest = {
|
||||
{"glass", {7, { 0, 1, 7, 6, 3, 5, 2 }}},
|
||||
{"iris", {3, { 0, 3, 2 }} },
|
||||
{"ecoli", {6, { 2, 4, 1, 0, 6, 5 }}},
|
||||
{"diabetes", {2, { 7, 1 }}}
|
||||
};
|
||||
map<string, double> resultsMI = {
|
||||
map<std::string, double> resultsMI = {
|
||||
{"glass", 0.12805398},
|
||||
{"iris", 0.3158139948},
|
||||
{"ecoli", 0.0089431099},
|
||||
{"diabetes", 0.0345470614}
|
||||
};
|
||||
map<pair<string, int>, vector<pair<int, int>>> resultsMST = {
|
||||
map<pair<std::string, int>, std::vector<pair<int, int>>> resultsMST = {
|
||||
{ {"glass", 0}, { {0, 6}, {0, 5}, {0, 3}, {5, 1}, {5, 8}, {5, 4}, {6, 2}, {6, 7} } },
|
||||
{ {"glass", 1}, { {1, 5}, {5, 0}, {5, 8}, {5, 4}, {0, 6}, {0, 3}, {6, 2}, {6, 7} } },
|
||||
{ {"iris", 0}, { {0, 1}, {0, 2}, {1, 3} } },
|
||||
@@ -41,7 +40,7 @@ TEST_CASE("Metrics Test", "[BayesNet]")
|
||||
|
||||
SECTION("Test SelectKBestWeighted")
|
||||
{
|
||||
vector<int> kBest = metrics.SelectKBestWeighted(raw.weights, true, resultsKBest.at(file_name).first);
|
||||
std::vector<int> kBest = metrics.SelectKBestWeighted(raw.weights, true, resultsKBest.at(file_name).first);
|
||||
REQUIRE(kBest.size() == resultsKBest.at(file_name).first);
|
||||
REQUIRE(kBest == resultsKBest.at(file_name).second);
|
||||
}
|
||||
|
@@ -2,9 +2,9 @@
|
||||
#include <catch2/catch_test_macros.hpp>
|
||||
#include <catch2/catch_approx.hpp>
|
||||
#include <catch2/generators/catch_generators.hpp>
|
||||
#include <vector>
|
||||
#include <std::vector>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <std::string>
|
||||
#include "KDB.h"
|
||||
#include "TAN.h"
|
||||
#include "SPODE.h"
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
TEST_CASE("Test Bayesian Classifiers score", "[BayesNet]")
|
||||
{
|
||||
map <pair<string, string>, float> scores = {
|
||||
map <pair<std::string, std::string>, float> scores = {
|
||||
// Diabetes
|
||||
{{"diabetes", "AODE"}, 0.811198}, {{"diabetes", "KDB"}, 0.852865}, {{"diabetes", "SPODE"}, 0.802083}, {{"diabetes", "TAN"}, 0.821615},
|
||||
{{"diabetes", "AODELd"}, 0.8138f}, {{"diabetes", "KDBLd"}, 0.80208f}, {{"diabetes", "SPODELd"}, 0.78646f}, {{"diabetes", "TANLd"}, 0.8099f}, {{"diabetes", "BoostAODE"}, 0.83984f},
|
||||
@@ -33,7 +33,7 @@ TEST_CASE("Test Bayesian Classifiers score", "[BayesNet]")
|
||||
{{"iris", "AODELd"}, 0.973333}, {{"iris", "KDBLd"}, 0.973333}, {{"iris", "SPODELd"}, 0.96f}, {{"iris", "TANLd"}, 0.97333f}, {{"iris", "BoostAODE"}, 0.98f}
|
||||
};
|
||||
|
||||
string file_name = GENERATE("glass", "iris", "ecoli", "diabetes");
|
||||
std::string file_name = GENERATE("glass", "iris", "ecoli", "diabetes");
|
||||
auto raw = RawDatasets(file_name, false);
|
||||
|
||||
SECTION("Test TAN classifier (" + file_name + ")")
|
||||
@@ -111,12 +111,12 @@ TEST_CASE("Test Bayesian Classifiers score", "[BayesNet]")
|
||||
REQUIRE(score == Catch::Approx(scores[{file_name, "BoostAODE"}]).epsilon(raw.epsilon));
|
||||
}
|
||||
// for (auto scores : scores) {
|
||||
// cout << "{{\"" << scores.first.first << "\", \"" << scores.first.second << "\"}, " << scores.second << "}, ";
|
||||
// std::cout << "{{\"" << scores.first.first << "\", \"" << scores.first.second << "\"}, " << scores.second << "}, ";
|
||||
// }
|
||||
}
|
||||
TEST_CASE("Models features", "[BayesNet]")
|
||||
{
|
||||
auto graph = vector<string>({ "digraph BayesNet {\nlabel=<BayesNet Test>\nfontsize=30\nfontcolor=blue\nlabelloc=t\nlayout=circo\n",
|
||||
auto graph = std::vector<std::string>({ "digraph BayesNet {\nlabel=<BayesNet Test>\nfontsize=30\nfontcolor=blue\nlabelloc=t\nlayout=circo\n",
|
||||
"class [shape=circle, fontcolor=red, fillcolor=lightblue, style=filled ] \n",
|
||||
"class -> sepallength", "class -> sepalwidth", "class -> petallength", "class -> petalwidth", "petallength [shape=circle] \n",
|
||||
"petallength -> sepallength", "petalwidth [shape=circle] \n", "sepallength [shape=circle] \n",
|
||||
@@ -128,7 +128,7 @@ TEST_CASE("Models features", "[BayesNet]")
|
||||
clf.fit(raw.Xv, raw.yv, raw.featuresv, raw.classNamev, raw.statesv);
|
||||
REQUIRE(clf.getNumberOfNodes() == 6);
|
||||
REQUIRE(clf.getNumberOfEdges() == 7);
|
||||
REQUIRE(clf.show() == vector<string>{"class -> sepallength, sepalwidth, petallength, petalwidth, ", "petallength -> sepallength, ", "petalwidth -> ", "sepallength -> sepalwidth, ", "sepalwidth -> petalwidth, "});
|
||||
REQUIRE(clf.show() == std::vector<std::string>{"class -> sepallength, sepalwidth, petallength, petalwidth, ", "petallength -> sepallength, ", "petalwidth -> ", "sepallength -> sepalwidth, ", "sepalwidth -> petalwidth, "});
|
||||
REQUIRE(clf.graph("Test") == graph);
|
||||
}
|
||||
TEST_CASE("Get num features & num edges", "[BayesNet]")
|
||||
|
@@ -1,13 +1,13 @@
|
||||
#include <catch2/catch_test_macros.hpp>
|
||||
#include <catch2/catch_approx.hpp>
|
||||
#include <catch2/generators/catch_generators.hpp>
|
||||
#include <string>
|
||||
#include <std::string>
|
||||
#include "TestUtils.h"
|
||||
#include "Network.h"
|
||||
|
||||
void buildModel(bayesnet::Network& net, const vector<string>& features, const string& className)
|
||||
void buildModel(bayesnet::Network& net, const std::vector<std::string>& features, const std::std::string& className)
|
||||
{
|
||||
vector<pair<int, int>> network = { {0, 1}, {0, 2}, {1, 3} };
|
||||
std::vector<pair<int, int>> network = { {0, 1}, {0, 2}, {1, 3} };
|
||||
for (const auto& feature : features) {
|
||||
net.addNode(feature);
|
||||
}
|
||||
@@ -30,9 +30,9 @@ TEST_CASE("Test Bayesian Network", "[BayesNet]")
|
||||
{
|
||||
net.addNode("A");
|
||||
net.addNode("B");
|
||||
REQUIRE(net.getFeatures() == vector<string>{"A", "B"});
|
||||
REQUIRE(net.getFeatures() == std::vector<std::string>{"A", "B"});
|
||||
net.addNode("C");
|
||||
REQUIRE(net.getFeatures() == vector<string>{"A", "B", "C"});
|
||||
REQUIRE(net.getFeatures() == std::vector<std::string>{"A", "B", "C"});
|
||||
}
|
||||
SECTION("Test get edges")
|
||||
{
|
||||
@@ -41,10 +41,10 @@ TEST_CASE("Test Bayesian Network", "[BayesNet]")
|
||||
net.addNode("C");
|
||||
net.addEdge("A", "B");
|
||||
net.addEdge("B", "C");
|
||||
REQUIRE(net.getEdges() == vector<pair<string, string>>{ {"A", "B"}, { "B", "C" } });
|
||||
REQUIRE(net.getEdges() == std::vector<pair<std::string, std::string>>{ {"A", "B"}, { "B", "C" } });
|
||||
REQUIRE(net.getNumEdges() == 2);
|
||||
net.addEdge("A", "C");
|
||||
REQUIRE(net.getEdges() == vector<pair<string, string>>{ {"A", "B"}, { "A", "C" }, { "B", "C" } });
|
||||
REQUIRE(net.getEdges() == std::vector<pair<std::string, std::string>>{ {"A", "B"}, { "A", "C" }, { "B", "C" } });
|
||||
REQUIRE(net.getNumEdges() == 3);
|
||||
}
|
||||
SECTION("Test getNodes")
|
||||
@@ -66,7 +66,7 @@ TEST_CASE("Test Bayesian Network", "[BayesNet]")
|
||||
buildModel(net, raw.featuresv, raw.classNamev);
|
||||
buildModel(net2, raw.featurest, raw.classNamet);
|
||||
buildModel(net3, raw.featurest, raw.classNamet);
|
||||
vector<pair<string, string>> edges = {
|
||||
std::vector<pair<std::string, std::string>> edges = {
|
||||
{"class", "sepallength"}, {"class", "sepalwidth"}, {"class", "petallength"},
|
||||
{"class", "petalwidth" }, {"sepallength", "sepalwidth"}, {"sepallength", "petallength"},
|
||||
{"sepalwidth", "petalwidth"}
|
||||
@@ -74,7 +74,7 @@ TEST_CASE("Test Bayesian Network", "[BayesNet]")
|
||||
REQUIRE(net.getEdges() == edges);
|
||||
REQUIRE(net2.getEdges() == edges);
|
||||
REQUIRE(net3.getEdges() == edges);
|
||||
vector<string> features = { "sepallength", "sepalwidth", "petallength", "petalwidth", "class" };
|
||||
std::vector<std::string> features = { "sepallength", "sepalwidth", "petallength", "petalwidth", "class" };
|
||||
REQUIRE(net.getFeatures() == features);
|
||||
REQUIRE(net2.getFeatures() == features);
|
||||
REQUIRE(net3.getFeatures() == features);
|
||||
@@ -84,7 +84,7 @@ TEST_CASE("Test Bayesian Network", "[BayesNet]")
|
||||
// Check Nodes parents & children
|
||||
for (const auto& feature : features) {
|
||||
// Parents
|
||||
vector<string> parents, parents2, parents3, children, children2, children3;
|
||||
std::vector<std::string> parents, parents2, parents3, children, children2, children3;
|
||||
auto nodeParents = nodes[feature]->getParents();
|
||||
auto nodeParents2 = nodes2[feature]->getParents();
|
||||
auto nodeParents3 = nodes3[feature]->getParents();
|
||||
@@ -173,8 +173,8 @@ TEST_CASE("Test Bayesian Network", "[BayesNet]")
|
||||
// {
|
||||
// auto net = bayesnet::Network();
|
||||
// net.fit(raw.Xv, raw.yv, raw.weightsv, raw.featuresv, raw.classNamev, raw.statesv);
|
||||
// vector<vector<int>> test = { {1, 2, 0, 1}, {0, 1, 2, 0}, {1, 1, 1, 1}, {0, 0, 0, 0}, {2, 2, 2, 2} };
|
||||
// vector<int> y_test = { 0, 1, 1, 0, 2 };
|
||||
// std::vector<std::vector<int>> test = { {1, 2, 0, 1}, {0, 1, 2, 0}, {1, 1, 1, 1}, {0, 0, 0, 0}, {2, 2, 2, 2} };
|
||||
// std::vector<int> y_test = { 0, 1, 1, 0, 2 };
|
||||
// auto y_pred = net.predict(test);
|
||||
// REQUIRE(y_pred == y_test);
|
||||
// }
|
||||
@@ -183,7 +183,7 @@ TEST_CASE("Test Bayesian Network", "[BayesNet]")
|
||||
// {
|
||||
// auto net = bayesnet::Network();
|
||||
// net.fit(raw.Xv, raw.yv, raw.weightsv, raw.featuresv, raw.classNamev, raw.statesv);
|
||||
// vector<vector<int>> test = { {1, 2, 0, 1}, {0, 1, 2, 0}, {1, 1, 1, 1}, {0, 0, 0, 0}, {2, 2, 2, 2} };
|
||||
// std::vector<std::vector<int>> test = { {1, 2, 0, 1}, {0, 1, 2, 0}, {1, 1, 1, 1}, {0, 0, 0, 0}, {2, 2, 2, 2} };
|
||||
// auto y_test = { 0, 1, 1, 0, 2 };
|
||||
// auto y_pred = net.predict(test);
|
||||
// REQUIRE(y_pred == y_test);
|
||||
|
@@ -7,7 +7,7 @@
|
||||
TEST_CASE("KFold Test", "[Platform][KFold]")
|
||||
{
|
||||
// Initialize a KFold object with k=5 and a seed of 19.
|
||||
string file_name = GENERATE("glass", "iris", "ecoli", "diabetes");
|
||||
std::string file_name = GENERATE("glass", "iris", "ecoli", "diabetes");
|
||||
auto raw = RawDatasets(file_name, true);
|
||||
int nFolds = 5;
|
||||
platform::KFold kfold(nFolds, raw.nSamples, 19);
|
||||
@@ -29,7 +29,7 @@ TEST_CASE("KFold Test", "[Platform][KFold]")
|
||||
}
|
||||
}
|
||||
|
||||
map<int, int> counts(vector<int> y, vector<int> indices)
|
||||
map<int, int> counts(std::vector<int> y, std::vector<int> indices)
|
||||
{
|
||||
map<int, int> result;
|
||||
for (auto i = 0; i < indices.size(); ++i) {
|
||||
@@ -40,8 +40,8 @@ map<int, int> counts(vector<int> y, vector<int> indices)
|
||||
|
||||
TEST_CASE("StratifiedKFold Test", "[Platform][StratifiedKFold]")
|
||||
{
|
||||
// Initialize a StratifiedKFold object with k=3, using the y vector, and a seed of 17.
|
||||
string file_name = GENERATE("glass", "iris", "ecoli", "diabetes");
|
||||
// Initialize a StratifiedKFold object with k=3, using the y std::vector, and a seed of 17.
|
||||
std::string file_name = GENERATE("glass", "iris", "ecoli", "diabetes");
|
||||
int nFolds = GENERATE(3, 5, 10);
|
||||
auto raw = RawDatasets(file_name, true);
|
||||
platform::StratifiedKFold stratified_kfoldt(nFolds, raw.yt, 17);
|
||||
@@ -55,10 +55,10 @@ TEST_CASE("StratifiedKFold Test", "[Platform][StratifiedKFold]")
|
||||
SECTION("Stratified Fold Test")
|
||||
{
|
||||
// Test each fold's size and contents.
|
||||
auto counts = map<int, vector<int>>();
|
||||
auto counts = map<int, std::vector<int>>();
|
||||
// Initialize the counts per Fold
|
||||
for (int i = 0; i < nFolds; ++i) {
|
||||
counts[i] = vector<int>(raw.classNumStates, 0);
|
||||
counts[i] = std::vector<int>(raw.classNumStates, 0);
|
||||
}
|
||||
// Check fold and compute counts of each fold
|
||||
for (int fold = 0; fold < nFolds; ++fold) {
|
||||
|
@@ -1,19 +1,17 @@
|
||||
#include "TestUtils.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace torch;
|
||||
class Paths {
|
||||
public:
|
||||
static string datasets()
|
||||
static std::string datasets()
|
||||
{
|
||||
return "../../data/";
|
||||
}
|
||||
};
|
||||
|
||||
pair<vector<mdlp::labels_t>, map<string, int>> discretize(vector<mdlp::samples_t>& X, mdlp::labels_t& y, vector<string> features)
|
||||
pair<std::vector<mdlp::labels_t>, map<std::string, int>> discretize(std::vector<mdlp::samples_t>& X, mdlp::labels_t& y, std::vector<std::string> features)
|
||||
{
|
||||
vector<mdlp::labels_t> Xd;
|
||||
map<string, int> maxes;
|
||||
std::vector<mdlp::labels_t> Xd;
|
||||
map<std::string, int> maxes;
|
||||
auto fimdlp = mdlp::CPPFImdlp();
|
||||
for (int i = 0; i < X.size(); i++) {
|
||||
fimdlp.fit(X[i], y);
|
||||
@@ -24,9 +22,9 @@ pair<vector<mdlp::labels_t>, map<string, int>> discretize(vector<mdlp::samples_t
|
||||
return { Xd, maxes };
|
||||
}
|
||||
|
||||
vector<mdlp::labels_t> discretizeDataset(vector<mdlp::samples_t>& X, mdlp::labels_t& y)
|
||||
std::vector<mdlp::labels_t> discretizeDataset(std::vector<mdlp::samples_t>& X, mdlp::labels_t& y)
|
||||
{
|
||||
vector<mdlp::labels_t> Xd;
|
||||
std::vector<mdlp::labels_t> Xd;
|
||||
auto fimdlp = mdlp::CPPFImdlp();
|
||||
for (int i = 0; i < X.size(); i++) {
|
||||
fimdlp.fit(X[i], y);
|
||||
@@ -36,7 +34,7 @@ vector<mdlp::labels_t> discretizeDataset(vector<mdlp::samples_t>& X, mdlp::label
|
||||
return Xd;
|
||||
}
|
||||
|
||||
bool file_exists(const string& name)
|
||||
bool file_exists(const std::std::string& name)
|
||||
{
|
||||
if (FILE* file = fopen(name.c_str(), "r")) {
|
||||
fclose(file);
|
||||
@@ -46,30 +44,30 @@ bool file_exists(const string& name)
|
||||
}
|
||||
}
|
||||
|
||||
tuple<Tensor, Tensor, vector<string>, string, map<string, vector<int>>> loadDataset(const string& name, bool class_last, bool discretize_dataset)
|
||||
tuple<torch::Tensor, torch::Tensor, std::vector<std::string>, std::string, map<std::string, std::vector<int>>> loadDataset(const std::std::string& name, bool class_last, bool discretize_dataset)
|
||||
{
|
||||
auto handler = ArffFiles();
|
||||
handler.load(Paths::datasets() + static_cast<string>(name) + ".arff", class_last);
|
||||
handler.load(Paths::datasets() + static_cast<std::string>(name) + ".arff", class_last);
|
||||
// Get Dataset X, y
|
||||
vector<mdlp::samples_t>& X = handler.getX();
|
||||
std::vector<mdlp::samples_t>& X = handler.getX();
|
||||
mdlp::labels_t& y = handler.getY();
|
||||
// Get className & Features
|
||||
auto className = handler.getClassName();
|
||||
vector<string> features;
|
||||
std::vector<std::string> features;
|
||||
auto attributes = handler.getAttributes();
|
||||
transform(attributes.begin(), attributes.end(), back_inserter(features), [](const auto& pair) { return pair.first; });
|
||||
Tensor Xd;
|
||||
auto states = map<string, vector<int>>();
|
||||
torch::Tensor Xd;
|
||||
auto states = map<std::string, std::vector<int>>();
|
||||
if (discretize_dataset) {
|
||||
auto Xr = discretizeDataset(X, y);
|
||||
Xd = torch::zeros({ static_cast<int>(Xr.size()), static_cast<int>(Xr[0].size()) }, torch::kInt32);
|
||||
for (int i = 0; i < features.size(); ++i) {
|
||||
states[features[i]] = vector<int>(*max_element(Xr[i].begin(), Xr[i].end()) + 1);
|
||||
states[features[i]] = std::vector<int>(*max_element(Xr[i].begin(), Xr[i].end()) + 1);
|
||||
auto item = states.at(features[i]);
|
||||
iota(begin(item), end(item), 0);
|
||||
Xd.index_put_({ i, "..." }, torch::tensor(Xr[i], torch::kInt32));
|
||||
}
|
||||
states[className] = vector<int>(*max_element(y.begin(), y.end()) + 1);
|
||||
states[className] = std::vector<int>(*max_element(y.begin(), y.end()) + 1);
|
||||
iota(begin(states.at(className)), end(states.at(className)), 0);
|
||||
} else {
|
||||
Xd = torch::zeros({ static_cast<int>(X.size()), static_cast<int>(X[0].size()) }, torch::kFloat32);
|
||||
@@ -80,27 +78,27 @@ tuple<Tensor, Tensor, vector<string>, string, map<string, vector<int>>> loadData
|
||||
return { Xd, torch::tensor(y, torch::kInt32), features, className, states };
|
||||
}
|
||||
|
||||
tuple<vector<vector<int>>, vector<int>, vector<string>, string, map<string, vector<int>>> loadFile(const string& name)
|
||||
tuple<std::vector<std::vector<int>>, std::vector<int>, std::vector<std::string>, std::string, map<std::string, std::vector<int>>> loadFile(const std::std::string& name)
|
||||
{
|
||||
auto handler = ArffFiles();
|
||||
handler.load(Paths::datasets() + static_cast<string>(name) + ".arff");
|
||||
handler.load(Paths::datasets() + static_cast<std::string>(name) + ".arff");
|
||||
// Get Dataset X, y
|
||||
vector<mdlp::samples_t>& X = handler.getX();
|
||||
std::vector<mdlp::samples_t>& X = handler.getX();
|
||||
mdlp::labels_t& y = handler.getY();
|
||||
// Get className & Features
|
||||
auto className = handler.getClassName();
|
||||
vector<string> features;
|
||||
std::vector<std::string> features;
|
||||
auto attributes = handler.getAttributes();
|
||||
transform(attributes.begin(), attributes.end(), back_inserter(features), [](const auto& pair) { return pair.first; });
|
||||
// Discretize Dataset
|
||||
vector<mdlp::labels_t> Xd;
|
||||
map<string, int> maxes;
|
||||
std::vector<mdlp::labels_t> Xd;
|
||||
map<std::string, int> maxes;
|
||||
tie(Xd, maxes) = discretize(X, y, features);
|
||||
maxes[className] = *max_element(y.begin(), y.end()) + 1;
|
||||
map<string, vector<int>> states;
|
||||
map<std::string, std::vector<int>> states;
|
||||
for (auto feature : features) {
|
||||
states[feature] = vector<int>(maxes[feature]);
|
||||
states[feature] = std::vector<int>(maxes[feature]);
|
||||
}
|
||||
states[className] = vector<int>(maxes[className]);
|
||||
states[className] = std::vector<int>(maxes[className]);
|
||||
return { Xd, y, features, className, states };
|
||||
}
|
||||
|
@@ -4,20 +4,19 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <tuple>
|
||||
#include <std::tuple>
|
||||
#include "ArffFiles.h"
|
||||
#include "CPPFImdlp.h"
|
||||
using namespace std;
|
||||
|
||||
bool file_exists(const std::string& name);
|
||||
pair<vector<mdlp::labels_t>, map<string, int>> discretize(vector<mdlp::samples_t>& X, mdlp::labels_t& y, vector<string> features);
|
||||
vector<mdlp::labels_t> discretizeDataset(vector<mdlp::samples_t>& X, mdlp::labels_t& y);
|
||||
tuple<vector<vector<int>>, vector<int>, vector<string>, string, map<string, vector<int>>> loadFile(const string& name);
|
||||
tuple<torch::Tensor, torch::Tensor, vector<string>, string, map<string, vector<int>>> loadDataset(const string& name, bool class_last, bool discretize_dataset);
|
||||
bool file_exists(const std::std::string& name);
|
||||
std::pair<vector<mdlp::labels_t>, map<std::string, int>> discretize(std::vector<mdlp::samples_t>& X, mdlp::labels_t& y, std::vector<string> features);
|
||||
std::vector<mdlp::labels_t> discretizeDataset(std::vector<mdlp::samples_t>& X, mdlp::labels_t& y);
|
||||
std::tuple<vector<vector<int>>, std::vector<int>, std::vector<string>, std::string, map<std::string, std::vector<int>>> loadFile(const std::string& name);
|
||||
std::tuple<torch::Tensor, torch::Tensor, std::vector<string>, std::string, map<std::string, std::vector<int>>> loadDataset(const std::string& name, bool class_last, bool discretize_dataset);
|
||||
|
||||
class RawDatasets {
|
||||
public:
|
||||
RawDatasets(const string& file_name, bool discretize)
|
||||
RawDatasets(const std::string& file_name, bool discretize)
|
||||
{
|
||||
// Xt can be either discretized or not
|
||||
tie(Xt, yt, featurest, classNamet, statest) = loadDataset(file_name, true, discretize);
|
||||
@@ -27,16 +26,16 @@ public:
|
||||
dataset = torch::cat({ Xt, yresized }, 0);
|
||||
nSamples = dataset.size(1);
|
||||
weights = torch::full({ nSamples }, 1.0 / nSamples, torch::kDouble);
|
||||
weightsv = vector<double>(nSamples, 1.0 / nSamples);
|
||||
weightsv = std::vector<double>(nSamples, 1.0 / nSamples);
|
||||
classNumStates = discretize ? statest.at(classNamet).size() : 0;
|
||||
}
|
||||
torch::Tensor Xt, yt, dataset, weights;
|
||||
vector<vector<int>> Xv;
|
||||
vector<double> weightsv;
|
||||
vector<int> yv;
|
||||
vector<string> featurest, featuresv;
|
||||
map<string, vector<int>> statest, statesv;
|
||||
string classNamet, classNamev;
|
||||
std::vector<vector<int>> Xv;
|
||||
std::vector<double> weightsv;
|
||||
std::vector<int> yv;
|
||||
std::vector<string> featurest, featuresv;
|
||||
map<std::string, std::vector<int>> statest, statesv;
|
||||
std::string classNamet, classNamev;
|
||||
int nSamples, classNumStates;
|
||||
double epsilon = 1e-5;
|
||||
};
|
||||
|
Reference in New Issue
Block a user