public static void Metrics() { IDataView predictions = Data.Transformer.Transform(Data.DataViewTesting); Microsoft.ML.Data.RegressionMetrics metrics_endomorphic = null; Microsoft.ML.Data.RegressionMetrics metrics_mesomorphic = null; Microsoft.ML.Data.RegressionMetrics metrics_ectomorphic = null; metrics_endomorphic = ml_dotnet_context.Regression.Evaluate(predictions, "Label", "EndomorphicComponent"); metrics_mesomorphic = ml_dotnet_context.Regression.Evaluate(predictions, "Label", "MesomorphicComponent"); metrics_ectomorphic = ml_dotnet_context.Regression.Evaluate(predictions, "Label", "EctomorphicComponent"); Console.WriteLine(); Console.WriteLine($"*************************************************"); Console.WriteLine($"* Model quality metrics evaluation "); Console.WriteLine($"*------------------------------------------------"); Console.WriteLine($"* EndomorphicComponent"); Console.WriteLine($"* RSquared Score: {metrics_endomorphic.RSquared:0.##}"); Console.WriteLine($"* Root Mean Squared Error: {metrics_endomorphic.RootMeanSquaredError:#.##}"); Console.WriteLine($"* MesomorphicComponent"); Console.WriteLine($"* RSquared Score: {metrics_endomorphic.RSquared:0.##}"); Console.WriteLine($"* Root Mean Squared Error: {metrics_endomorphic.RootMeanSquaredError:#.##}"); Console.WriteLine($"* EctomorphicComponent"); Console.WriteLine($"* RSquared Score: {metrics_endomorphic.RSquared:0.##}"); Console.WriteLine($"* Root Mean Squared Error: {metrics_endomorphic.RootMeanSquaredError:#.##}"); return; }
private static void PrintMetrics(string caption, Microsoft.ML.Data.RegressionMetrics metrics) { Console.WriteLine($"*************************************************"); Console.WriteLine($"* 回帰モデル: {caption} のメトリック"); Console.WriteLine($"*"); Console.WriteLine($"* 損失関数(LossFn): {metrics.LossFunction}"); Console.WriteLine($"* 決定係数(R2 Score): {metrics.RSquared}"); Console.WriteLine($"* 平均絶対誤差(Absolute loss): {metrics.MeanAbsoluteError}"); Console.WriteLine($"* 平均二乗誤差(Squared loss): {metrics.MeanSquaredError}"); Console.WriteLine($"* 平均二乗誤差平方根(RMS loss): {metrics.RootMeanSquaredError}"); Console.WriteLine($"*************************************************"); }
public void Train(string trainingFileName) { if (!File.Exists(trainingFileName)) { Console.WriteLine($"Failed to find training data file ({trainingFileName}"); return; } //The first change is the use of a comma to separate the data IDataView trainingDataView = MlContext.Data.LoadFromTextFile <EmploymentHistory>(trainingFileName, ','); DataOperationsCatalog.TrainTestData dataSplit = MlContext.Data.TrainTestSplit(trainingDataView, testFraction: 0.4); Microsoft.ML.Data.EstimatorChain <Microsoft.ML.Data.TransformerChain <Microsoft.ML.Data.ColumnConcatenatingTransformer> > dataProcessPipeline = MlContext.Transforms.CopyColumns("Label", nameof(EmploymentHistory.DurationInMonths)) .Append(MlContext.Transforms.NormalizeMeanVariance(nameof(EmploymentHistory.IsMarried))) .Append(MlContext.Transforms.NormalizeMeanVariance(nameof(EmploymentHistory.BSDegree))) .Append(MlContext.Transforms.NormalizeMeanVariance(nameof(EmploymentHistory.MSDegree))) .Append(MlContext.Transforms.NormalizeMeanVariance(nameof(EmploymentHistory.YearsExperience)) .Append(MlContext.Transforms.NormalizeMeanVariance(nameof(EmploymentHistory.AgeAtHire))) .Append(MlContext.Transforms.NormalizeMeanVariance(nameof(EmploymentHistory.HasKids))) .Append(MlContext.Transforms.NormalizeMeanVariance(nameof(EmploymentHistory.WithinMonthOfVesting))) .Append(MlContext.Transforms.NormalizeMeanVariance(nameof(EmploymentHistory.DeskDecorations))) .Append(MlContext.Transforms.NormalizeMeanVariance(nameof(EmploymentHistory.LongCommute))) .Append(MlContext.Transforms.Concatenate("Features", typeof(EmploymentHistory).ToPropertyList <EmploymentHistory>(nameof(EmploymentHistory.DurationInMonths))))); //We can then create the Sdca trainer using the default parameters Microsoft.ML.Trainers.SdcaRegressionTrainer trainer = MlContext.Regression.Trainers.Sdca(labelColumnName: "Label", featureColumnName: "Features"); Microsoft.ML.Data.EstimatorChain <Microsoft.ML.Data.RegressionPredictionTransformer <Microsoft.ML.Trainers.LinearRegressionModelParameters> > trainingPipeline = dataProcessPipeline.Append(trainer); ITransformer trainedModel = trainingPipeline.Fit(dataSplit.TrainSet); MlContext.Model.Save(trainedModel, dataSplit.TrainSet.Schema, ModelPath); IDataView testSetTransform = trainedModel.Transform(dataSplit.TestSet); //Lastly, we call the Regression.Evaluate method to provide regression specific metrics Microsoft.ML.Data.RegressionMetrics modelMetrics = MlContext.Regression.Evaluate(testSetTransform); Console.WriteLine($"Loss Function: {modelMetrics.LossFunction:0.##}{Environment.NewLine}" + $"Mean Absolute Error: {modelMetrics.MeanAbsoluteError:#.##}{Environment.NewLine}" + $"Mean Squared Error: {modelMetrics.MeanSquaredError:#.##}{Environment.NewLine}" + $"RSquared: {modelMetrics.RSquared:0.##}{Environment.NewLine}" + $"Root Mean Squared Error: {modelMetrics.RootMeanSquaredError:#.##}"); }
private static void EvaluateTestMLdotnet(MLContext mlc, ITransformer m) { IDataView predictions = m.Transform(testData); Microsoft.ML.Data.RegressionMetrics metrics = null; metrics = mlc.Regression.Evaluate(predictions, "Label", "EndomorphicComponent"); Console.WriteLine(); Console.WriteLine($"*************************************************"); Console.WriteLine($"* Model quality metrics evaluation "); Console.WriteLine($"*------------------------------------------------"); Console.WriteLine($"* RSquared Score: {metrics.RSquared:0.##}"); Console.WriteLine($"* Root Mean Squared Error: {metrics.RootMeanSquaredError:#.##}"); return; }
public static void Metrics() { //Define DataViewSchema for data preparation pipeline and trained model DataViewSchema schema = Data.DataViewSchema; // Load trained model ITransformer trainedModel = Data.Context.Model.Load ( Data.ModelPathEndomorphic, out schema ); Data.Transformer = trainedModel; IDataView predictions = Data.Transformer.Transform(Data.DataViewTesting); Microsoft.ML.Data.RegressionMetrics metrics_endomorphic = null; Microsoft.ML.Data.RegressionMetrics metrics_mesomorphic = null; Microsoft.ML.Data.RegressionMetrics metrics_ectomorphic = null; metrics_endomorphic = Data.Context.Regression.Evaluate(predictions, "Label", "EndomorphicComponent"); metrics_mesomorphic = Data.Context.Regression.Evaluate(predictions, "Label", "MesomorphicComponent"); metrics_ectomorphic = Data.Context.Regression.Evaluate(predictions, "Label", "EctomorphicComponent"); Console.WriteLine(); Console.WriteLine($"*************************************************"); Console.WriteLine($"* Model quality metrics evaluation "); Console.WriteLine($"*------------------------------------------------"); Console.WriteLine($"* EndomorphicComponent"); Console.WriteLine($"* RSquared Score: {metrics_endomorphic.RSquared:0.##}"); Console.WriteLine($"* Root Mean Squared Error: {metrics_endomorphic.RootMeanSquaredError:#.##}"); //Console.WriteLine($"* MesomorphicComponent"); //Console.WriteLine($"* RSquared Score: {metrics_endomorphic.RSquared:0.##}"); //Console.WriteLine($"* Root Mean Squared Error: {metrics_endomorphic.RootMeanSquaredError:#.##}"); //Console.WriteLine($"* EctomorphicComponent"); //Console.WriteLine($"* RSquared Score: {metrics_endomorphic.RSquared:0.##}"); //Console.WriteLine($"* Root Mean Squared Error: {metrics_endomorphic.RootMeanSquaredError:#.##}"); return; }