Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
 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($"*************************************************");
 }
Ejemplo n.º 3
0
        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:#.##}");
        }
Ejemplo n.º 4
0
        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;
        }
Ejemplo n.º 5
0
        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;
        }