OpenNN
Open-source neural networks library
Loading...
Searching...
No Matches
variable.h
Go to the documentation of this file.
1// OpenNN: Open Neural Networks Library
2// www.opennn.net
3//
4// V A R I A B L E S T R U C T U R E H E A D E R
5//
6// Artificial Intelligence Techniques SL
7// artelnics@artelnics.com
8
9#include "pch.h"
10#include "tensor_utilities.h"
11#include "enum_map.h"
12
13#pragma once
14
15namespace opennn
16{
17
20
23{
24 static const vector<pair<VariableType, string>> entries = {
25 {VariableType::None, "None"},
26 {VariableType::Numeric, "Numeric"},
27 {VariableType::Binary, "Binary"},
28 {VariableType::Categorical, "Categorical"},
29 {VariableType::DateTime, "DateTime"},
30 {VariableType::Constant, "Constant"}
31 };
32 static const EnumMap<VariableType> map{entries};
33 return map;
34}
35
37inline const string& variable_type_to_string(VariableType type)
38{
39 return variable_type_map().to_string(type);
40}
41
43inline VariableType string_to_variable_type(const string& name)
44{
45 return variable_type_map().from_string(name);
46}
47
58
61{
62 static const vector<pair<ScalerMethod, string>> entries = {
63 {ScalerMethod::None, "None"},
64 {ScalerMethod::MinimumMaximum, "MinimumMaximum"},
65 {ScalerMethod::MeanStandardDeviation, "MeanStandardDeviation"},
66 {ScalerMethod::StandardDeviation, "StandardDeviation"},
67 {ScalerMethod::Logarithm, "Logarithm"},
68 {ScalerMethod::ImageMinMax, "ImageMinMax"}
69 };
70 static const EnumMap<ScalerMethod> map{entries};
71 return map;
72}
73
75inline const string& scaler_method_to_string(ScalerMethod method)
76{
77 return scaler_method_map().to_string(method);
78}
79
81inline ScalerMethod string_to_scaler_method(const string& name)
82{
83 return scaler_method_map().from_string(name);
84}
85
96
99{
100 static const vector<pair<VariableRole, string>> entries = {
101 {VariableRole::None, "None"},
102 {VariableRole::Input, "Input"},
103 {VariableRole::Target, "Target"},
104 {VariableRole::Decoder, "Decoder"},
105 {VariableRole::InputTarget, "InputTarget"},
106 {VariableRole::Time, "Time"}
107 };
108 static const EnumMap<VariableRole> map{entries};
109 return map;
110}
111
113inline const string& variable_role_to_string(VariableRole role)
114{
115 return variable_role_map().to_string(role);
116}
117
119inline VariableRole string_to_variable_role(const string& name)
120{
121 if (name == "Id") return VariableRole::None;
122 return variable_role_map().from_string(name);
123}
124
126inline bool role_matches(VariableRole actual, VariableRole query)
127{
128 return actual == query
129 || (actual == VariableRole::InputTarget && (query == VariableRole::Input || query == VariableRole::Target));
130}
131
134{
141 Variable(const string& = {},
142 const string& = "None",
144 const string& = "MeanStandardDeviation",
145 const vector<string>& = {});
146
153 void set(const string& = {},
154 const string& = "None",
156 const string& = "MeanStandardDeviation",
157 const vector<string>& = {});
158
159 string name;
162 vector<string> categories;
164 const string& get_role() const { return variable_role_to_string(role); }
165 VariableRole get_role_type() const { return role; }
166 const string& get_scaler() const { return scaler_method_to_string(scaler); }
169 const string& get_type_string() const;
172
173 void set_scaler(const string& new_scaler) { scaler = string_to_scaler_method(new_scaler); }
174 void set_scaler(ScalerMethod new_scaler) { scaler = new_scaler; }
175 void set_role(const string& new_role) { role = string_to_variable_role(new_role); }
176 void set_role(VariableRole new_role) { role = new_role; }
178 void set_type(const string&);
179 void set_categories(const vector<string>& new_categories) { categories = new_categories; }
180
184 void to_JSON(JsonWriter&) const;
185
187 bool is_binary() const { return type == VariableType::Binary; }
191 bool is_used() const { return role != VariableRole::None && role != VariableRole::Time; }
192
194 Index feature_count() const { return is_categorical() ? get_categories_number() : 1; }
195
197 vector<string> get_names() const;
198
199};
200
201}
Definition json.h:72
Definition json.h:85
Definition adaptive_moment_estimation.h:14
const EnumMap< ScalerMethod > & scaler_method_map()
Returns the bidirectional string/enum map for ScalerMethod.
Definition variable.h:60
VariableRole
Role a Variable plays in a dataset (input feature, target, decoder, time axis, etc....
Definition variable.h:88
@ InputTarget
Definition variable.h:93
@ Input
Definition variable.h:90
@ None
Definition variable.h:89
@ Time
Definition variable.h:94
@ Target
Definition variable.h:91
@ Decoder
Definition variable.h:92
bool role_matches(VariableRole actual, VariableRole query)
Returns true if actual satisfies query, treating InputTarget as Input or Target.
Definition variable.h:126
const EnumMap< VariableRole > & variable_role_map()
Returns the bidirectional string/enum map for VariableRole.
Definition variable.h:98
ScalerMethod
Feature scaling strategy applied to a Variable before training.
Definition variable.h:50
@ MeanStandardDeviation
Definition variable.h:53
@ Logarithm
Definition variable.h:55
@ StandardDeviation
Definition variable.h:54
@ None
Definition variable.h:51
@ MinimumMaximum
Definition variable.h:52
@ ImageMinMax
Definition variable.h:56
const string & variable_role_to_string(VariableRole role)
Returns the canonical string name for a VariableRole.
Definition variable.h:113
const EnumMap< VariableType > & variable_type_map()
Returns the bidirectional string/enum map for VariableType.
Definition variable.h:22
ScalerMethod string_to_scaler_method(const string &name)
Parses a string into the matching ScalerMethod enumerator.
Definition variable.h:81
@ None
Definition dataset.h:27
VariableType
Data type of a dataset Variable.
Definition variable.h:19
@ Categorical
Definition variable.h:19
@ None
Definition variable.h:19
@ Binary
Definition variable.h:19
@ Numeric
Definition variable.h:19
@ DateTime
Definition variable.h:19
@ Constant
Definition variable.h:19
const string & scaler_method_to_string(ScalerMethod method)
Returns the canonical string name for a ScalerMethod.
Definition variable.h:75
const string & variable_type_to_string(VariableType type)
Returns the canonical string name for a VariableType.
Definition variable.h:37
VariableRole string_to_variable_role(const string &name)
Parses a string into a VariableRole; "Id" is mapped to VariableRole::None.
Definition variable.h:119
VariableType string_to_variable_type(const string &name)
Parses a string into the matching VariableType enumerator.
Definition variable.h:43
Definition enum_map.h:18
const string & to_string(Enum value) const
Definition enum_map.h:23
const string & get_role() const
Definition variable.h:164
Variable(const string &={}, const string &="None", const VariableType &=VariableType::Numeric, const string &="MeanStandardDeviation", const vector< string > &={})
Constructs a Variable with optional name, role, type, scaler and category list.
void set_categories(const vector< string > &new_categories)
Definition variable.h:179
Index feature_count() const
Returns the number of features generated by this Variable (categories or one).
Definition variable.h:194
string name
Definition variable.h:159
Index get_categories_number() const
Returns the number of categories for categorical variables (zero otherwise).
void set_scaler(ScalerMethod new_scaler)
Definition variable.h:174
void set_type(const string &)
Sets the Variable type from its canonical string name.
bool is_used() const
Returns true if the Variable has an active role other than Time.
Definition variable.h:191
void set_role(VariableRole new_role)
Definition variable.h:176
bool is_categorical() const
Returns true if the Variable type is Categorical.
Definition variable.h:189
void to_JSON(JsonWriter &) const
Writes Variable fields to a JSON writer.
vector< string > get_names() const
Returns the expanded feature names (one per category for categorical variables).
void set(const string &={}, const string &="None", const VariableType &=VariableType::Numeric, const string &="MeanStandardDeviation", const vector< string > &={})
Resets the Variable fields to the supplied values.
vector< string > categories
Definition variable.h:162
const string & get_type_string() const
Returns the canonical string name of the Variable type.
void set_scaler(const string &new_scaler)
Definition variable.h:173
VariableRole get_role_type() const
Definition variable.h:165
void set_role(const string &new_role)
Definition variable.h:175
bool is_binary() const
Returns true if the Variable type is Binary.
Definition variable.h:187
VariableRole role
Definition variable.h:160
ScalerMethod scaler
Definition variable.h:163
ScalerMethod get_scaler_type() const
Definition variable.h:167
void from_JSON(const JsonDocument &)
Loads Variable fields from a JSON document.
VariableType type
Definition variable.h:161
const string & get_scaler() const
Definition variable.h:166