Esempio n. 1
0
 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);
 }