SVM not TOY------It's now 3D!!!


This is a simple applet demonstrating SVM classification and regression in 3D. It extends the java svm-toy in the libsvm package.

See the demo here.


You must to download a libsvm.jar file, and install JRE, and Java 3D.

See more details below.

Unix system users:

Windows users:

Running SVM Toy 3D

Use this web page or download the svm_toy3d.jar of SVM Toy 3D and in a command window type

> java -cp libsvm.jar svm_toy3d

Using SVM Toy 3D

Right: 3D input box

Left-click on the pink plane to input training data.

Hold right button and drag to move the pink plane along the z-axis in the 3D space.

You can also directly type values in the input fields. The range is [-1, 1].

Left-click "Change" to change the class of training points.

Left-click "Clean" to remove all points.

Left: Separating hyperplane in 3D

x, y, and z-axes are in yellow, blue, and white, respectively.

Left-click "Run" to see the separating hyper-plane.

Left-click "View" to set the viewpoint back to the initial one.

Hold left button and drag to rotate the 3D space.

Hold right button and drag to shift the 3D space.


-s svm_type : set type of SVM (default 0)
	0 -- C-SVC
	1 -- nu-SVC
	2 -- one-class SVM
	3 -- epsilon-SVR
	4 -- nu-SVR
-t kernel_type : set type of kernel function (default 2)
	0 -- linear: u'*v
	1 -- polynomial: (gamma*u'*v + coef0)^degree
	2 -- radial basis function: exp(-gamma*|u-v|^2)
	3 -- sigmoid: tanh(gamma*u'*v + coef0)
-d degree : set degree in kernel function (default 3)
-g gamma : set gamma in kernel function (default 1/k)
-r coef0 : set coef0 in kernel function (default 0)
-c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)
-n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)
-p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)
-m cachesize : set cache memory size in MB (default 40)
-e epsilon : set tolerance of termination criterion (default 0.001)
-h shrinking: whether to use the shrinking heuristics, 0 or 1 (default 1)
-b probability_estimates: whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)
-wi weight: set the parameter C of class i to weight*C, for C-SVC (default 1)

The k in the -g option means the number of attributes in the input data.

Optional: Building the jar File

You should directly use the provided libsvm.jar file; see the Installation section.

We don't recommand you to build the jar file by yourself. However, if you want to do it, you can use the following procedure.

Unix system users:

First, download the source code of SVM Toy 3D.

Download and install JDK (Java Delevopment Kit) and type "javac -version" to confrim the correct installation.

Double click the compile.bat or use cmd and type "compile.bat" to produce libsvm.jar.

Related Developments by Users

An Eclipse project is ready to run svm_toy3d demos on Windows and MacOS


The following students from National Taiwan University conducted this work for their final projects.

Xin-Mao Huang, Ken-Hao Liu, and Hung-Leng Chen did initial development in January 2004.

Wei-Cheng Cheng, Yi-Chun Lin, Wen-Hsien Su, Fang-Lan Huang, and Tzu-Hsiang Kao finished the final version in January 2005.

Ming-Hen Tsai polished and released sources in October 2008.

Yu-Ting Huang and Hung-Yi Chou improve the web page in June 2017.

Please send comments and suggestions to Chih-Jen Lin.

Last modified: