Esempio n. 1
0
        public int calculateFinishTime(string userName, float commentLength, float noteLength, float workFollowRowCount)
        {
            string connectionString = "Data Source=.;Initial Catalog=Trello_Clone;Integrated Security=True";
            var    loaderColumns    = new DatabaseLoader.Column[]
            {
                new DatabaseLoader.Column()
                {
                    Name = "taskCommentLength", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "taskNoteLength", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "taskWorkFollowRowCount", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "taskFinishTime", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "userName", Type = DbType.String
                }
            };
            var connection = new SqlConnection(connectionString);
            var factory    = DbProviderFactories.GetFactory(connection);

            var context = new MLContext();

            var loader = context.Data.CreateDatabaseLoader(loaderColumns);

            var dbSource = new DatabaseSource(factory, connectionString,
                                              "select U.userName,F.taskCommentLength,F.taskNoteLength,F.taskWorkFollowRowCount,F.taskFinishTime from userTable U inner join FinishTime F on U.userID=F.userID");

            var data = loader.Load(dbSource);

            var preview = data.Preview();

            var testTrainSplit = context.Data.TrainTestSplit(data, testFraction: 0.9);

            var pipeline = context.Transforms.Categorical.OneHotEncoding(outputColumnName: "userNameEncoded", inputColumnName: "userName")
                           .Append(context.Transforms.Concatenate("Features", "taskCommentLength", "taskNoteLength", "taskWorkFollowRowCount", "userNameEncoded"))
                           .Append(context.Regression.Trainers.LbfgsPoissonRegression(labelColumnName: "taskFinishTime"));

            var model = pipeline.Fit(testTrainSplit.TestSet);

            var predictionFunc = context.Model.CreatePredictionEngine <HousingData, HousingPrediction>(model);

            var prediction = predictionFunc.Predict(new HousingData
            {
                userName               = userName,
                taskCommentLength      = commentLength,
                taskNoteLength         = noteLength,
                taskWorkFollowRowCount = workFollowRowCount
            });

            return(Convert.ToInt32(prediction.taskFinishTime));
        }
Esempio n. 2
0
        private void IrisLightGbmImpl(DatabaseSource dbs)
        {
            var mlContext = new MLContext(seed: 1);

            var loaderColumns = new DatabaseLoader.Column[]
            {
                new DatabaseLoader.Column()
                {
                    Name = "Label", Type = DbType.Int32
                },
                new DatabaseLoader.Column()
                {
                    Name = "SepalLength", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "SepalWidth", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "PetalLength", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "PetalWidth", Type = DbType.Single
                }
            };

            var loader = mlContext.Data.CreateDatabaseLoader(loaderColumns);

            var trainingData = loader.Load(dbs);

            IEstimator <ITransformer> pipeline = mlContext.Transforms.Conversion.MapValueToKey("Label")
                                                 .Append(mlContext.Transforms.Concatenate("Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth"))
                                                 .AppendCacheCheckpoint(mlContext)
                                                 .Append(mlContext.MulticlassClassification.Trainers.LightGbm())
                                                 .Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));

            var model = pipeline.Fit(trainingData);

            var engine = mlContext.Model.CreatePredictionEngine <IrisData, IrisPrediction>(model);

            Assert.Equal(0, engine.Predict(new IrisData()
            {
                SepalLength = 4.5f,
                SepalWidth  = 5.6f,
                PetalLength = 0.5f,
                PetalWidth  = 0.5f,
            }).PredictedLabel);

            Assert.Equal(1, engine.Predict(new IrisData()
            {
                SepalLength = 4.9f,
                SepalWidth  = 2.4f,
                PetalLength = 3.3f,
                PetalWidth  = 1.0f,
            }).PredictedLabel);
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("config.json");

            var configuration    = builder.Build();
            var connectionString = configuration["connectionString"];

            var loaderColumns = new DatabaseLoader.Column[]
            {
                new DatabaseLoader.Column()
                {
                    Name = "YearsOfExperience", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "Salary", Type = DbType.Single
                }
            };

            var connection = new SqlConnection(connectionString);
            var factory    = DbProviderFactories.GetFactory(connection);

            var context = new MLContext();

            var loader = context.Data.CreateDatabaseLoader(loaderColumns);

            var dbSource = new DatabaseSource(factory, connectionString,
                                              "SELECT YearsOfExperience, Salary FROM salarydb.dbo.SalaryData");

            var data = loader.Load(dbSource);

            var preview = data.Preview();

            var testTrainData = context.Data.TrainTestSplit(data, testFraction: 0.2);

            var pipeline = context.Transforms.Concatenate("Features", "YearsOfExperience")
                           .Append(context.Transforms.CopyColumns("Label", "Salary"))
                           .Append(context.Regression.Trainers.Sdca());

            var model = pipeline.Fit(testTrainData.TrainSet);

            var prediction = model.Transform(testTrainData.TestSet);

            var metrics = context.Regression.Evaluate(prediction);
        }
