if ("lasvm"
.equalsIgnoreCase(classifierBox.getSelectedItem().toString())) {
Kernel<double[]> k = new DoubleLinear();
if ("GaussianL2".equalsIgnoreCase(kernelBox.getSelectedItem()
.toString())) {
k = new DoubleGaussL2(Double.parseDouble(kernelParamTextField
.getText()));
} else if ("TriangleL2".equalsIgnoreCase(kernelBox
.getSelectedItem().toString())) {
k = new DoubleTriangleL2(
Double.parseDouble(kernelParamTextField.getText()));
} else if ("Polynomial".equalsIgnoreCase(kernelBox
.getSelectedItem().toString())) {
k = new DoublePolynomial(Integer.parseInt(kernelParamTextField
.getText()));
} else if ("HPlolynomial".equalsIgnoreCase(kernelBox
.getSelectedItem().toString())) {
k = new DoubleHPolynomial(Integer.parseInt(kernelParamTextField
.getText()));
}
LaSVM<double[]> svm = new LaSVM<double[]>(k);
svm.setC(Double.parseDouble(regularizationField.getText()));
svm.train(localTrain);
// info
classnameLabel.setText(svm.getClass().getSimpleName());
double[] alphas = svm.getAlphas();
int sv = 0;
for (int s = 0; s < alphas.length; s++) {
if (alphas[s] != 0) {
sv++;
}
}
svLabel.setText("" + sv);
validate();
// save current classifier
model.classifier = svm;
} else if ("smo".equalsIgnoreCase(classifierBox.getSelectedItem()
.toString())) {
Kernel<double[]> k = new DoubleLinear();
if ("GaussianL2".equalsIgnoreCase(kernelBox.getSelectedItem()
.toString())) {
k = new DoubleGaussL2(Double.parseDouble(kernelParamTextField
.getText()));
} else if ("TriangleL2".equalsIgnoreCase(kernelBox
.getSelectedItem().toString())) {
k = new DoubleTriangleL2(
Double.parseDouble(kernelParamTextField.getText()));
} else if ("Polynomial".equalsIgnoreCase(kernelBox
.getSelectedItem().toString())) {
k = new DoublePolynomial(Integer.parseInt(kernelParamTextField
.getText()));
} else if ("HPlolynomial".equalsIgnoreCase(kernelBox
.getSelectedItem().toString())) {
k = new DoubleHPolynomial(Integer.parseInt(kernelParamTextField
.getText()));
}
SMOSVM<double[]> svm = new SMOSVM<double[]>(k);
svm.setC(Double.parseDouble(regularizationField.getText()));
svm.train(localTrain);
// info
classnameLabel.setText(svm.getClass().getSimpleName());
double[] alphas = svm.getAlphas();
int sv = 0;
for (int s = 0; s < alphas.length; s++) {
if (alphas[s] != 0) {
sv++;
}
}
svLabel.setText("" + sv);
validate();
// save current classifier
model.classifier = svm;
} else if ("sag".equalsIgnoreCase(classifierBox.getSelectedItem()
.toString())) {
DoubleSAG svm = new DoubleSAG();
svm.setLambda(1. / (train.size() * Double
.parseDouble(regularizationField.getText())));
svm.setE(10);
svm.train(localTrain);
// info
classnameLabel.setText(svm.getClass().getSimpleName());
svLabel.setText("N/A");
// save current classifier
model.classifier = svm;
} else if ("pegasos".equalsIgnoreCase(classifierBox.getSelectedItem()
.toString())) {
DoublePegasosSVM svm = new DoublePegasosSVM();
svm.setLambda(1. / (train.size() * Double
.parseDouble(regularizationField.getText())));
svm.setK(train.size() / 20);
svm.setT(10 * train.size());
svm.train(localTrain);
// info
classnameLabel.setText(svm.getClass().getSimpleName());
svLabel.setText("N/A");
// save current classifier
model.classifier = svm;
} else if ("simplemkl".equalsIgnoreCase(classifierBox.getSelectedItem()
.toString())) {
SimpleMKL<double[]> svm = new SimpleMKL<double[]>();
svm.setC(Double.parseDouble(regularizationField.getText()));
double[] G = { 0.05, 0.1, 0.2, 0.4, 0.8, 1.6, 3.2, 6.4, 12.8, 25.6 };
// int dim = train.get(0).sample.length;
for (double g : G) {
svm.addKernel(new DoubleGaussL2(g));
// // for(int i = 0 ; i < dim ; i++) {
// // IndexDoubleGaussL2 k = new IndexDoubleGaussL2(i);
// // k.setGamma(g);
// // svm.addKernel(k);
// // }