-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSplit.hpp
49 lines (35 loc) · 1.2 KB
/
Split.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#ifndef Split_hpp
#define Split_hpp
#include "Dataset.hpp"
class Split {
protected:
const Feature* feature;
Split(const Feature* feature) : feature(feature) {}
public:
static Split* createSplit(int featureIndex, const DatasetMetadata* metadata, const vector<Instance*>& instances, double* informationGain);
const Feature* getFeature() const {
return feature;
}
double getValue(const Instance* instance) const {
return instance->featureVector[feature->getIndex()];
}
virtual int split(const Instance* instance) const = 0;
virtual string toString(int index) const = 0;
virtual ~Split() {}
};
class NumericSplit : public Split {
private:
double threshold;
public:
NumericSplit(const NumericFeature* feature, double threshold) : Split(feature), threshold(threshold) {}
virtual int split(const Instance* instance) const;
virtual string toString(int index) const;
};
class NominalSplit : public Split {
private:
public:
NominalSplit(const NominalFeature* feature) : Split(feature) {}
virtual int split(const Instance* instance) const;
virtual string toString(int index) const;
};
#endif /* Split_hpp */