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

Function thundersvm_train_sub

src/thundersvm/svm_interface_api.cpp:19–91  ·  view source on GitHub ↗

void DataSet_load_from_python(DataSet *dataset, float *y, char **x, int len) {dataset->load_from_python(y, x, len);}

Source from the content-addressed store, hash-verified

17 DataSet* DataSet_new() {return new DataSet();}
18 //void DataSet_load_from_python(DataSet *dataset, float *y, char **x, int len) {dataset->load_from_python(y, x, len);}
19 void thundersvm_train_sub(DataSet& train_dataset, CMDParser& parser, char* model_file_path){
20 SvmModel *model = nullptr;
21 switch (parser.param_cmd.svm_type) {
22 case SvmParam::C_SVC:
23 model = new SVC();
24 break;
25 case SvmParam::NU_SVC:
26 model = new NuSVC();
27 break;
28 case SvmParam::ONE_CLASS:
29 model = new OneClassSVC();
30 break;
31 case SvmParam::EPSILON_SVR:
32 model = new SVR();
33 break;
34 case SvmParam::NU_SVR:
35 model = new NuSVR();
36 break;
37 }
38
39 //todo add this to check_parameter method
40 if (parser.param_cmd.svm_type == SvmParam::NU_SVC) {
41 train_dataset.group_classes();
42 for (int i = 0; i < train_dataset.n_classes(); ++i) {
43 int n1 = train_dataset.count()[i];
44 for (int j = i + 1; j < train_dataset.n_classes(); ++j) {
45 int n2 = train_dataset.count()[j];
46 if (parser.param_cmd.nu * (n1 + n2) / 2 > min(n1, n2)) {
47 printf("specified nu is infeasible\n");
48 return;
49 }
50 }
51 }
52 }
53 if (parser.param_cmd.kernel_type != SvmParam::LINEAR)
54 if (!parser.gamma_set) {
55 parser.param_cmd.gamma = 1.f / train_dataset.n_features();
56 }
57#ifdef USE_CUDA
58 CUDA_CHECK(cudaSetDevice(parser.gpu_id));
59#endif
60
61 vector<float_type> predict_y, test_y;
62 if (parser.do_cross_validation) {
63 predict_y = model->cross_validation(train_dataset, parser.param_cmd, parser.nr_fold);
64 } else {
65 model->train(train_dataset, parser.param_cmd);
66 model->save_to_file(model_file_path);
67 LOG(INFO) << "evaluating training score";
68 predict_y = model->predict(train_dataset.instances(), -1);
69 //predict_y = model->predict(train_dataset.instances(), 10000);
70 //test_y = train_dataset.y();
71 }
72 Metric *metric = nullptr;
73 switch (parser.param_cmd.svm_type) {
74 case SvmParam::C_SVC:
75 case SvmParam::NU_SVC: {
76 metric = new Accuracy();

Callers 2

thundersvm_trainFunction · 0.85

Calls 11

minFunction · 0.85
group_classesMethod · 0.80
n_classesMethod · 0.80
cross_validationMethod · 0.80
instancesMethod · 0.80
nameMethod · 0.80
scoreMethod · 0.80
n_featuresMethod · 0.45
trainMethod · 0.45
save_to_fileMethod · 0.45
predictMethod · 0.45

Tested by

no test coverage detected