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

Function main

src/thundersvm/thundersvm-train.cpp:19–127  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17#endif
18
19int main(int argc, char **argv) {
20 try {
21 el::Loggers::addFlag(el::LoggingFlag::FixedTimeFormat);
22 CMDParser parser;
23 parser.parse_command_line(argc, argv);
24 DataSet train_dataset;
25 train_dataset.load_from_file(parser.svmtrain_input_file_name);
26 std::shared_ptr<SvmModel> model;
27 switch (parser.param_cmd.svm_type) {
28 case SvmParam::C_SVC:
29 model.reset(new SVC());
30 LOG(INFO) << "training C-SVC";
31 LOG(INFO) << "C = " << parser.param_cmd.C;
32 break;
33 case SvmParam::NU_SVC:
34 model.reset(new NuSVC());
35 LOG(INFO) << "training nu-SVC";
36 LOG(INFO) << "nu = " << parser.param_cmd.nu;
37 break;
38 case SvmParam::ONE_CLASS:
39 model.reset(new OneClassSVC());
40 LOG(INFO) << "training one-class SVM";
41 LOG(INFO) << "C = " << parser.param_cmd.C;
42 break;
43 case SvmParam::EPSILON_SVR:
44 model.reset(new SVR());
45 LOG(INFO) << "training epsilon-SVR";
46 LOG(INFO) << "C = " << parser.param_cmd.C << " p = " << parser.param_cmd.p;
47 break;
48 case SvmParam::NU_SVR:
49 model.reset(new NuSVR());
50 LOG(INFO) << "training nu-SVR";
51 LOG(INFO) << "nu = " << parser.param_cmd.nu;
52 break;
53 }
54
55 //todo add this to check_parameter method
56 if (parser.param_cmd.svm_type == SvmParam::NU_SVC) {
57 train_dataset.group_classes();
58 for (int i = 0; i < train_dataset.n_classes(); ++i) {
59 int n1 = train_dataset.count()[i];
60 for (int j = i + 1; j < train_dataset.n_classes(); ++j) {
61 int n2 = train_dataset.count()[j];
62 if (parser.param_cmd.nu * (n1 + n2) / 2 > min(n1, n2)) {
63 printf("specified nu is infeasible\n");
64 return 1;
65 }
66 }
67 }
68 }
69 if (parser.param_cmd.kernel_type != SvmParam::LINEAR)
70 if (!parser.gamma_set) {
71 parser.param_cmd.gamma = 1.f / train_dataset.n_features();
72 LOG(WARNING) << "using default gamma=" << parser.param_cmd.gamma;
73 } else {
74 LOG(INFO) << "gamma = " << parser.param_cmd.gamma;
75 }
76

Callers

nothing calls this directly

Calls 12

addFlagFunction · 0.85
minFunction · 0.85
parse_command_lineMethod · 0.80
group_classesMethod · 0.80
n_classesMethod · 0.80
cross_validationMethod · 0.80
nameMethod · 0.80
scoreMethod · 0.80
load_from_fileMethod · 0.45
n_featuresMethod · 0.45
trainMethod · 0.45
save_to_fileMethod · 0.45

Tested by

no test coverage detected