c8e73cd
1.04: 2000/6/17, add "load" button to svm-toy. README 
c8e73cd
file updated.
c8e73cd
c8e73cd
2.0: 2000/8, major updates. Include nu-svm, one-class svm, and svr
c8e73cd
c8e73cd
2.01: 2000/9/22, correct the calculation of obj value and number of bounded support vectors
c8e73cd
c8e73cd
2.02: 2000/9/29, replace b^2/2 newsvm to regular nu svm.
c8e73cd
c8e73cd
2.03: 2000/10/24 some improvements on the computational speed
c8e73cd
c8e73cd
2.1: 2000/12/19 Java version included, regression demonstrated in svm-toy
c8e73cd
c8e73cd
2.2: 2001/1/16 multi-class classification, nu-SVR, remove epsilon_a
c8e73cd
c8e73cd
2.3: 2001/3/15 c+-, cross validation, fix some minor bugs
c8e73cd
c8e73cd
2.31: 2001/4/12 fix one bug on one-class SVM, use float for Cache
c8e73cd
c8e73cd
2.32: 2001/9/23 
c8e73cd
	1. max line number of svm-scale now dynamic
c8e73cd
	2. gcc 3.0 problem: now g++ always used
c8e73cd
	3. java code in a "libsvm" package
c8e73cd
	4. avoid a problem when compiled with Borland C++ builder
c8e73cd
c8e73cd
2.33: 2001/12/1
c8e73cd
	Python interface added
c8e73cd
c8e73cd
2.34: 2002/6/15
c8e73cd
	Add the subroutine svm_check_parameter in svm.cpp
c8e73cd
	--> better error handling
c8e73cd
	fix bug of python interface for handling different weights
c8e73cd
	fix bug of cross validation in svm-train.c
c8e73cd
c8e73cd
2.35: 2002/6/16
c8e73cd
	libsvm.jar was not compiled correctly in 2.34
c8e73cd
c8e73cd
2.36: 2002/8/4
c8e73cd
	grid.py added: contour plot of CV accuracy
c8e73cd
	fix several bugs
c8e73cd
c8e73cd
2.4:  2003/4/1
c8e73cd
	svm.cpp
c8e73cd
		non-psd kernel using max(...,0) in svm.cpp
c8e73cd
	python interface
c8e73cd
		python interface bug (nu-svm)
c8e73cd
	grid.py
c8e73cd
		-log2c and -log2c for grid.py
c8e73cd
	        output current best
c8e73cd
		coarse grid as default (2)
c8e73cd
		ssh for grid.py 
c8e73cd
	improvements of scaling 
c8e73cd
c8e73cd
2.5: 2003/11/13
c8e73cd
	subroutines for accessing decision values and number of labels. 
c8e73cd
		for svm.cpp, java, and  python interface
c8e73cd
	fix bug of svm-scale.c (about -r and -s factors)
c8e73cd
	use fscanf but not sscanf in svm-predict.c (faster)
c8e73cd
	makefile for windows
c8e73cd
	add "using namespace std;" in some .java files
c8e73cd
	improve easy.py: output cv rate, error messages printed
c8e73cd
		better checking
c8e73cd
	better python interface example svm_test.py
c8e73cd
	and some minor updates
c8e73cd
c8e73cd
2.6: 2004/04/01
c8e73cd
	Probability estimates for classification/regression 
c8e73cd
	Python interface: use swig 1.3 instead of 1.1
c8e73cd
	Cross validation becomes a library subroutine
c8e73cd
	A few minor corrections: (not completely listed)
c8e73cd
		more interface functions such as getting svm_type
c8e73cd
		print nu only when Cp=Cn
c8e73cd
		floor division in python interface
c8e73cd
c8e73cd
2.7: 2004/11/10
c8e73cd
	Stratified cross validation
c8e73cd
	Better faq
c8e73cd
	Scaling: support storing the factor of y
c8e73cd
	A few minor updates:
c8e73cd
		class QMatrix added
c8e73cd
		improve the use of easy.py and grid.py on windows 
