| 297 | } |
| 298 | |
| 299 | bool CMDParser::check_parameter() { |
| 300 | SvmParam::SVM_TYPE svm_type = param_cmd.svm_type; |
| 301 | if (svm_type < SvmParam::C_SVC || svm_type > SvmParam::NU_SVR) { |
| 302 | LOG(ERROR) << "unknown svm type"; |
| 303 | return false; |
| 304 | } |
| 305 | SvmParam::KERNEL_TYPE kernel_type = param_cmd.kernel_type; |
| 306 | if (kernel_type < SvmParam::LINEAR || kernel_type > SvmParam::PRECOMPUTED) { |
| 307 | LOG(ERROR) << "unknown kernel type"; |
| 308 | return false; |
| 309 | } |
| 310 | if (param_cmd.gamma < 0) { |
| 311 | LOG(ERROR) << "gamma < 0"; |
| 312 | return false; |
| 313 | } |
| 314 | if (param_cmd.degree < 0) { |
| 315 | LOG(ERROR) << "degree of polynomial kernel < 0"; |
| 316 | return false; |
| 317 | } |
| 318 | if (param_cmd.epsilon <= 0) { |
| 319 | LOG(ERROR) << "epsilon <= 0"; |
| 320 | return false; |
| 321 | } |
| 322 | if (svm_type == SvmParam::C_SVC || svm_type == SvmParam::EPSILON_SVR || svm_type == SvmParam::NU_SVR) |
| 323 | if (param_cmd.C <= 0) { |
| 324 | LOG(ERROR) << "C <= 0"; |
| 325 | return false; |
| 326 | } |
| 327 | if (svm_type == SvmParam::NU_SVC || svm_type == SvmParam::ONE_CLASS || svm_type == SvmParam::NU_SVR) |
| 328 | if (param_cmd.nu <= 0 || param_cmd.nu > 1) { |
| 329 | LOG(ERROR) << "nu <= 0 or nu > 1"; |
| 330 | return false; |
| 331 | } |
| 332 | if (svm_type == SvmParam::EPSILON_SVR) |
| 333 | if (param_cmd.p < 0) { |
| 334 | LOG(ERROR) << "p < 0"; |
| 335 | return false; |
| 336 | } |
| 337 | if (param_cmd.max_mem_size <= 0) { |
| 338 | LOG(ERROR) << "max memory size <= 0"; |
| 339 | return false; |
| 340 | } |
| 341 | if (param_cmd.probability != 0 && param_cmd.probability != 1) { |
| 342 | LOG(ERROR) << "probability != 0 and probability != 1"; |
| 343 | return false; |
| 344 | } |
| 345 | if (param_cmd.probability == 1 && |
| 346 | (svm_type == SvmParam::ONE_CLASS || svm_type == SvmParam::EPSILON_SVR || svm_type == SvmParam::NU_SVR)) { |
| 347 | LOG(ERROR) << "one-class SVM and SVR probability output not supported yet"; |
| 348 | return false; |
| 349 | } |
| 350 | return true; |
| 351 | } |
no outgoing calls
no test coverage detected