1
0

Añadidos algunos comentarios

This commit is contained in:
2022-11-18 14:43:21 +01:00
parent c243e2049a
commit 37e963a55f

View File

@@ -18,34 +18,36 @@ namespace testML
static void Main(string[] args) static void Main(string[] args)
{ {
#region Preparamos los datos de entrenamiento
var tmpData = new List<Data>(); var tmpData = new List<Data>();
for (var c = 0; c < 15000; c++)
for (var c = 0; c < 1000; c++)
{ {
var d = CreateRandomData(); var d = CreateRandomData();
tmpData.Add(d); tmpData.Add(d);
} }
#endregion
MLContext mlContext = new MLContext(); MLContext mlContext = new MLContext();
var data = mlContext.Data.LoadFromEnumerable(tmpData); 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 trainData = dataSplit.TrainSet;
IDataView testData = dataSplit.TestSet; 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.Sdca(maximumNumberOfIterations:1000);
//var trainer = mlContext.Regression.Trainers.OnlineGradientDescent(numberOfIterations: 100, learningRate: 0.01f ); //var trainer = mlContext.Regression.Trainers.OnlineGradientDescent(numberOfIterations: 100, learningRate: 0.01f );
var pipeline = mlContext.Transforms.CopyColumns(outputColumnName: "Label", inputColumnName: "IntegerNumber") var pipeline = mlContext.Transforms.CopyColumns(outputColumnName: "Label", inputColumnName: "IntegerNumber")
.Append(mlContext.Transforms.Text.NormalizeText("StringTest")) .Append(mlContext.Transforms.Text.NormalizeText("StringTest"))
.Append(mlContext.Transforms.Text.FeaturizeText("StringTest")) .Append(mlContext.Transforms.Text.FeaturizeText("StringTest"))
@@ -53,10 +55,12 @@ namespace testML
.Append(mlContext.Transforms.NormalizeMinMax("Features")) .Append(mlContext.Transforms.NormalizeMinMax("Features"))
.Append(trainer); .Append(trainer);
#endregion
//Entrenamos el modelo
ITransformer model = pipeline.Fit(trainData); ITransformer model = pipeline.Fit(trainData);
#region Hacemos un test para medir el % de error
// Use trained model to make inferences on test data // Use trained model to make inferences on test data
IDataView testDataPredictions = model.Transform(testData); IDataView testDataPredictions = model.Transform(testData);
@@ -67,14 +71,15 @@ namespace testML
Console.WriteLine("ModelMetrics: {0}", rSquared); Console.WriteLine("ModelMetrics: {0}", rSquared);
#endregion
#region Ponemos a prueba haciendo algunas predicciones
var predictionFunction = mlContext.Model.CreatePredictionEngine<Data, DataPrediction>(model); var predictionFunction = mlContext.Model.CreatePredictionEngine<Data, DataPrediction>(model);
for (var c = 0; c < 25; c++)
for (var c = 0; c < 1000; c++)
{ {
var test = CreateRandomData(); var test = CreateRandomData();
var expected = test.IntegerNumber; var expected = test.IntegerNumber;
test.IntegerNumber = 0; 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); 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() private static Data CreateRandomData()