public static Parameters forProperties(final Properties properties,
@Nullable final String prefix) {
final Properties p = properties;
final String pr = prefix != null ? prefix : "";
final Algorithm algorithm = Algorithm
.valueOf(p.getProperty(pr + "algorithm").toUpperCase());
final int numLabels = Integer.parseInt(p.getProperty(pr + "numLabels"));
final float c = Float.parseFloat(p.getProperty(pr + "c"));
final Float bias = Conversion.convert(p.getProperty(pr + "bias"), Float.class);
final Boolean dual = Conversion.convert(p.getProperty(pr + "dual"), Boolean.class);
final Float gamma = Conversion.convert(p.getProperty(pr + "gamma"), Float.class);
final Float coeff = Conversion.convert(p.getProperty(pr + "coeff"), Float.class);
final Integer degree = Conversion.convert(p.getProperty(pr + "degree"), Integer.class);
float[] weights = null;
if (p.containsKey(pr + "weight.0")) {
weights = new float[numLabels];
for (int i = 0; i < numLabels; ++i) {
weights[i] = Conversion.convert(p.getProperty(pr + "weight." + i),
Float.class);
}
}
return new Parameters(algorithm, numLabels, weights, c, bias, dual, gamma, coeff,
degree);
}