You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

354 lines
12 KiB

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
3.24: 2019/9/11
modify java code so that variable names and some other places are consistent with C code
fix compiling issues in matlab/Makefile: use mex only rather than build some .o files separately
python interface:
use array for reading data in python/commonutil.py to lower the memory usage
fix a bug in python/commonutil.py for reading pre-computed kernel
minor improvements and bug fixes
3.25: 2021/4/14
Add python/setup.py for installation via PyPI
python directory reorganized
python sources now in the directory python/libsvm
Not adding -std=c99 to CFLAGS in generating mex (this causes MinGW to fail)
3.3: 2022/8/11
One-class probabilistic outputs introduced
Use numpy Use numpy stuff directly instead of mirrored ones in scipy
3.31: 2023/2/28
Including openmp extension in the master code instead of showing modifications in faq
pypi use openmp by default
workflow (wheels): add matrix build for windows, linux, macos
Remove deprecated applet API in svm_toy.java
Fix memory leak of prob_density_marks and avoid a copy
Updated readme on the description of nr_class
3.32: 2023/7/9
python interface: fix a bug in svm.py, where indptr.copy() results in a 32bit integer, but we need 64bit
matlab interface: fix a bug in handling wrong or too long filename
3.33: 2024/7/10
python interface:
Avoid numba deprecation warning by setting jit arguments
nonpython=True
Remove shebang (#!) in non-executable python files
tools/grid.py:
Allow grid.py to handle file names with spaces
svm.cpp:
Avoid vsprintf deprecated warning in Mac Clang ++ by using vsnprintf instead
3.34: 2024/8/22
Ensure cache size does not overflow (as long int is 32 bit on Windows)
Fix bug with jit decorator fallback when numba isn't installed
3.34: 2024/9/1
Fix an issue of underflow due to the change in 3.34 of using size_t for cache size