public RandomForest merge ( RandomForest other ) { if ( this . importance . length != other . importance . length ) { throw new IllegalArgumentException ( "RandomForest have different sizes of feature vectors" ) ; } ArrayList < RegressionTree > mergedTrees = new ArrayList <> ( ) ; mergedTrees . addAll ( this . trees ) ; mergedTrees . addAll ( other . trees ) ; double weightedMergedError = ( ( this . error * this . trees . size ( ) ) + ( other . error * other . trees . size ( ) ) ) / ( this . trees . size ( ) + other . trees . size ( ) ) ; double [ ] mergedImportance = calculateImportance ( mergedTrees , this . importance . length ) ; return new RandomForest ( mergedTrees , weightedMergedError , mergedImportance ) ; }
Merges together two random forests and returns a new forest consisting of trees from both input forests .