/** * Creates a new instance of LinearRegression * @param regularization * L2 ridge regularization term, must be nonnegative, a value of zero is * equivalent to unregularized regression. * @param usePseudoInverse * Flag to use a pseudoinverse. True to use the expensive, but more * accurate, pseudoinverse routine. False uses a very fast, but * numerically less stable LU solver. Default value is "true". */ public LinearRegression( double regularization, boolean usePseudoInverse ) { this.setRegularization(regularization); this.setUsePseudoInverse(usePseudoInverse); }
LinearRegression linear = new LinearRegression(); linear.setUsePseudoInverse(this.getUsePseudoInverse()); LinearDiscriminant weights = linear.learn(vectorData); return new VectorFunctionLinearDiscriminant<InputType>( this.inputToVectorMap, weights );
@Override public VectorFunctionLinearDiscriminant<Double> learn( final Collection<? extends InputOutputPair<? extends Double, Double>> data) { // The first task is to create the Vector-space representation ArrayList<InputOutputPair<Vector,Double>> vectorData = new ArrayList<InputOutputPair<Vector, Double>>( data.size() ); for( InputOutputPair<? extends Double,Double> pair : data ) { Vector phi = this.polynomials.evaluate( pair.getInput() ); vectorData.add( DefaultInputOutputPair.create( phi, pair.getOutput() ) ); } LinearRegression regression = new LinearRegression(); LinearDiscriminantWithBias linearResult = regression.learn(vectorData); return new VectorFunctionLinearDiscriminant<Double>( this.getPolynomials(), linearResult ); }
LinearRegression linear = new LinearRegression(); linear.setUsePseudoInverse(this.getUsePseudoInverse()); LinearDiscriminant weights = linear.learn(vectorData); return new VectorFunctionLinearDiscriminant<InputType>( this.inputToVectorMap, weights );
@Override public VectorFunctionLinearDiscriminant<Double> learn( final Collection<? extends InputOutputPair<? extends Double, Double>> data) { // The first task is to create the Vector-space representation ArrayList<InputOutputPair<Vector,Double>> vectorData = new ArrayList<InputOutputPair<Vector, Double>>( data.size() ); for( InputOutputPair<? extends Double,Double> pair : data ) { Vector phi = this.polynomials.evaluate( pair.getInput() ); vectorData.add( DefaultInputOutputPair.create( phi, pair.getOutput() ) ); } LinearRegression regression = new LinearRegression(); LinearDiscriminantWithBias linearResult = regression.learn(vectorData); return new VectorFunctionLinearDiscriminant<Double>( this.getPolynomials(), linearResult ); }
if( this.getUsePseudoInverse() )
LinearRegression linear = new LinearRegression(); linear.setUsePseudoInverse(this.getUsePseudoInverse()); LinearDiscriminant weights = linear.learn(vectorData); return new VectorFunctionLinearDiscriminant<InputType>( this.inputToVectorMap, weights );
/** * Creates a new instance of LinearRegression * @param regularization * L2 ridge regularization term, must be nonnegative, a value of zero is * equivalent to unregularized regression. * @param usePseudoInverse * Flag to use a pseudoinverse. True to use the expensive, but more * accurate, pseudoinverse routine. False uses a very fast, but * numerically less stable LU solver. Default value is "true". */ public LinearRegression( double regularization, boolean usePseudoInverse ) { this.setRegularization(regularization); this.setUsePseudoInverse(usePseudoInverse); }
@Override public VectorFunctionLinearDiscriminant<Double> learn( final Collection<? extends InputOutputPair<? extends Double, Double>> data) { // The first task is to create the Vector-space representation ArrayList<InputOutputPair<Vector,Double>> vectorData = new ArrayList<InputOutputPair<Vector, Double>>( data.size() ); for( InputOutputPair<? extends Double,Double> pair : data ) { Vector phi = this.polynomials.evaluate( pair.getInput() ); vectorData.add( DefaultInputOutputPair.create( phi, pair.getOutput() ) ); } LinearRegression regression = new LinearRegression(); LinearDiscriminantWithBias linearResult = regression.learn(vectorData); return new VectorFunctionLinearDiscriminant<Double>( this.getPolynomials(), linearResult ); }
if( this.getUsePseudoInverse() )
/** * Creates a new instance of LinearRegression * @param regularization * L2 ridge regularization term, must be nonnegative, a value of zero is * equivalent to unregularized regression. * @param usePseudoInverse * Flag to use a pseudoinverse. True to use the expensive, but more * accurate, pseudoinverse routine. False uses a very fast, but * numerically less stable LU solver. Default value is "true". */ public LinearRegression( double regularization, boolean usePseudoInverse ) { this.setRegularization(regularization); this.setUsePseudoInverse(usePseudoInverse); }