Añadidos algunos comentarios
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user