TTK
Loading...
Searching...
No Matches
DimensionReduction.h
Go to the documentation of this file.
1
40
41#pragma once
42
43#include <Debug.h>
44
45namespace ttk {
46
47 class DimensionReduction : virtual public Debug {
48
49 public:
51
53 enum class METHOD {
55 SE = 0,
57 LLE = 1,
59 MDS = 2,
61 T_SNE = 3,
63 ISOMAP = 4,
65 PCA = 5,
66 };
67
68 inline void setSEParameters(const std::string &Affinity,
69 const float Gamma,
70 const std::string &EigenSolver,
71 const bool InputIsADistanceMatrix) {
72 if(InputIsADistanceMatrix) {
73 se_Affinity = "precomputed";
74 } else {
75 se_Affinity = Affinity;
76 }
77 se_Gamma = Gamma;
78 se_EigenSolver = EigenSolver;
79 }
80
81 inline void setLLEParameters(const float Regularization,
82 const std::string &EigenSolver,
83 const float Tolerance,
84 const int MaxIteration,
85 const std::string &Method_s,
86 const float HessianTolerance,
87 const float ModifiedTolerance,
88 const std::string &NeighborsAlgorithm) {
89 lle_Regularization = Regularization;
90 lle_EigenSolver = EigenSolver;
91 lle_Tolerance = Tolerance;
92 lle_MaxIteration = MaxIteration;
93 lle_Method = Method_s;
94 lle_HessianTolerance = HessianTolerance;
95 lle_ModifiedTolerance = ModifiedTolerance;
96 lle_NeighborsAlgorithm = NeighborsAlgorithm;
97 }
98
99 inline void setMDSParameters(const bool Metric,
100 const int Init,
101 const int MaxIteration,
102 const int Verbose,
103 const float Epsilon,
104 const bool Dissimilarity) {
105 mds_Metric = Metric;
106 mds_Init = Init;
107 mds_MaxIteration = MaxIteration;
108 mds_Verbose = Verbose;
109 mds_Epsilon = Epsilon;
110 if(Dissimilarity) {
111 mds_Dissimilarity = "precomputed";
112 } else {
113 mds_Dissimilarity = "euclidean";
114 }
115 }
116
117 inline void setTSNEParameters(const float Perplexity,
118 const float Exaggeration,
119 const float LearningRate,
120 const int MaxIteration,
121 const int MaxIterationProgress,
122 const float GradientThreshold,
123 const std::string &Metric,
124 const std::string &Init,
125 const int Verbose,
126 const std::string &Method_s,
127 const float Angle) {
128 tsne_Perplexity = Perplexity;
129 tsne_Exaggeration = Exaggeration;
130 tsne_LearningRate = LearningRate;
131 tsne_MaxIteration = MaxIteration;
132 tsne_MaxIterationProgress = MaxIterationProgress;
133 tsne_GradientThreshold = GradientThreshold;
134 tsne_Metric = Metric;
135 tsne_Init = Init;
136 tsne_Verbose = Verbose;
137 tsne_Method = Method_s;
138 tsne_Angle = Angle;
139 }
140
141 inline void setISOParameters(const std::string &EigenSolver,
142 const float Tolerance,
143 const int MaxIteration,
144 const std::string &PathMethod,
145 const std::string &NeighborsAlgorithm) {
146 iso_EigenSolver = EigenSolver;
147 iso_Tolerance = Tolerance;
148 iso_MaxIteration = MaxIteration;
149 iso_PathMethod = PathMethod;
150 iso_NeighborsAlgorithm = NeighborsAlgorithm;
151 }
152
153 inline void setPCAParameters(const bool Copy,
154 const bool Whiten,
155 const std::string &SVDSolver,
156 const float Tolerance,
157 const std::string &MaxIteration) {
158 pca_Copy = Copy;
159 pca_Whiten = Whiten;
160 pca_SVDSolver = SVDSolver;
161 pca_Tolerance = Tolerance;
162 pca_MaxIteration = MaxIteration;
163 }
164
165 inline void setInputModulePath(const std::string &modulePath) {
166 ModulePath = modulePath;
167 }
168
169 inline void setInputModuleName(const std::string &moduleName) {
170 ModuleName = moduleName;
171 }
172
173 inline void setInputFunctionName(const std::string &functionName) {
174 FunctionName = functionName;
175 }
176
177 inline void setInputMethod(METHOD method) {
178 this->Method = method;
179 }
180
181 inline void setInputNumberOfComponents(const int numberOfComponents) {
182 this->NumberOfComponents = numberOfComponents;
183 }
184
185 inline void setInputNumberOfNeighbors(const int numberOfNeighbors) {
186 this->NumberOfNeighbors = numberOfNeighbors;
187 }
188
189 inline void setInputIsDeterministic(const int isDeterm) {
190 this->IsDeterministic = isDeterm;
191 }
192
193 inline void setIsInputDistanceMatrix(const bool data) {
194 if(data) {
195 this->se_Affinity = "precomputed";
196 this->mds_Dissimilarity = "precomputed";
197 this->tsne_Metric = "precomputed";
198 this->iso_Metric = "precomputed";
199 } else {
200 this->se_Affinity = "nearest_neighbors";
201 this->mds_Dissimilarity = "euclidean";
202 this->tsne_Metric = "euclidean";
203 this->iso_Metric = "euclidean";
204 }
205 }
206
207 bool isPythonFound() const;
208
209 int execute(std::vector<std::vector<double>> &outputEmbedding,
210 const std::vector<double> &inputMatrix,
211 const int nRows,
212 const int nColumns) const;
213
214 protected:
215 // se
216 std::string se_Affinity{"nearest_neighbors"};
217 float se_Gamma{1};
218 std::string se_EigenSolver{"auto"};
219
220 // lle
222 std::string lle_EigenSolver{"auto"};
223 float lle_Tolerance{1e-3};
225 std::string lle_Method{"standard"};
228 std::string lle_NeighborsAlgorithm{"auto"};
229
230 // mds
231 bool mds_Metric{true};
232 int mds_Init{4};
235 float mds_Epsilon{0};
236 std::string mds_Dissimilarity{"euclidean"};
237
238 // tsne
245 std::string tsne_Metric{"euclidean"};
246 std::string tsne_Init{"random"};
248 std::string tsne_Method{"barnes_hut"};
249 float tsne_Angle{0.5};
250
251 // iso
252 std::string iso_EigenSolver{"auto"};
253 float iso_Tolerance{1e-3};
255 std::string iso_PathMethod{"auto"};
256 std::string iso_NeighborsAlgorithm{"auto"};
257 std::string iso_Metric{"euclidean"};
258
259 // pca
260 bool pca_Copy{true};
261 bool pca_Whiten{false};
262 std::string pca_SVDSolver{"auto"};
264 std::string pca_MaxIteration{"auto"};
265
266 // testing
267 std::string ModulePath{"default"};
268 std::string ModuleName{"dimensionReduction"};
269 std::string FunctionName{"doIt"};
270
275 char majorVersion_{'0'};
276 };
277} // namespace ttk
Minimalist debugging class.
Definition: Debug.h:88
TTK VTK-filter that apply dimension reduction algorithms on input.
void setInputIsDeterministic(const int isDeterm)
void setPCAParameters(const bool Copy, const bool Whiten, const std::string &SVDSolver, const float Tolerance, const std::string &MaxIteration)
void setInputNumberOfNeighbors(const int numberOfNeighbors)
void setInputModuleName(const std::string &moduleName)
void setIsInputDistanceMatrix(const bool data)
void setTSNEParameters(const float Perplexity, const float Exaggeration, const float LearningRate, const int MaxIteration, const int MaxIterationProgress, const float GradientThreshold, const std::string &Metric, const std::string &Init, const int Verbose, const std::string &Method_s, const float Angle)
void setLLEParameters(const float Regularization, const std::string &EigenSolver, const float Tolerance, const int MaxIteration, const std::string &Method_s, const float HessianTolerance, const float ModifiedTolerance, const std::string &NeighborsAlgorithm)
void setISOParameters(const std::string &EigenSolver, const float Tolerance, const int MaxIteration, const std::string &PathMethod, const std::string &NeighborsAlgorithm)
void setSEParameters(const std::string &Affinity, const float Gamma, const std::string &EigenSolver, const bool InputIsADistanceMatrix)
void setInputMethod(METHOD method)
void setInputFunctionName(const std::string &functionName)
void setMDSParameters(const bool Metric, const int Init, const int MaxIteration, const int Verbose, const float Epsilon, const bool Dissimilarity)
void setInputModulePath(const std::string &modulePath)
void setInputNumberOfComponents(const int numberOfComponents)
int execute(std::vector< std::vector< double > > &outputEmbedding, const std::vector< double > &inputMatrix, const int nRows, const int nColumns) const
The Topology ToolKit.