Esempio n. 4
0
        public void IrisLightGbm()
        {
            if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
                // https://github.com/dotnet/machinelearning/issues/4156
                return;
            }

            var mlContext = new MLContext(seed: 1);

            var connectionString = GetConnectionString(TestDatasets.irisDb.name);
            var commandText      = $@"SELECT * FROM ""{TestDatasets.irisDb.trainFilename}""";

            var loaderColumns = new DatabaseLoader.Column[]
            {
                new DatabaseLoader.Column()
                {
                    Name = "Label", Type = DbType.Int32
                },
                new DatabaseLoader.Column()
                {
                    Name = "SepalLength", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "SepalWidth", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "PetalLength", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "PetalWidth", Type = DbType.Single
                }
            };

            var loader = mlContext.Data.CreateDatabaseLoader(loaderColumns);

            var databaseSource = new DatabaseSource(SqlClientFactory.Instance, connectionString, commandText);

            var trainingData = loader.Load(databaseSource);

            IEstimator <ITransformer> pipeline = mlContext.Transforms.Conversion.MapValueToKey("Label")
                                                 .Append(mlContext.Transforms.Concatenate("Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth"))
                                                 .Append(mlContext.MulticlassClassification.Trainers.LightGbm())
                                                 .Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));

            var model = pipeline.Fit(trainingData);

            var engine = mlContext.Model.CreatePredictionEngine <IrisData, IrisPrediction>(model);

            Assert.Equal(0, engine.Predict(new IrisData()
            {
                SepalLength = 4.5f,
                SepalWidth  = 5.6f,
                PetalLength = 0.5f,
                PetalWidth  = 0.5f,
            }).PredictedLabel);

            Assert.Equal(1, engine.Predict(new IrisData()
            {
                SepalLength = 4.9f,
                SepalWidth  = 2.4f,
                PetalLength = 3.3f,
                PetalWidth  = 1.0f,
            }).PredictedLabel);
        }
Esempio n. 5
0
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("config.json");

            var configuration    = builder.Build();
            var connectionString = configuration["connectionString"];

            var loaderColumns = new DatabaseLoader.Column[]
            {
                new DatabaseLoader.Column()
                {
                    Name = "Longitude", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "Latitude", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "HousingMedianAge", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "TotalRooms", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "TotalBedrooms", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "Population", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "Households", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "MedianIncome", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "MedianHouseValue", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "OceanProximity", Type = DbType.String
                }
            };

            var connection = new SqlConnection(connectionString);
            var factory    = DbProviderFactories.GetFactory(connection);

            var context = new MLContext();

            var loader = context.Data.CreateDatabaseLoader(loaderColumns);

            var dbSource = new DatabaseSource(factory, connectionString,
                                              "SELECT * FROM salarydb.dbo.Housing");

            var data = loader.Load(dbSource);

            var preview = data.Preview();

            var testTrainSplit = context.Data.TrainTestSplit(data, testFraction: 0.2);

            var features = data.Schema
                           .Select(col => col.Name)
                           .Where(colName => colName != "MedianHouseValue" && colName != "OceanProximity")
                           .ToArray();

            var pipeline = context.Transforms.Text.FeaturizeText("Text", "OceanProximity")
                           .Append(context.Transforms.Concatenate("Features", features))
                           .Append(context.Transforms.Concatenate("Features", "Text"))
                           .Append(context.Regression.Trainers.LbfgsPoissonRegression(featureColumnName: "Features", labelColumnName: "MedianHouseValue"));

            var model = pipeline.Fit(testTrainSplit.TestSet);

            var predictionFunc = context.Model.CreatePredictionEngine <HousingData, HousingPrediction>(model);

            var prediction = predictionFunc.Predict(new HousingData
            {
                Longitude        = -122.25f,
                Latitude         = 37.85f,
                HousingMedianAge = 55.0f,
                TotalRooms       = 1627.0f,
                TotalBedrooms    = 235.0f,
                Population       = 322.0f,
                Households       = 120.0f,
                MedianIncome     = 8.3014f,
                OceanProximity   = "NEAR BAY"
            });

            Console.WriteLine($"Prediction - {prediction.PredictedHouseValue}");

            Console.ReadLine();
        }
        public void IrisSdcaMaximumEntropy()
        {
            var mlContext        = new MLContext(seed: 1);
            var connectionString = GetDataPath(TestDatasets.iris.trainFilename);
            var commandText      = "Label;SepalLength;SepalWidth;PetalLength;PetalWidth";

            var loaderColumns = new DatabaseLoader.Column[]
            {
                new DatabaseLoader.Column()
                {
                    Name = "Label", Type = DbType.Int32
                },
                new DatabaseLoader.Column()
                {
                    Name = "SepalLength", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "SepalWidth", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "PetalLength", Type = DbType.Single
                },
                new DatabaseLoader.Column()
                {
                    Name = "PetalWidth", Type = DbType.Single
                }
            };

            var loader = mlContext.Data.CreateDatabaseLoader(loaderColumns);

            var mockProviderFactory = new MockProviderFactory(mlContext, loaderColumns);
            var databaseSource      = new DatabaseSource(mockProviderFactory, connectionString, commandText);

            var trainingData = loader.Load(databaseSource);

            var pipeline = mlContext.Transforms.Conversion.MapValueToKey("Label")
                           .Append(mlContext.Transforms.Concatenate("Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth"))
                           .Append(mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy())
                           .Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));

            var model = pipeline.Fit(trainingData);

            var engine = mlContext.Model.CreatePredictionEngine <IrisData, IrisPrediction>(model);

            Assert.Equal(0, engine.Predict(new IrisData()
            {
                SepalLength = 4.5f,
                SepalWidth  = 5.6f,
                PetalLength = 0.5f,
                PetalWidth  = 0.5f,
            }).PredictedLabel);

            Assert.Equal(1, engine.Predict(new IrisData()
            {
                SepalLength = 4.9f,
                SepalWidth  = 2.4f,
                PetalLength = 3.3f,
                PetalWidth  = 1.0f,
            }).PredictedLabel);
        }