public ClassificationModel[] Train(BaseVector[] x, int[][] y, int ngroups, int[] rankedFeatures, IGroupDataProvider data) { int[] o = ranker.Rank(x, y, ngroups, rankerParam, data, 1); //TODO Array.Copy(o, rankedFeatures, o.Length); int[] sizes = GetSizes(x[0].Length, reductionFactor, maxFeatures); ClassificationModel[] result = new ClassificationModel[sizes.Length]; for (int i = 0; i < result.Length; i++){ if (i == 0 && sizes[0] == x[0].Length){ result[0] = classifier.Train(x, y, ngroups, classifierParam, 1); } else{ int[] inds = ArrayUtils.SubArray(o, sizes[i]); result[i] = new ClassificationOnSubFeatures( classifier.Train(ClassificationWithRanking.ExtractFeatures(x, inds), y, ngroups, classifierParam, 1), inds); } } return result; }
public ClassificationModel[] Train(BaseVector[] x, int[][] y, int ngroups, int[] rankedFeatures, IGroupDataProvider data) { int[] o = ranker.Rank(x, y, ngroups, rankerParam, data, 1); //TODO Array.Copy(o, rankedFeatures, o.Length); int[] sizes = GetSizes(x[0].Length, reductionFactor, maxFeatures); ClassificationModel[] result = new ClassificationModel[sizes.Length]; for (int i = 0; i < result.Length; i++) { if (i == 0 && sizes[0] == x[0].Length) { result[0] = classifier.Train(x, y, ngroups, classifierParam, 1); } else { int[] inds = ArrayUtils.SubArray(o, sizes[i]); result[i] = new ClassificationOnSubFeatures( classifier.Train(ClassificationWithRanking.ExtractFeatures(x, inds), y, ngroups, classifierParam, 1), inds); } } return(result); }