c8e73cd
		grid.py: same CV and same g: use smaller C
c8e73cd
		sparse input for python interface
c8e73cd
		working set selection: < to <=
c8e73cd
c8e73cd
2.71: 2004/11/20
c8e73cd
	fix a java bug introduced from 2.6 to 2.7
c8e73cd
c8e73cd
2.8: 2005/04/01
c8e73cd
	new working set selection via second order information
c8e73cd
	fix minor changes/corrections:
c8e73cd
		problem when cache size less than two kernel columns
c8e73cd
		-v #data -> stratified CV is not loo -> ensure loo is done
c8e73cd
		problem of typing "svm-train -c" only
c8e73cd
		problem of "svm-train -n 1 -s 3 ..."
c8e73cd
		python interface makefile: -fPIC for 32/64bit
c8e73cd
		color change in svmtoy
c8e73cd
		makefile in building QT svmtoy
c8e73cd
c8e73cd
2.81: 2005/11/20
c8e73cd
	add a python script subset.py for subsampling
c8e73cd
	slightly modify the working set so it's exact the same as the paper
c8e73cd
	default cache size to 100 MB
c8e73cd
c8e73cd
2.82: 2006/04/01
c8e73cd
	precomputed kernel
c8e73cd
	directly implement a fast powi() function
c8e73cd
	poly degree double to int
c8e73cd
	minor corrections:
c8e73cd
		java code for CV
c8e73cd
2.83: 2006/11/17
c8e73cd
	Fix the bug of -t 3
c8e73cd
	better checking load/save in svm-train.c/svm-predict.c/svm.cpp
c8e73cd
	remove redundant var pos in svm_predict_values (thanks to Albert Strasheim)
c8e73cd
	Better descriptions in README for the precomputed kernel
c8e73cd
c8e73cd
2.84: 2007/04/01
c8e73cd
	Improve the shrinking code: faster for some cases
c8e73cd
	Code more 64-bit friendly: allow large -m
c8e73cd
	In Solver, b is replaced by p
c8e73cd
	Subroutine max_violating_pair removed. Things are directly
c8e73cd
	written in do_shrinking().
c8e73cd
	Modify do_shrinking() so variable names are the same as libsvm
c8e73cd
	document
c8e73cd
c8e73cd
2.85: 2007/11/6
c8e73cd
	fix minor memory leak in svm-predict.c
c8e73cd
	add tools/checkdata.py 
c8e73cd
	java to 1.5
c8e73cd
	Makefile: CXX?
c8e73cd
	Makefile.win: avoid warning from .net 2005
c8e73cd
	avoid warning of gcc 4.2
c8e73cd
	sigma 0.001 to 1e-12; in Newton direction of prob output
c8e73cd
	2 * (long int) l avoid warning of old Visual C++
c8e73cd
	grid.py: avoid gnuplot problem on windows
c8e73cd
c8e73cd
2.86: 2008/04/01
c8e73cd
	svm-scale for java
c8e73cd
	version number in svm.h and svm.m4
c8e73cd
	rename svmtrain.exe to svm-train.exe 
c8e73cd
	python: while 1 --> while True, Popen -> call
c8e73cd
	show best parameters on the contour of grid.py
c8e73cd
c8e73cd
2.87: 2008/10/13
c8e73cd
	svm-toy/qt updated to qt4 from qt3
c8e73cd
	fix a bug in svm-scale.c
c8e73cd
		max feature index of -r file is considered
c8e73cd
	Makefile: add make lib; add -Wconversion and -fPIC in Makefile
c8e73cd
	Add "rb" in load_model of svm.cpp
c8e73cd
	Simplify do_shrinking of svm.cpp
c8e73cd
	Change the order of loops in reconstrict_gradient of svm.cpp
c8e73cd
		save the number of kernel evaluations
c8e73cd
	Add python/setup.py
c8e73cd
c8e73cd
2.88: 2008/10/30
c8e73cd
	better gradient reconstructions
c8e73cd
	issue a warning	when -h 0 may be faster
