Medial Code Documentation
Loading...
Searching...
No Matches
feature_map.h
Go to the documentation of this file.
1
7#ifndef XGBOOST_FEATURE_MAP_H_
8#define XGBOOST_FEATURE_MAP_H_
9
10#include <xgboost/logging.h>
11
12#include <vector>
13#include <string>
14#include <cstring>
15#include <iostream>
16
17namespace xgboost {
23 public:
25 enum Type {
26 kIndicator = 0,
27 kQuantitive = 1,
28 kInteger = 2,
29 kFloat = 3,
30 kCategorical = 4
31 };
36 inline void LoadText(std::istream& is) { // NOLINT(*)
37 int fid;
38 std::string fname, ftype;
39 while (is >> fid >> fname >> ftype) {
40 this->PushBack(fid, fname.c_str(), ftype.c_str());
41 }
42 }
49 inline void PushBack(int fid, const char *fname, const char *ftype) {
50 CHECK_EQ(fid, static_cast<int>(names_.size()));
51 names_.emplace_back(fname);
52 types_.push_back(GetType(ftype));
53 }
55 inline void Clear() {
56 names_.clear();
57 types_.clear();
58 }
60 inline size_t Size() const {
61 return names_.size();
62 }
64 inline const char* Name(size_t idx) const {
65 CHECK_LT(idx, names_.size()) << "FeatureMap feature index exceed bound";
66 return names_[idx].c_str();
67 }
69 Type TypeOf(size_t idx) const {
70 CHECK_LT(idx, names_.size()) << "FeatureMap feature index exceed bound";
71 return types_[idx];
72 }
73
74 private:
80 inline static Type GetType(const char* tname) {
81 using std::strcmp;
82 if (!strcmp("i", tname)) return kIndicator;
83 if (!strcmp("q", tname)) return kQuantitive;
84 if (!strcmp("int", tname)) return kInteger;
85 if (!strcmp("float", tname)) return kFloat;
86 if (!strcmp("c", tname)) return kCategorical;
87 LOG(FATAL) << "unknown feature type, use i for indicator and q for quantity";
88 return kIndicator;
89 }
91 std::vector<std::string> names_;
93 std::vector<Type> types_;
94};
95} // namespace xgboost
96#endif // XGBOOST_FEATURE_MAP_H_
Feature map data structure to help text model dump. TODO(tqchen) consider make it even more lightweig...
Definition feature_map.h:22
void Clear()
clear the feature map
Definition feature_map.h:55
void LoadText(std::istream &is)
load feature map from input stream
Definition feature_map.h:36
const char * Name(size_t idx) const
Definition feature_map.h:64
Type
type of feature maps
Definition feature_map.h:25
void PushBack(int fid, const char *fname, const char *ftype)
push back feature map.
Definition feature_map.h:49
Type TypeOf(size_t idx) const
Definition feature_map.h:69
size_t Size() const
Definition feature_map.h:60
defines console logging options for xgboost. Use to enforce unified print behavior.
namespace of xgboost
Definition base.h:90