我是SVM的新手。能否有人帮助我从最基础的部分开始理解使用Encog进行SVM的概念?如果能提供一些Java代码示例会更有帮助。
回答:
在Encog中,SVM只是一个分类或回归模型,并且可以与其他模型类型大多互换使用。我修改了Hello World XOR示例来使用它,你可以看到下面的结果。
这是一个不错的SVM介绍:http://webdoc.nyumc.org/nyumc/files/chibi/user-content/Final.pdf这是一个更基础的建模介绍,我最初是为神经网络写的,但也适用于SVM:http://www.heatonresearch.com/content/non-mathematical-introduction-using-neural-networks
package org.encog.examples.neural.xor;import org.encog.Encog;import org.encog.ml.data.MLData;import org.encog.ml.data.MLDataPair;import org.encog.ml.data.MLDataSet;import org.encog.ml.data.basic.BasicMLDataSet;import org.encog.ml.svm.SVM;import org.encog.ml.svm.training.SVMTrain;public class XORHelloWorld { /** * The input necessary for XOR. */ public static double XOR_INPUT[][] = { { 0.0, 0.0 }, { 1.0, 0.0 }, { 0.0, 1.0 }, { 1.0, 1.0 } }; /** * The ideal data necessary for XOR. */ public static double XOR_IDEAL[][] = { { 0.0 }, { 1.0 }, { 1.0 }, { 0.0 } }; /** * The main method. * @param args No arguments are used. */ public static void main(final String args[]) { // create a SVM for classification, change false to true for regression SVM svm = new SVM(2,false); // create training data MLDataSet trainingSet = new BasicMLDataSet(XOR_INPUT, XOR_IDEAL); // train the SVM final SVMTrain train = new SVMTrain(svm, trainingSet); train.iteration(); train.finishTraining(); // test the SVM System.out.println("SVM Results:"); for(MLDataPair pair: trainingSet ) { final MLData output = svm.compute(pair.getInput()); System.out.println(pair.getInput().getData(0) + "," + pair.getInput().getData(1) + ", actual=" + output.getData(0) + ",ideal=" + pair.getIdeal().getData(0)); } Encog.getInstance().shutdown(); }}