10 #include <mva/methods/RegressionFastBDT.h>
11 #include <mva/interface/Interface.h>
12 #include <mva/interface/Dataset.h>
14 #include <gtest/gtest.h>
21 explicit TestDataset(
const std::vector<float>& data) : MVA::Dataset(MVA::GeneralOptions()), m_data(data)
29 [[nodiscard]]
unsigned int getNumberOfFeatures()
const override {
return 1; }
30 [[nodiscard]]
unsigned int getNumberOfSpectators()
const override {
return 0; }
31 [[nodiscard]]
unsigned int getNumberOfEvents()
const override {
return m_data.size(); }
32 void loadEvent(
unsigned int iEvent)
override
34 m_input[0] = m_data[iEvent]; m_target = 1.0 * iEvent / 10; m_isSignal = m_target == 1;
36 float getSignalFraction()
override {
return 0.1; };
37 std::vector<float> getFeature(
unsigned int)
override {
return m_data; }
39 std::vector<float> m_data;
43 TEST(RegressionFastBDTTest, RegressionFastBDTInterface)
48 general_options.m_variables = {
"A"};
50 specific_options.setMaximalBinNumber(3);
51 TestDataset dataset({1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 2.0});
53 auto teacher = interface.
getTeacher(general_options, specific_options);
54 auto weightfile = teacher->train(dataset);
57 expert->load(weightfile);
58 auto probabilities = expert->apply(dataset);
59 EXPECT_EQ(probabilities.size(), dataset.getNumberOfEvents());
60 EXPECT_EQ(probabilities.size(), 10);
62 for (
unsigned int i = 0; i < 5; ++i) {
63 EXPECT_LE(probabilities[i], 0.8);
65 for (
unsigned int i = 5; i < 10; ++i) {
66 EXPECT_GE(probabilities[i], 0.2);