private protected override TreeEnsembleModelParameters PrepareModel(IDataView input) { var trainer = new FastForestRegressionTrainer(Env, _trainerOptions); var trained = trainer.Fit(input); return(trained.Model); }
private FastForestRegressionModelParameters FitModel(IEnumerable <IRunResult> previousRuns) { Single[] targets = new Single[previousRuns.Count()]; Single[][] features = new Single[previousRuns.Count()][]; int i = 0; foreach (RunResult r in previousRuns) { features[i] = SweeperProbabilityUtils.ParameterSetAsFloatArray(_host, _sweepParameters, r.ParameterSet, true); targets[i] = (float)r.MetricValue; i++; } ArrayDataViewBuilder dvBuilder = new ArrayDataViewBuilder(_host); dvBuilder.AddColumn(DefaultColumnNames.Label, NumberDataViewType.Single, targets); dvBuilder.AddColumn(DefaultColumnNames.Features, NumberDataViewType.Single, features); IDataView view = dvBuilder.GetDataView(); _host.Assert(view.GetRowCount() == targets.Length, "This data view will have as many rows as there have been evaluations"); using (IChannel ch = _host.Start("Single training")) { // Set relevant random forest arguments. // Train random forest. var trainer = new FastForestRegressionTrainer(_host, new FastForestRegressionTrainer.Options { FeatureFraction = _args.SplitRatio, NumberOfTrees = _args.NumOfTrees, MinimumExampleCountPerLeaf = _args.NMinForSplit, LabelColumnName = DefaultColumnNames.Label, FeatureColumnName = DefaultColumnNames.Features, }); var predictor = trainer.Fit(view); // Return random forest predictor. return(predictor.Model); } }