Package gov.nih.mipav.model.algorithms
Class LIBSVM
java.lang.Object
java.lang.Thread
gov.nih.mipav.model.algorithms.AlgorithmBase
gov.nih.mipav.model.algorithms.LIBSVM
- All Implemented Interfaces:
ActionListener,WindowListener,Runnable,EventListener
Copyright (c) 2000-2023 Chih-Chung Chang and Chih-Jen Lin
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither name of copyright holders nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Libsvm is a simple, easy-to-use, and efficient software for SVM
classification and regression. It solves C-SVM classification, nu-SVM
classification, one-class-SVM, epsilon-SVM regression, and nu-SVM
regression. It also provides an automatic model selection tool for
C-SVM classification. This document explains the use of libsvm.
Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for support
vector machines. ACM Transactions on Intelligent Systems and
Technology, 2:27:1--27:27, 2011. Software available at
http://www.csie.ntu.edu.tw/~cjlin/libsvm
LIBSVM implementation document is available at
http://www.csie.ntu.edu.tw/~cjlin/papers/libsvm.pdf
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) class(package private) class(package private) class(package private) class(package private) class(package private) class(package private) final class(package private) classclassclassclassstatic interfaceclass(package private) class(package private) classNested classes/interfaces inherited from class java.lang.Thread
Thread.Builder, Thread.State, Thread.UncaughtExceptionHandler -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate intprivate Stringprivate double[]private double[]private String(package private) final String[]final intprivate Stringprivate doubleprivate intprivate LIBSVM.svm_modelprivate Stringprivate longprivate intprivate longprivate LIBSVM.svm_parameterprivate LIBSVM.svm_problemfinal Randomprivate LIBSVM.svm_print_interfaceprivate LIBSVM.svm_print_interfaceprivate LIBSVM.svm_print_interface(package private) final String[]private doubleprivate doubleprivate doubleprivate doubleprivate booleanprivate doubleFields inherited from class gov.nih.mipav.model.algorithms.AlgorithmBase
destFlag, destImage, image25D, mask, maxProgressValue, minProgressValue, multiThreadingEnabled, nthreads, progress, progressModulus, progressStep, runningInSeparateThread, separable, srcImage, threadStoppedFields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate doubleprivate intprivate void(package private) doubledot(LIBSVM.svm_node[] x, LIBSVM.svm_node[] y) (package private) void(package private) doublek_function(LIBSVM.svm_node[] x, LIBSVM.svm_node[] y, LIBSVM.svm_parameter param) private voidmulticlass_probability(int k, double[][] r, double[] p) private voidoutput(int index, double value) private voidoutput_target(double value) private voidparse_command_line(String[] argv, boolean haveFile) private doublepowi(double base, int times) private voidpredict(BufferedReader input, DataOutputStream output, LIBSVM.svm_model model, int predict_probability) private voidprivate doublepredict_one_class_probability(LIBSVM.svm_model model, double dec_value) private booleanread_model_header(BufferedReader fp, LIBSVM.svm_model model) private voidprivate voidread_XY(double[][] Xin, double[] y) private Stringprivate BufferedReaderrewind(BufferedReader fp, String filename) voidrun_svm_predict(String[] argv) voidrun_svm_scale(String[] argv) voidrun_svm_toy(String[] args) run_svm_train(double[][] Xin, double[] y, String[] argv) voidrun_svm_train(String[] argv) voidActually runs the algorithm.private voidprivate doublesigmoid_predict(double decision_value, double A, double B) private voidsigmoid_train(int l, double[] dec_values, double[] labels, double[] probAB) private voidsolve_c_svc(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param, double[] alpha, LIBSVM.Solver.SolutionInfo si, double Cp, double Cn) private voidsolve_epsilon_svr(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param, double[] alpha, LIBSVM.Solver.SolutionInfo si) private voidsolve_nu_svc(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param, double[] alpha, LIBSVM.Solver.SolutionInfo si) private voidsolve_nu_svr(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param, double[] alpha, LIBSVM.Solver.SolutionInfo si) private voidsolve_one_class(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param, double[] alpha, LIBSVM.Solver.SolutionInfo si) private voidsvm_binary_svc_probability(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param, double Cp, double Cn, double[] probAB) svm_check_parameter(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param) intvoidsvm_cross_validation(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param, int nr_fold, double[] target) voidsvm_get_labels(LIBSVM.svm_model model, int[] label) intsvm_get_nr_class(LIBSVM.svm_model model) intsvm_get_nr_sv(LIBSVM.svm_model model) voidsvm_get_sv_indices(LIBSVM.svm_model model, int[] indices) intsvm_get_svm_type(LIBSVM.svm_model model) doubleprivate voidsvm_group_classes(LIBSVM.svm_problem prob, int[] nr_class_ret, int[][] label_ret, int[][] start_ret, int[][] count_ret, int[] perm) svm_load_model(String model_file_name) private intsvm_one_class_probability(LIBSVM.svm_problem prob, LIBSVM.svm_model model, double[] prob_density_marks) doublesvm_predict(LIBSVM.svm_model model, LIBSVM.svm_node[] x) doublesvm_predict_probability(LIBSVM.svm_model model, LIBSVM.svm_node[] x, double[] prob_estimates) doublesvm_predict_values(LIBSVM.svm_model model, LIBSVM.svm_node[] x, double[] dec_values) voidsvm_save_model(String model_file_name, LIBSVM.svm_model model) voidprivate doublesvm_svr_probability(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param) svm_train(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param) (package private) LIBSVM.decision_functionsvm_train_one(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param, double Cp, double Cn) private voidMethods inherited from class gov.nih.mipav.model.algorithms.AlgorithmBase
actionPerformed, addListener, addProgressChangeListener, calculateImageSize, calculatePrincipleAxis, computeElapsedTime, computeElapsedTime, convertIntoFloat, delinkProgressToAlgorithm, delinkProgressToAlgorithmMulti, displayError, errorCleanUp, finalize, fireProgressStateChanged, fireProgressStateChanged, fireProgressStateChanged, fireProgressStateChanged, fireProgressStateChanged, generateProgressValues, getDestImage, getElapsedTime, getMask, getMaxProgressValue, getMinProgressValue, getNumberOfThreads, getProgress, getProgressChangeListener, getProgressChangeListeners, getProgressModulus, getProgressStep, getProgressValues, getSrcImage, isCompleted, isImage25D, isMultiThreadingEnabled, isRunningInSeparateThread, isThreadStopped, linkProgressToAlgorithm, linkProgressToAlgorithm, makeProgress, notifyListeners, removeListener, removeProgressChangeListener, run, setCompleted, setImage25D, setMask, setMaxProgressValue, setMinProgressValue, setMultiThreadingEnabled, setNumberOfThreads, setProgress, setProgressModulus, setProgressStep, setProgressValues, setProgressValues, setRunningInSeparateThread, setSrcImage, setStartTime, setThreadStopped, startMethod, windowActivated, windowClosed, windowClosing, windowDeactivated, windowDeiconified, windowIconified, windowOpenedMethods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, isVirtual, join, join, join, join, ofPlatform, ofVirtual, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, sleep, start, startVirtualThread, stop, suspend, threadId, toString, yield
-
Field Details
-
LIBSVM_VERSION
public final int LIBSVM_VERSION- See Also:
-
rand
-
svm_print_stdout
-
svm_print_string
-
svm_type_table
-
kernel_type_table
-
param
-
prob
-
model
-
input_file_name
-
model_file_name
-
error_msg
-
cross_validation
private int cross_validation -
nr_fold
private int nr_fold -
svm_print_null
-
line
-
lower
private double lower -
upper
private double upper -
y_lower
private double y_lower -
y_upper
private double y_upper -
y_scaling
private boolean y_scaling -
feature_max
private double[] feature_max -
feature_min
private double[] feature_min -
y_max
private double y_max -
y_min
private double y_min -
max_index
private int max_index -
num_nonzeros
private long num_nonzeros -
new_num_nonzeros
private long new_num_nonzeros
-
-
Constructor Details
-
LIBSVM
public LIBSVM()
-
-
Method Details
-
info
-
solve_c_svc
private void solve_c_svc(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param, double[] alpha, LIBSVM.Solver.SolutionInfo si, double Cp, double Cn) -
solve_nu_svc
private void solve_nu_svc(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param, double[] alpha, LIBSVM.Solver.SolutionInfo si) -
solve_one_class
private void solve_one_class(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param, double[] alpha, LIBSVM.Solver.SolutionInfo si) -
solve_epsilon_svr
private void solve_epsilon_svr(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param, double[] alpha, LIBSVM.Solver.SolutionInfo si) -
solve_nu_svr
private void solve_nu_svr(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param, double[] alpha, LIBSVM.Solver.SolutionInfo si) -
svm_train_one
LIBSVM.decision_function svm_train_one(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param, double Cp, double Cn) -
sigmoid_train
private void sigmoid_train(int l, double[] dec_values, double[] labels, double[] probAB) -
sigmoid_predict
private double sigmoid_predict(double decision_value, double A, double B) -
multiclass_probability
private void multiclass_probability(int k, double[][] r, double[] p) -
svm_binary_svc_probability
private void svm_binary_svc_probability(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param, double Cp, double Cn, double[] probAB) -
predict_one_class_probability
-
svm_one_class_probability
private int svm_one_class_probability(LIBSVM.svm_problem prob, LIBSVM.svm_model model, double[] prob_density_marks) -
svm_svr_probability
-
svm_group_classes
private void svm_group_classes(LIBSVM.svm_problem prob, int[] nr_class_ret, int[][] label_ret, int[][] start_ret, int[][] count_ret, int[] perm) -
svm_train
-
svm_cross_validation
public void svm_cross_validation(LIBSVM.svm_problem prob, LIBSVM.svm_parameter param, int nr_fold, double[] target) -
svm_get_svm_type
-
svm_get_nr_class
-
svm_get_labels
-
svm_get_sv_indices
-
svm_get_nr_sv
-
svm_get_svr_probability
-
powi
private double powi(double base, int times) -
dot
-
k_function
-
svm_predict_values
-
svm_predict
-
svm_predict_probability
public double svm_predict_probability(LIBSVM.svm_model model, LIBSVM.svm_node[] x, double[] prob_estimates) -
svm_save_model
- Throws:
IOException
-
read_model_header
-
svm_load_model
- Throws:
IOException
-
svm_load_model
- Throws:
IOException
-
svm_check_parameter
-
svm_check_probability_model
-
svm_set_print_string_function
-
train_exit_with_help
private void train_exit_with_help() -
do_cross_validation
private void do_cross_validation() -
run_svm_train
- Throws:
IOException
-
run_svm_train
- Throws:
IOException
-
atof
-
atoi
-
parse_command_line
-
read_XY
private void read_XY(double[][] Xin, double[] y) -
read_problem
- Throws:
IOException
-
predict
private void predict(BufferedReader input, DataOutputStream output, LIBSVM.svm_model model, int predict_probability) throws IOException - Throws:
IOException
-
predict_exit_with_help
private void predict_exit_with_help() -
run_svm_predict
- Throws:
IOException
-
scale_exit_with_help
private void scale_exit_with_help() -
rewind
- Throws:
IOException
-
output_target
private void output_target(double value) -
output
private void output(int index, double value) -
readline
- Throws:
IOException
-
run_svm_scale
- Throws:
IOException
-
run_svm_toy
-
runAlgorithm
public void runAlgorithm()Description copied from class:AlgorithmBaseActually runs the algorithm. Implemented by inheriting algorithms.- Specified by:
runAlgorithmin classAlgorithmBase
-