Blob Blame History Raw
1.04: 2000/6/17, add "load" button to svm-toy. README 
file updated.

2.0: 2000/8, major updates. Include nu-svm, one-class svm, and svr

2.01: 2000/9/22, correct the calculation of obj value and number of bounded support vectors

2.02: 2000/9/29, replace b^2/2 newsvm to regular nu svm.

2.03: 2000/10/24 some improvements on the computational speed

2.1: 2000/12/19 Java version included, regression demonstrated in svm-toy

2.2: 2001/1/16 multi-class classification, nu-SVR, remove epsilon_a

2.3: 2001/3/15 c+-, cross validation, fix some minor bugs

2.31: 2001/4/12 fix one bug on one-class SVM, use float for Cache

2.32: 2001/9/23 
	1. max line number of svm-scale now dynamic
	2. gcc 3.0 problem: now g++ always used
	3. java code in a "libsvm" package
	4. avoid a problem when compiled with Borland C++ builder

2.33: 2001/12/1
	Python interface added

2.34: 2002/6/15
	Add the subroutine svm_check_parameter in svm.cpp
	--> better error handling
	fix bug of python interface for handling different weights
	fix bug of cross validation in svm-train.c

2.35: 2002/6/16
	libsvm.jar was not compiled correctly in 2.34

2.36: 2002/8/4
	grid.py added: contour plot of CV accuracy
	fix several bugs

2.4:  2003/4/1
	svm.cpp
		non-psd kernel using max(...,0) in svm.cpp
	python interface
		python interface bug (nu-svm)
	grid.py
		-log2c and -log2c for grid.py
	        output current best
		coarse grid as default (2)
		ssh for grid.py 
	improvements of scaling 

2.5: 2003/11/13
	subroutines for accessing decision values and number of labels. 
		for svm.cpp, java, and  python interface
	fix bug of svm-scale.c (about -r and -s factors)
	use fscanf but not sscanf in svm-predict.c (faster)
	makefile for windows
	add "using namespace std;" in some .java files
	improve easy.py: output cv rate, error messages printed
		better checking
	better python interface example svm_test.py
	and some minor updates

2.6: 2004/04/01
	Probability estimates for classification/regression 
	Python interface: use swig 1.3 instead of 1.1
	Cross validation becomes a library subroutine
	A few minor corrections: (not completely listed)
		more interface functions such as getting svm_type
		print nu only when Cp=Cn
		floor division in python interface

2.7: 2004/11/10
	Stratified cross validation
	Better faq
	Scaling: support storing the factor of y
	A few minor updates:
		class QMatrix added
		improve the use of easy.py and grid.py on windows 
		grid.py: same CV and same g: use smaller C
		sparse input for python interface
		working set selection: < to <=

2.71: 2004/11/20
	fix a java bug introduced from 2.6 to 2.7

2.8: 2005/04/01
	new working set selection via second order information
	fix minor changes/corrections:
		problem when cache size less than two kernel columns
		-v #data -> stratified CV is not loo -> ensure loo is done
		problem of typing "svm-train -c" only
		problem of "svm-train -n 1 -s 3 ..."
		python interface makefile: -fPIC for 32/64bit
		color change in svmtoy
		makefile in building QT svmtoy

2.81: 2005/11/20
	add a python script subset.py for subsampling
	slightly modify the working set so it's exact the same as the paper
	default cache size to 100 MB

2.82: 2006/04/01
	precomputed kernel
	directly implement a fast powi() function
	poly degree double to int
	minor corrections:
		java code for CV
2.83: 2006/11/17
	Fix the bug of -t 3
	better checking load/save in svm-train.c/svm-predict.c/svm.cpp
	remove redundant var pos in svm_predict_values (thanks to Albert Strasheim)
	Better descriptions in README for the precomputed kernel

2.84: 2007/04/01
	Improve the shrinking code: faster for some cases
	Code more 64-bit friendly: allow large -m
	In Solver, b is replaced by p
	Subroutine max_violating_pair removed. Things are directly
	written in do_shrinking().
	Modify do_shrinking() so variable names are the same as libsvm
	document

2.85: 2007/11/6
	fix minor memory leak in svm-predict.c
	add tools/checkdata.py 
	java to 1.5
	Makefile: CXX?
	Makefile.win: avoid warning from .net 2005
	avoid warning of gcc 4.2
	sigma 0.001 to 1e-12; in Newton direction of prob output
	2 * (long int) l avoid warning of old Visual C++
	grid.py: avoid gnuplot problem on windows

2.86: 2008/04/01
	svm-scale for java
	version number in svm.h and svm.m4
	rename svmtrain.exe to svm-train.exe 
	python: while 1 --> while True, Popen -> call
	show best parameters on the contour of grid.py

2.87: 2008/10/13
	svm-toy/qt updated to qt4 from qt3
	fix a bug in svm-scale.c
		max feature index of -r file is considered
	Makefile: add make lib; add -Wconversion and -fPIC in Makefile
	Add "rb" in load_model of svm.cpp
	Simplify do_shrinking of svm.cpp
	Change the order of loops in reconstrict_gradient of svm.cpp
		save the number of kernel evaluations
	Add python/setup.py

2.88: 2008/10/30
	better gradient reconstructions
	issue a warning	when -h 0 may be faster