c8e73cd
c8e73cd
2.89: 2009/04/01
c8e73cd
	reduce input/loading time of svm-train/svm-predict by half
c8e73cd
	pointer function so users can specify their own outputs
c8e73cd
	remove info_flush() 
c8e73cd
	a extern variable libsvm_version
c8e73cd
	svm-train -q option (disable outputs)
c8e73cd
	svm-scale: warning if more nonzero produced
c8e73cd
	easy.py: popel.communiate() to avoid some deadlock (if lots of
c8e73cd
		outputs when #classes is large)
c8e73cd
c8e73cd
2.9: 2009/11/1
c8e73cd
	tools/*.py can be run under python 3.0
c8e73cd
	svm_set_quiet() in python interface to disable outputs
c8e73cd
	check gamma < 0
c8e73cd
	internal functions to be static
c8e73cd
c8e73cd
2.91: 2010/04/01
c8e73cd
	completely new python interface using ctype
c8e73cd
	new way to set the print_string function
c8e73cd
	Java: able to load model from a BufferedReader directly
c8e73cd
	fix grid.py so -log2c can be run under python 2.6 or after
c8e73cd
c8e73cd
3.0: 2010/09/13
c8e73cd
	Move model structure to svm.h
c8e73cd
	Two functions for freeing a model (content or the whole model)
c8e73cd
	QD from Qfloat to double (better precision because SSE on 64-bit machines less accurate than i387 on 32-bit
c8e73cd
	exit status for checkdata.py 
c8e73cd
	old python interface (swig) is removed
c8e73cd
c8e73cd
3.1: 2011/04/01
c8e73cd
	MATLAB interface:
c8e73cd
		Merge matlab interface to core libsvm
c8e73cd
		Using mexPrintf() when calling info() in MATLAB interface.
c8e73cd
		Both 32- and 64-bit windows binary files are provided
c8e73cd
	Java:
c8e73cd
		Math.random is replaced by Random in java interface
c8e73cd
	Python interface:
c8e73cd
i		subroutines to get SVs 
c8e73cd
		relative path to load *.dll and *.so
c8e73cd
	svm.cpp: 
c8e73cd
		null pointer check before release memory in svm_free_model_content()
c8e73cd
		svm_destroy_model() no longer supported.
c8e73cd
	svm-train.c and svm-predict.c
c8e73cd
		Better format check in reading data labels
c8e73cd
	svm-toy:
c8e73cd
		fix the svm_toy dialog path
c8e73cd
	tools:
c8e73cd
		Using new string formatting/encoding in tools/*.py
c8e73cd
		clearer png output, fix grid.py legend
c8e73cd
c8e73cd
3.11: 2011/11/5
c8e73cd
	Set max number of iterations in the main loop of solvers
c8e73cd
	matlab:
c8e73cd
		new make.m for unix/mac/windows and for matlab/octave
c8e73cd
	matlab and python:
c8e73cd
		fix a problem that decision values returned by svmpredict is empty if number of classes = 1
c8e73cd
	
c8e73cd
3.12: 2012/04/01
c8e73cd
      svm-toy: support loading/saving of regression data
c8e73cd
      python interface: handle the issue of the "0th" feature if using lists
c8e73cd
      tools/grid.py: not redrawing contour if c,g, cv doesn't change
c8e73cd
      add setlocale when saving and loading model so not affected by users' locale
c8e73cd
c8e73cd
3.13: 2012/11/06
c8e73cd
      svm.c and svm.h:
c8e73cd
            add sv_indices in model structure, so users can know which training instances are SVs
c8e73cd
	    two library funs svm_get_sv_indices and svm_get_nr_sv are added
c8e73cd
	    max_iter warning moved to stderr so -q won't disable it
c8e73cd
      svm-train.c:
c8e73cd
            usage modified to stress that multiclass is supported
c8e73cd
      svm-predict.c:
c8e73cd
            add -q for svm-predict
c8e73cd
      svm-scale.c:
c8e73cd
	    issue a warning if feature indices do not start from 1
c8e73cd
	    issue a warning for inconsistency between scaling-factor file and input file
c8e73cd
      tools:
c8e73cd
	    subset.py is written to be much faster
c8e73cd
      
c8e73cd
3.14: 2012/11/16
c8e73cd
      fix a bug: we didn't re-compile windows binary after updating svm.def
c8e73cd
c8e73cd
3.15: 2013/1/27
c8e73cd
      fix the bug of not freeing sv_indices
c8e73cd
      tools/grid.py:
c8e73cd
             -null option: allow the search on C or g only
c8e73cd
	     -resume option: resume tasks from an earlier run
c8e73cd
	     can be called as a python module            	
c8e73cd
      python interface:
c8e73cd
      	     local package searched first
c8e73cd
	     libsvm options can be str or list
c8e73cd
	     param.show() becomes print(param)
c8e73cd
c8e73cd
3.16: 2013/1/27
c8e73cd
      tools/:
c8e73cd
             easy.py fails in 3.15. Fix it by modifying grid.py
c8e73cd
c8e73cd
3.17: 2013/04/01
c8e73cd
      svm.cpp:
c8e73cd
	     if class labels are 1 and -1, ensure labels[0] = 1 and labels[1] = -1
c8e73cd
      	     initialize model->sv_indices as null in svm_load_model
c8e73cd
	     if nr_fold > # data, change nr_fold to be # data and ro leave-one-out cv 
c8e73cd
      matlab interface: 
c8e73cd
      	     handle the problem where output variables are not specified
c8e73cd
c8e73cd
3.18: 2014/04/01
c8e73cd
      svm.cpp and svm-scale.c:
c8e73cd
      	     check return values of fscanf
c8e73cd
      matlab interface:
c8e73cd
      	     Makefile no longer handles octave because make.m should be used
c8e73cd
c8e73cd
3.19: 2014/10/27
c8e73cd
      svm.cpp:
c8e73cd
             use size_t rather than long int in some places for 64-bit windows support
c8e73cd
      matlab interface:
c8e73cd
             use size_t and mwIndex to avoid type conversions
c8e73cd
      python interface:
c8e73cd
             use __all__
c8e73cd
c8e73cd
3.20: 2014/11/15
c8e73cd
      matlab interface:
c8e73cd
             fix a bug in libsvmwrite.c introduced in 3.19 (cannot run on windows)
f7acaea
f7acaea
3.21: 2015/12/14
f7acaea
      pre-built windows exe files changed from 32 to 64 bit
f7acaea
      matlab interface:
f7acaea
             now use #include "../svm.h"
e6b06f5
             fix some minor issues in make.m of matlab interface
e6b06f5
e6b06f5
3.22: 2016/12/22
e6b06f5
      probability output:
e6b06f5
             if 2 classes, directly output the predited probabilities
e6b06f5
	     rather than run the iterative algorithms for multi-class situations
e6b06f5
      java:
e6b06f5
             libsvm.jar generated by java 1.7 rather than 1.5
e6b06f5
             change the use of "_" in svm.java, which won't be allowed in later java
e6b06f5
e6b06f5
3.23: 2018/7/15
e6b06f5
      add more digits of predicted file, model file, scaled data and data from matlab libsvmwrite: to %.17g
e6b06f5
      revise svm-scale.c so features in test data that do not appear in training data are scaled to zero.
e6b06f5
      remove unnecessary tab or space in all files
e6b06f5
      python interface:
e6b06f5
            add Scipy support
e6b06f5
	    add scaling (csr_find_scale_param and csr_scale functions)
e6b06f5
	    put some utility functions identical in LIBLINEAR to commonutil.py.
e6b06f5
	    functions for scaling are put in commonutil.py.
e6b06f5
	    sort column indices of csr matrix before training as feature indices must be ascending
e6b06f5
      convert Qt version of svm-toy from Qt4 to Qt5
e6b06f5
      remove gtk svm-toy because we stop maintaining this tool
e6b06f5
      minor improvement of descriptions in README
e6b06f5