public static void CreateModel() { MLContext mlContext = new MLContext(); IDataView trainingDataView = mlContext.Data.LoadFromTextFile <ModelInput>( path: TrainDataFilePath, hasHeader: true, separatorChar: ',', allowQuoting: true, allowSparse: false); var dataProcessPipeline = mlContext.Transforms.Categorical.OneHotEncoding( new[] { new InputOutputColumnPair("District", "District"), new InputOutputColumnPair("Type", "Type"), new InputOutputColumnPair("BuildingType", "BuildingType") }) .Append(mlContext.Transforms.Concatenate("Features", new[] { "District", "Type", "BuildingType", "Size", "Floor", "TotalFloors", "Year" })); FastTreeTweedieTrainer trainer = mlContext.Regression.Trainers.FastTreeTweedie(new FastTreeTweedieTrainer.Options() { NumberOfLeaves = 20, MinimumExampleCountPerLeaf = 10, NumberOfTrees = 500, LearningRate = 0.07684207f, Shrinkage = 1.057825f, LabelColumnName = "Price", FeatureColumnName = "Features" }); EstimatorChain <RegressionPredictionTransformer <FastTreeTweedieModelParameters> > trainingPipeline = dataProcessPipeline.Append(trainer); ITransformer model = trainingPipeline.Fit(trainingDataView); mlContext.Model.Save(model, trainingDataView.Schema, ModelFilePath); }
public void TweedieRegressorEstimator() { // Pipeline. var pipeline = new FastTreeTweedieTrainer(Env, "Label", "Features", advancedSettings: s => { s.EntropyCoefficient = 0.3; s.OptimizationAlgorithm = BoostedTreeArgs.OptimizationAlgorithmType.AcceleratedGradientDescent; }); TestEstimatorCore(pipeline, GetRegressionPipeline()); Done(); }
public void TweedieRegressorEstimator() { var dataView = GetRegressionPipeline(); var trainer = new FastTreeTweedieTrainer(Env, "Label", "Features", advancedSettings: s => { s.EntropyCoefficient = 0.3; s.OptimizationAlgorithm = BoostedTreeArgs.OptimizationAlgorithmType.AcceleratedGradientDescent; }); TestEstimatorCore(trainer, dataView); var model = trainer.Train(dataView, dataView); Done(); }