2.89: 2009/04/01
	reduce input/loading time of svm-train/svm-predict by half
	pointer function so users can specify their own outputs
	remove info_flush() 
	a extern variable libsvm_version
	svm-train -q option (disable outputs)
	svm-scale: warning if more nonzero produced
	easy.py: popel.communiate() to avoid some deadlock (if lots of
		outputs when #classes is large)

2.9: 2009/11/1
	tools/*.py can be run under python 3.0
	svm_set_quiet() in python interface to disable outputs
	check gamma < 0
	internal functions to be static

2.91: 2010/04/01
	completely new python interface using ctype
	new way to set the print_string function
	Java: able to load model from a BufferedReader directly
	fix grid.py so -log2c can be run under python 2.6 or after

3.0: 2010/09/13
	Move model structure to svm.h
	Two functions for freeing a model (content or the whole model)
	QD from Qfloat to double (better precision because SSE on 64-bit machines less accurate than i387 on 32-bit
	exit status for checkdata.py 
	old python interface (swig) is removed

3.1: 2011/04/01
	MATLAB interface:
		Merge matlab interface to core libsvm
		Using mexPrintf() when calling info() in MATLAB interface.
		Both 32- and 64-bit windows binary files are provided
	Java:
		Math.random is replaced by Random in java interface
	Python interface:
i		subroutines to get SVs 
		relative path to load *.dll and *.so
	svm.cpp: 
		null pointer check before release memory in svm_free_model_content()
		svm_destroy_model() no longer supported.
	svm-train.c and svm-predict.c
		Better format check in reading data labels
	svm-toy:
		fix the svm_toy dialog path
	tools:
		Using new string formatting/encoding in tools/*.py
		clearer png output, fix grid.py legend

3.11: 2011/11/5
	Set max number of iterations in the main loop of solvers
	matlab:
		new make.m for unix/mac/windows and for matlab/octave
	matlab and python:
		fix a problem that decision values returned by svmpredict is empty if number of classes = 1
	
3.12: 2012/04/01
      svm-toy: support loading/saving of regression data
      python interface: handle the issue of the "0th" feature if using lists
      tools/grid.py: not redrawing contour if c,g, cv doesn't change
      add setlocale when saving and loading model so not affected by users' locale

3.13: 2012/11/06
      svm.c and svm.h:
            add sv_indices in model structure, so users can know which training instances are SVs
	    two library funs svm_get_sv_indices and svm_get_nr_sv are added
	    max_iter warning moved to stderr so -q won't disable it
      svm-train.c:
            usage modified to stress that multiclass is supported
      svm-predict.c:
            add -q for svm-predict
      svm-scale.c:
	    issue a warning if feature indices do not start from 1
	    issue a warning for inconsistency between scaling-factor file and input file
      tools:
	    subset.py is written to be much faster
      
3.14: 2012/11/16
      fix a bug: we didn't re-compile windows binary after updating svm.def

3.15: 2013/1/27
      fix the bug of not freeing sv_indices
      tools/grid.py:
             -null option: allow the search on C or g only
	     -resume option: resume tasks from an earlier run
	     can be called as a python module            	
      python interface:
      	     local package searched first
	     libsvm options can be str or list
	     param.show() becomes print(param)

3.16: 2013/1/27
      tools/:
             easy.py fails in 3.15. Fix it by modifying grid.py

3.17: 2013/04/01
      svm.cpp:
	     if class labels are 1 and -1, ensure labels[0] = 1 and labels[1] = -1
      	     initialize model->sv_indices as null in svm_load_model
	     if nr_fold > # data, change nr_fold to be # data and ro leave-one-out cv 
      matlab interface: 
      	     handle the problem where output variables are not specified

3.18: 2014/04/01
      svm.cpp and svm-scale.c:
      	     check return values of fscanf
      matlab interface:
      	     Makefile no longer handles octave because make.m should be used

3.19: 2014/10/27
      svm.cpp:
             use size_t rather than long int in some places for 64-bit windows support
      matlab interface:
             use size_t and mwIndex to avoid type conversions
      python interface:
             use __all__

3.20: 2014/11/15
      matlab interface:
             fix a bug in libsvmwrite.c introduced in 3.19 (cannot run on windows)

3.21: 2015/12/14
      pre-built windows exe files changed from 32 to 64 bit
      matlab interface:
             now use #include "../svm.h"
             fix some minor issues in make.m of matlab interface

3.22: 2016/12/22
      probability output:
             if 2 classes, directly output the predited probabilities
	     rather than run the iterative algorithms for multi-class situations
      java:
             libsvm.jar generated by java 1.7 rather than 1.5
             change the use of "_" in svm.java, which won't be allowed in later java

3.23: 2018/7/15
      add more digits of predicted file, model file, scaled data and data from matlab libsvmwrite: to %.17g
      revise svm-scale.c so features in test data that do not appear in training data are scaled to zero.
      remove unnecessary tab or space in all files
      python interface:
            add Scipy support
	    add scaling (csr_find_scale_param and csr_scale functions)
	    put some utility functions identical in LIBLINEAR to commonutil.py.
	    functions for scaling are put in commonutil.py.
	    sort column indices of csr matrix before training as feature indices must be ascending
      convert Qt version of svm-toy from Qt4 to Qt5
      remove gtk svm-toy because we stop maintaining this tool
      minor improvement of descriptions in README