/**
* Copyright (c) 2007-2014 The LIBLINEAR Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted
* provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of conditions
* and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list of
* conditions and the following disclaimer in the documentation and/or other materials provided with
* the distribution.
*
* 3. Neither name of copyright holders nor the names of its contributors may be used to endorse or
* promote products derived from this software without specific prior written permission.
*
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
* THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package de.bwaldvogel.liblinear;
import java.io.File;
import java.io.IOException;
/**
* <p>
* Describes the problem
* </p>
*
* For example, if we have the following training data:
*
* <pre>
* LABEL ATTR1 ATTR2 ATTR3 ATTR4 ATTR5
* ----- ----- ----- ----- ----- -----
* 1 0 0.1 0.2 0 0
* 2 0 0.1 0.3 -1.2 0
* 1 0.4 0 0 0 0
* 2 0 0.1 0 1.4 0.5
* 3 -0.1 -0.2 0.1 1.1 0.1
*
* and bias = 1, then the components of problem are:
*
* l = 5
* n = 6
*
* y -> 1 2 1 2 3
*
* x -> [ ] -> (2,0.1) (3,0.2) (6,1) (-1,?)
* [ ] -> (2,0.1) (3,0.3) (4,-1.2) (6,1) (-1,?)
* [ ] -> (1,0.4) (6,1) (-1,?)
* [ ] -> (2,0.1) (4,1.4) (5,0.5) (6,1) (-1,?)
* [ ] -> (1,-0.1) (2,-0.2) (3,0.1) (4,1.1) (5,0.1) (6,1) (-1,?)
* </pre>
*/
public class Problem {
/** the number of training data */
public int l;
/** the number of features (including the bias feature if bias >= 0) */
public int n;
/** an array containing the target values */
public double[] y;
/** array of sparse feature nodes */
public Feature[][] x;
/**
* If bias >= 0, we assume that one additional feature is added to the end of each data
* instance
*/
public double bias;
/**
* see {@link Train#readProblem(File, double)}
*/
public static Problem readFromFile(File file, double bias) throws IOException, InvalidInputDataException {
return Train.readProblem(file, bias);
}
}