@Override
public SupportVectorMachineModel encodeModel(Schema schema){
int[] shape = getSupportVectorsShape();
int numberOfVectors = shape[0];
int numberOfFeatures = shape[1];
List<Integer> support = getSupport();
List<? extends Number> supportVectors = getSupportVectors();
List<Integer> supportSizes = getSupportSizes();
List<? extends Number> dualCoef = getDualCoef();
List<? extends Number> intercept = getIntercept();
SupportVectorMachineModel supportVectorMachineModel = LibSVMUtil.createClassification(new CMatrix<>(ValueUtil.asDoubles(supportVectors), numberOfVectors, numberOfFeatures), supportSizes, SupportVectorMachineUtil.formatIds(support), ValueUtil.asDoubles(intercept), ValueUtil.asDoubles(dualCoef), schema)
.setKernel(SupportVectorMachineUtil.createKernel(getKernel(), getDegree(), getGamma(), getCoef0()));
List<SupportVectorMachine> supportVectorMachines = supportVectorMachineModel.getSupportVectorMachines();
for(SupportVectorMachine supportVectorMachine : supportVectorMachines){
String category = supportVectorMachine.getTargetCategory();
supportVectorMachine.setTargetCategory(supportVectorMachine.getAlternateTargetCategory());
supportVectorMachine.setAlternateTargetCategory(category);
}
return supportVectorMachineModel;
}