我是SVM的初学者。有人可以帮助我从基础知识中使用Encog来理解SVM的概念吗?它将有助于使用示例Java代码。
答案 0 :(得分:1)
在Encog中,SVM只是一种分类或回归模型,可以与其他模型类型互换使用。我修改了Hello World XOR示例以使用它,您可以看到下面的结果。
这对他们来说是一个不错的介绍: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();
}
}