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