public ClassificationModel TrainGroupWise(int i, int[][] y, BaseVector[] x, IGroupDataProvider data) { int[][] yb = ToBinaryClasses(y, i); if (ranker == null || groupWiseNfeatures[i] >= x[0].Length) { return(classifier.Train(x, yb, 2, classifierParam, 1)); } int[] o = ranker.Rank(x, yb, 2, rankerParam, data, 1); int[] inds = nfeatures < o.Length ? ArrayUtils.SubArray(o, groupWiseNfeatures[i]) : o; return(new ClassificationOnSubFeatures(classifier.Train(ExtractFeatures(x, inds), yb, 2, classifierParam, 1), inds)); }
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); }