コード例 #1
0
        static void Main(string[] args)
        {
            var dataset     = MLNetUtilities.GetDataPathByDatasetName("SalaryData.csv");
            var testDataset = MLNetUtilities.GetDataPathByDatasetName("SalaryData-test.csv");

            var pipeline = new LearningPipeline
            {
                new TextLoader(dataset).CreateFrom <SalaryData>(useHeader: true, separator: ','),
                new ColumnConcatenator("Features", "YearsExperience"),
                new GeneralizedAdditiveModelRegressor()
            };

            var crossValidator = new CrossValidator()
            {
                Kind     = MacroUtilsTrainerKinds.SignatureRegressorTrainer,
                NumFolds = 5
            };
            var crossValidatorOutput = crossValidator.CrossValidate <SalaryData, SalaryPrediction>(pipeline);

            Console.Write(Environment.NewLine);
            Console.WriteLine("Root Mean Squared for each fold:");
            crossValidatorOutput.RegressionMetrics.ForEach(m => Console.WriteLine(m.Rms));

            var totalR2  = crossValidatorOutput.RegressionMetrics.Sum(metric => metric.RSquared);
            var totalRMS = crossValidatorOutput.RegressionMetrics.Sum(metric => metric.Rms);

            Console.Write(Environment.NewLine);
            Console.WriteLine($"Average R^2: {totalR2 / crossValidatorOutput.RegressionMetrics.Count}");
            Console.WriteLine($"Average RMS: {totalRMS / crossValidatorOutput.RegressionMetrics.Count}");

            Console.ReadLine();
        }
コード例 #2
0
        static void Main(string[] args)
        {
            var dataset     = MLNetUtilities.GetDataPathByDatasetName("SalaryData.csv");
            var testDataset = MLNetUtilities.GetDataPathByDatasetName("SalaryData-test.csv");

            var env    = new LocalEnvironment();
            var reader = TextLoader.CreateReader(env, ctx => (
                                                     YearsExperience: ctx.LoadFloat(0),
                                                     Target: ctx.LoadFloat(1)
                                                     ), hasHeader: true, separator: ',');

            var data = reader.Read(new MultiFileSource(dataset));

            var regression = new RegressionContext(env);

            var pipeline = reader.MakeNewEstimator()
                           .Append(r => (
                                       r.Target,
                                       Prediction: regression.Trainers.FastTree(label: r.Target, features: r.YearsExperience.AsVector())
                                       ));

            var model = pipeline.Fit(data).AsDynamic;

            var predictionFunc = model.MakePredictionFunction <SalaryData, SalaryPrediction>(env);

            var prediction = predictionFunc.Predict(new SalaryData {
                YearsExperience = 8
            });

            Console.WriteLine($"Predicted salary - {String.Format("{0:C}", prediction.PredictedSalary)}");

            Console.Read();
        }
コード例 #3
0
        static void Main(string[] args)
        {
            var modelPath = MLNetUtilities.GetModelFilePath("model.zip");

            var model = PredictionModel.ReadAsync <SalaryData, SalaryPrediction>(modelPath).Result;

            var prediction = model.Predict(new SalaryData {
                YearsExperience = YEARS_EXPERIENCE
            });

            Console.WriteLine($"Prediction for {YEARS_EXPERIENCE} years - {prediction.PredictedSalary}");

            // Can write it back to the file system
            // model.WriteAsync("model.zip");

            Console.ReadLine();
        }
コード例 #4
0
        static void Main(string[] args)
        {
            var dataset     = MLNetUtilities.GetDataPathByDatasetName("SalaryData.csv");
            var testDataset = MLNetUtilities.GetDataPathByDatasetName("SalaryData-test.csv");

            var pipeline = new LearningPipeline
            {
                new TextLoader(dataset).CreateFrom <SalaryData>(useHeader: true, separator: ','),
                new ColumnConcatenator("Features", "YearsExperience"),
                new GeneralizedAdditiveModelRegressor()
            };

            Console.WriteLine("--------------Training----------------");
            var model = pipeline.Train <SalaryData, SalaryPrediction>();

            model.WriteAsync(MLNetUtilities.GetModelFilePath("model.zip"));

            Console.WriteLine(Environment.NewLine);
            Console.WriteLine("--------------Evaluating----------------");
            var testData = new TextLoader(testDataset).CreateFrom <SalaryData>(useHeader: true, separator: ',');

            var evaluator = new RegressionEvaluator();
            var metrics   = evaluator.Evaluate(model, testData);

            Console.WriteLine($"Root Mean Squared: {metrics.Rms}");
            Console.WriteLine($"R^2: {metrics.RSquared}");

            Console.WriteLine(Environment.NewLine);
            Console.WriteLine("--------------Predicting----------------");
            var prediction = model.Predict(new SalaryData {
                YearsExperience = PREDICTION_YEARS
            });

            Console.WriteLine($"After {PREDICTION_YEARS} years you would earn around {String.Format("{0:C}", prediction.PredictedSalary)}");

            Console.ReadLine();
        }