MCPcopy Create free account
hub / github.com/Xtra-Computing/thundersvm / train

Method train

src/thundersvm/model/svr.cpp:9–41  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7#include "thundersvm/model/svr.h"
8
9void SVR::train(const DataSet &dataset, SvmParam param) {
10 model_setup(dataset, param);
11
12 int n_instances = dataset.n_instances();
13 //duplicate instances
14 DataSet::node2d instances_2(dataset.instances());
15 instances_2.insert(instances_2.end(), dataset.instances().begin(), dataset.instances().end());
16
17 KernelMatrix kernelMatrix(instances_2, param);
18
19 SyncArray<float_type> f_val(n_instances * 2);
20 SyncArray<int> y(n_instances * 2);
21
22 float_type *f_val_data = f_val.host_data();
23 int *y_data = y.host_data();
24 for (int i = 0; i < n_instances; ++i) {
25 f_val_data[i] = param.p - dataset.y()[i];
26 y_data[i] = +1;
27 f_val_data[i + n_instances] = -param.p - dataset.y()[i];
28 y_data[i + n_instances] = -1;
29 }
30
31 SyncArray<float_type> alpha_2(n_instances * 2);
32 alpha_2.mem_set(0);
33 int ws_size = get_working_set_size(n_instances * 2, kernelMatrix.n_features());
34 CSMOSolver solver;
35 solver.solve(kernelMatrix, y, alpha_2, rho.host_data()[0], f_val, param.epsilon, param.C, param.C, ws_size, max_iter);
36 save_svr_coef(alpha_2, dataset.instances());
37
38 if(param.kernel_type == SvmParam::LINEAR){
39 compute_linear_coef_single_model(dataset.n_features(), dataset.is_zero_based());
40 }
41}
42
43void SVR::save_svr_coef(const SyncArray<float_type> &alpha_2, const DataSet::node2d &instances) {
44 LOG(INFO) << "rho = " << rho.host_data()[0];

Callers

nothing calls this directly

Calls 9

instancesMethod · 0.80
endMethod · 0.80
mem_setMethod · 0.80
solveMethod · 0.80
is_zero_basedMethod · 0.80
n_instancesMethod · 0.45
beginMethod · 0.45
host_dataMethod · 0.45
n_featuresMethod · 0.45

Tested by

no test coverage detected