liblinear_train_regression.m 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. function svmmodel = liblinear_train_regression ( labels, feat, settings )
  2. %
  3. % BRIEF
  4. % A simple wrapper to provide training of regression for LIBLINEAR. No
  5. % further settings are adjustable currently.
  6. %
  7. % INPUT
  8. % labels -- labels (#sample x 1)
  9. % feat -- features for training images (#samples x # dimensions)
  10. % settings -- struct for configuring the svm model training, e.g., via
  11. % 'b_verbose', 'f_svm_C', ...
  12. %
  13. % OUTPUT:
  14. % svmmodel -- resulting model
  15. %
  16. % date: 30-04-2014 ( dd-mm-yyyy )
  17. % last modified: 22-10-2015
  18. % author: Alexander Freytag, Christoph Käding
  19. if ( nargin < 3 )
  20. settings = [];
  21. end
  22. libsvm_options = '';
  23. % outputs for training
  24. if ( ~ getFieldWithDefault ( settings, 'b_verbose', false ) )
  25. libsvm_options = sprintf('%s -q', libsvm_options);
  26. end
  27. % cost parameter
  28. f_svm_C = getFieldWithDefault ( settings, 'f_svm_C', 1);
  29. libsvm_options = sprintf('%s -c %f', libsvm_options, f_svm_C);
  30. % do we want to use an offset for the hyperplane?
  31. if ( getFieldWithDefault ( settings, 'b_addOffset', false) )
  32. libsvm_options = sprintf('%s -B 1', libsvm_options);
  33. end
  34. % add multithreading
  35. % NOTE: - requires liblinear-multicore
  36. % - supports only -s 0, -s 2, or -s 11 (so far)
  37. i_numThreads = getFieldWithDefault ( settings, 'i_numThreads', 1);
  38. if i_numThreads > 1
  39. libsvm_options = sprintf('%s -n %d', libsvm_options, i_numThreads);
  40. end
  41. % which solver to use
  42. % copied from the liblinear manual:
  43. % for regression
  44. % 11 -- L2-regularized L2-loss support vector regression (primal)
  45. % 12 -- L2-regularized L2-loss support vector regression (dual)
  46. % 13 -- L2-regularized L1-loss support vector regression (dual)
  47. i_svmSolver = getFieldWithDefault ( settings, 'i_svmSolver', 11);
  48. libsvm_options = sprintf('%s -s %d', libsvm_options, i_svmSolver);
  49. %# train regression model
  50. svmmodel = train( labels, feat, libsvm_options );
  51. end