diff --git a/testML/Program.cs b/testML/Program.cs index d7b3c1b..4207f9e 100644 --- a/testML/Program.cs +++ b/testML/Program.cs @@ -18,34 +18,36 @@ namespace testML static void Main(string[] args) { - - + + #region Preparamos los datos de entrenamiento var tmpData = new List(); - - for (var c = 0; c < 1000; c++) + for (var c = 0; c < 15000; c++) { var d = CreateRandomData(); tmpData.Add(d); } - + #endregion + MLContext mlContext = new MLContext(); - var data = mlContext.Data.LoadFromEnumerable(tmpData); + #region Cortamos los datos de entrenamiento en (Datos para entenar y Datos para hacer el test de precisión) - DataOperationsCatalog.TrainTestData dataSplit = mlContext.Data.TrainTestSplit(data, testFraction: 0.2); + DataOperationsCatalog.TrainTestData dataSplit = mlContext.Data.TrainTestSplit(data, testFraction: 0.1); IDataView trainData = dataSplit.TrainSet; IDataView testData = dataSplit.TestSet; - + #endregion + + #region Preparamos los datos de entrada y salida + var trainer = mlContext.Regression.Trainers.Sdca(maximumNumberOfIterations:1000); //var trainer = mlContext.Regression.Trainers.OnlineGradientDescent(numberOfIterations: 100, learningRate: 0.01f ); - var pipeline = mlContext.Transforms.CopyColumns(outputColumnName: "Label", inputColumnName: "IntegerNumber") .Append(mlContext.Transforms.Text.NormalizeText("StringTest")) .Append(mlContext.Transforms.Text.FeaturizeText("StringTest")) @@ -53,10 +55,12 @@ namespace testML .Append(mlContext.Transforms.NormalizeMinMax("Features")) .Append(trainer); + #endregion - + //Entrenamos el modelo ITransformer model = pipeline.Fit(trainData); - + + #region Hacemos un test para medir el % de error // Use trained model to make inferences on test data IDataView testDataPredictions = model.Transform(testData); @@ -67,14 +71,15 @@ namespace testML Console.WriteLine("ModelMetrics: {0}", rSquared); + #endregion + #region Ponemos a prueba haciendo algunas predicciones + var predictionFunction = mlContext.Model.CreatePredictionEngine(model); - - for (var c = 0; c < 1000; c++) + for (var c = 0; c < 25; c++) { - var test = CreateRandomData(); var expected = test.IntegerNumber; test.IntegerNumber = 0; @@ -84,6 +89,13 @@ namespace testML Console.WriteLine("Found: {0:#,##0.00}\tExpected: {1:#,##0.00}\t\tDiff: {2:#,##0.00}", p.IntegerNumber, expected , expected- p.IntegerNumber); } + #endregion + + + Console.WriteLine(); + Console.WriteLine("Press enter to Exit"); + Console.ReadLine(); + } private static Data CreateRandomData()