C++ API Reference for Intel® Data Analytics Acceleration Library 2020 Update 1

linear_regression_group_of_betas_types.h
1 /* file: linear_regression_group_of_betas_types.h */
2 /*******************************************************************************
3 * Copyright 2014-2020 Intel Corporation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *******************************************************************************/
17 
18 /*
19 //++
20 // Interface for the linear regression algorithm quality metrics for a group of beta coefficients
21 //--
22 */
23 
24 #ifndef __LINEAR_REGRESSION_GROUP_OF_BETAS_TYPES_H__
25 #define __LINEAR_REGRESSION_GROUP_OF_BETAS_TYPES_H__
26 
27 #include "services/daal_shared_ptr.h"
28 #include "algorithms/algorithm.h"
29 #include "data_management/data/homogen_numeric_table.h"
30 
31 namespace daal
32 {
33 namespace algorithms
34 {
35 namespace linear_regression
36 {
37 namespace quality_metric
38 {
45 namespace group_of_betas
46 {
47 
52 enum Method
53 {
54  defaultDense = 0
55 };
56 
61 enum DataInputId
62 {
63  expectedResponses,
64  predictedResponses,
65  predictedReducedModelResponses,
66  lastDataInputId = predictedReducedModelResponses
67 };
68 
73 enum ResultId
74 {
75  expectedMeans,
76  expectedVariance,
77  regSS,
78  resSS,
79  tSS,
80  determinationCoeff,
81  fStatistics,
82  lastResultId = fStatistics
83 };
84 
85 
89 namespace interface1
90 {
91 
98 /* [Parameter source code] */
99 struct DAAL_EXPORT Parameter: public daal::algorithms::Parameter
100 {
101  Parameter(size_t nBeta, size_t nBetaReducedModel) : numBeta(nBeta), numBetaReducedModel(nBetaReducedModel), accuracyThreshold(0.001) {}
102  virtual ~Parameter() {}
103 
104  size_t numBeta;
105  size_t numBetaReducedModel;
106  double accuracyThreshold;
113  virtual services::Status check() const;
114 };
115 /* [Parameter source code] */
116 
121 class DAAL_EXPORT Input: public daal::algorithms::Input
122 {
123 public:
124  DAAL_CAST_OPERATOR(Input);
125  DAAL_DOWN_CAST_OPERATOR(Input, daal::algorithms::Input);
126 
128  Input() : daal::algorithms::Input(lastDataInputId + 1) {}
129 
130  virtual ~Input() {}
131 
137  data_management::NumericTablePtr get(DataInputId id) const
138  {
139  return data_management::NumericTable::cast(Argument::get(id));
140  }
141 
147  void set(DataInputId id, const data_management::NumericTablePtr &value)
148  {
149  Argument::set(id, value);
150  }
151 
159  services::Status check(const daal::algorithms::Parameter *par, int method) const DAAL_C11_OVERRIDE;
160 };
161 typedef services::SharedPtr<Input> InputPtr;
162 
167 class DAAL_EXPORT Result: public daal::algorithms::Result
168 {
169 public:
170  DAAL_CAST_OPERATOR(Result);
171  DAAL_DOWN_CAST_OPERATOR(Result, daal::algorithms::Result);
172 
173  Result() : daal::algorithms::Result(lastResultId + 1) {};
174 
180  data_management::NumericTablePtr get(ResultId id) const
181  {
182  return data_management::NumericTable::cast(Argument::get(id));
183  }
184 
190  void set(ResultId id, const data_management::NumericTablePtr &value)
191  {
192  Argument::set(id, value);
193  }
194 
203  template <typename algorithmFPType>
204  services::Status allocate(const daal::algorithms::Input *input, const daal::algorithms::Parameter *par, const int method)
205  {
206  const data_management::NumericTable *dependentVariableTable = (static_cast<const Input *>(input))->get(expectedResponses).get();
207  const size_t nDepVariable = dependentVariableTable->getNumberOfColumns();
208  services::Status status;
209  for(size_t i = 0; i < (lastResultId + 1); ++i)
210  {
211  Argument::set(i, data_management::HomogenNumericTable<algorithmFPType>::create
212  (nDepVariable, 1, data_management::NumericTableIface::doAllocate, 0, &status));
213  }
214  return status;
215  }
216 
225  services::Status check(const daal::algorithms::Input *input, const daal::algorithms::Parameter *par, int method) const DAAL_C11_OVERRIDE;
226 
230  int getSerializationTag() const DAAL_C11_OVERRIDE { return SERIALIZATION_LINEAR_REGRESSION_GROUP_OF_BETAS_RESULT_ID; }
231 
232 protected:
234  template<typename Archive, bool onDeserialize>
235  services::Status serialImpl(Archive *arch)
236  {
237  daal::algorithms::Result::serialImpl<Archive, onDeserialize>(arch);
238 
239  return services::Status();
240  }
241 
242  services::Status serializeImpl(data_management::InputDataArchive *arch) DAAL_C11_OVERRIDE
243  {
244  serialImpl<data_management::InputDataArchive, false>(arch);
245 
246  return services::Status();
247  }
248 
249  services::Status deserializeImpl(const data_management::OutputDataArchive *arch) DAAL_C11_OVERRIDE
250  {
251  serialImpl<const data_management::OutputDataArchive, true>(arch);
252 
253  return services::Status();
254  }
255 };
256 typedef services::SharedPtr<Result> ResultPtr;
257 
258 }
259 using interface1::Parameter;
260 using interface1::Result;
261 using interface1::Input;
262 using interface1::ResultPtr;
263 using interface1::InputPtr;
264 
265 }
267 }
268 }
269 }
270 }
271 
272 #endif // __LINEAR_REGRESSION_GROUP_OF_BETAS_TYPES_H__
daal::algorithms::linear_regression::quality_metric::group_of_betas::interface1::Result::getSerializationTag
int getSerializationTag() const DAAL_C11_OVERRIDE
Definition: linear_regression_group_of_betas_types.h:230
daal::algorithms::linear_regression::quality_metric::group_of_betas::expectedMeans
Definition: linear_regression_group_of_betas_types.h:75
daal::algorithms::linear_regression::quality_metric::group_of_betas::interface1::Parameter::numBeta
size_t numBeta
Definition: linear_regression_group_of_betas_types.h:104
daal::algorithms::linear_regression::quality_metric::group_of_betas::expectedVariance
Definition: linear_regression_group_of_betas_types.h:76
daal::algorithms::linear_regression::quality_metric::group_of_betas::interface1::Result::allocate
services::Status allocate(const daal::algorithms::Input *input, const daal::algorithms::Parameter *par, const int method)
Definition: linear_regression_group_of_betas_types.h:204
daal::algorithms::linear_regression::quality_metric::group_of_betas::tSS
Definition: linear_regression_group_of_betas_types.h:79
daal::algorithms::linear_regression::quality_metric::group_of_betas::predictedReducedModelResponses
Definition: linear_regression_group_of_betas_types.h:65
daal::algorithms::linear_regression::quality_metric::group_of_betas::predictedResponses
Definition: linear_regression_group_of_betas_types.h:64
daal::algorithms::linear_regression::quality_metric::group_of_betas::defaultDense
Definition: linear_regression_group_of_betas_types.h:54
daal::algorithms::linear_regression::quality_metric::group_of_betas::interface1::Input::set
void set(DataInputId id, const data_management::NumericTablePtr &value)
Definition: linear_regression_group_of_betas_types.h:147
daal::algorithms::linear_regression::quality_metric::group_of_betas::interface1::Input::Input
Input()
Definition: linear_regression_group_of_betas_types.h:128
daal::algorithms::linear_regression::quality_metric::group_of_betas::expectedResponses
Definition: linear_regression_group_of_betas_types.h:63
daal::algorithms::linear_regression::quality_metric::group_of_betas::interface1::Input
Input objects for a group of betas quality metrics
Definition: linear_regression_group_of_betas_types.h:121
daal::algorithms::linear_regression::quality_metric::group_of_betas::Method
Method
Definition: linear_regression_group_of_betas_types.h:52
daal::algorithms::linear_regression::quality_metric::group_of_betas::ResultId
ResultId
Available identifiers of the result of a group of betas quality metrics.
Definition: linear_regression_group_of_betas_types.h:73
daal::algorithms::linear_regression::quality_metric::group_of_betas::determinationCoeff
Definition: linear_regression_group_of_betas_types.h:80
daal::algorithms::linear_regression::quality_metric::group_of_betas::interface1::Parameter
Parameters for the compute() method of a group of betas quality metrics.
Definition: linear_regression_group_of_betas_types.h:99
daal::algorithms::linear_regression::quality_metric::group_of_betas::fStatistics
Definition: linear_regression_group_of_betas_types.h:81
daal::algorithms::linear_regression::quality_metric::group_of_betas::interface1::Result
Provides interface for the result of linear regression quality metrics.
Definition: linear_regression_group_of_betas_types.h:167
daal::algorithms::linear_regression::quality_metric::group_of_betas::interface1::Result::set
void set(ResultId id, const data_management::NumericTablePtr &value)
Definition: linear_regression_group_of_betas_types.h:190
daal::algorithms::linear_regression::quality_metric::group_of_betas::resSS
Definition: linear_regression_group_of_betas_types.h:78
daal::algorithms::math::abs::value
Definition: abs_types.h:88
daal::algorithms::linear_regression::quality_metric::group_of_betas::regSS
Definition: linear_regression_group_of_betas_types.h:77
daal::algorithms::linear_regression::quality_metric::group_of_betas::interface1::Parameter::accuracyThreshold
double accuracyThreshold
Definition: linear_regression_group_of_betas_types.h:106
daal::algorithms::linear_regression::quality_metric::group_of_betas::DataInputId
DataInputId
Available identifiers of input objects for a group of betas quality metrics.
Definition: linear_regression_group_of_betas_types.h:61
daal::algorithms::linear_regression::quality_metric::group_of_betas::interface1::Parameter::numBetaReducedModel
size_t numBetaReducedModel
Definition: linear_regression_group_of_betas_types.h:105

For more complete information about compiler optimizations, see our Optimization Notice.