ppforest2 v0.1.0
Projection Pursuit Decision Trees and Random Forests
Loading...
Searching...
No Matches
TreeNode.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4#include <set>
5
6#include "utils/Types.hpp"
7
8namespace ppforest2 {
9 struct TreeCondition;
10 struct TreeResponse;
11
19 struct TreeNode {
20 using Ptr = std::unique_ptr<TreeNode>;
21
28 struct Visitor {
29 virtual void visit(TreeCondition const& condition) = 0;
30 virtual void visit(TreeResponse const& response) = 0;
31 };
32
34 bool degenerate = false;
35
36 virtual ~TreeNode() = default;
37
39 virtual void accept(Visitor& visitor) const = 0;
40
47 virtual types::Response predict(types::FeatureVector const& data) const = 0;
48
50 virtual types::Response response() const = 0;
51
55 virtual int group_count() const = 0;
56
60 virtual std::set<types::Response> node_groups() const = 0;
61
63 virtual bool is_leaf() const = 0;
64
66 virtual bool equals(TreeNode const& other) const = 0;
67
69 virtual Ptr clone() const = 0;
70
71 bool operator==(TreeNode const& other) const;
72 bool operator!=(TreeNode const& other) const;
73 };
74}
Eigen::Matrix< Feature, Eigen::Dynamic, 1 > FeatureVector
Dynamic-size column vector of feature values.
Definition Types.hpp:26
int Response
Scalar type for group labels (integer).
Definition Types.hpp:21
Definition Benchmark.hpp:22
Internal split node in a projection pursuit tree.
Definition TreeCondition.hpp:19
Visitor interface for tree node dispatch.
Definition TreeNode.hpp:28
virtual void visit(TreeResponse const &response)=0
virtual void visit(TreeCondition const &condition)=0
Abstract base class for nodes in a projection pursuit tree.
Definition TreeNode.hpp:19
virtual bool is_leaf() const =0
Whether this node is a leaf (TreeResponse).
virtual std::set< types::Response > node_groups() const =0
Sorted set of group labels reachable from this node.
bool operator!=(TreeNode const &other) const
virtual types::Response response() const =0
The group label at this node (leaf value or majority group).
bool degenerate
Whether this node (or any descendant) had a degenerate split.
Definition TreeNode.hpp:34
virtual void accept(Visitor &visitor) const =0
Accept a tree node visitor (double dispatch).
virtual bool equals(TreeNode const &other) const =0
Structural equality comparison (value-based).
virtual types::Response predict(types::FeatureVector const &data) const =0
Predict the group label for a single observation.
std::unique_ptr< TreeNode > Ptr
Definition TreeNode.hpp:20
virtual int group_count() const =0
Number of distinct groups reachable from this node.
virtual ~TreeNode()=default
bool operator==(TreeNode const &other) const
virtual Ptr clone() const =0
Deep copy of this node and its subtree.
Leaf node in a projection pursuit tree.
Definition TreeResponse.hpp:12