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(); }
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(); }
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(); }
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(); }