Cześć, od paru dni bawię się w zapoznanie z ML.NET i mam pewien problem z zadankiem z regresją. Moim zdaniem powinno działać, ale przewiduje 0 ;/ jeśli ktoś widzi jakiś pomysł na rozwiązanie problemu, będę bardzo wdzięczny :)
using System;
using Microsoft.ML;
using Microsoft.ML.Data;
namespace ConsoleApp4
{
class Program
{
public class Zawodnik
{
public float jedynka { get; set; }
public float trojka { get; set; }
public float piatka { get; set; }
}
public class Przewidywanie
{
[ColumnName("WYNIK")]
public float jedynka { get; set; }
}
static void Main(string[] args)
{
MLContext mlContext = new MLContext();
Zawodnik[] zawodnik =
{
new Zawodnik (){ piatka=155F, trojka=float.NaN,jedynka=175F },
new Zawodnik (){ piatka=float.NaN, trojka=180,jedynka=195F },
new Zawodnik (){ piatka=170F, trojka=180F,jedynka=200F },
new Zawodnik (){ piatka=float.NaN, trojka=127.5F,jedynka=142.5F },
new Zawodnik (){ piatka=605F, trojka=65F,jedynka=67.5F },//kobieta
new Zawodnik (){ piatka=147.5F, trojka=160,jedynka=175F },
new Zawodnik (){ piatka=62.5F, trojka=67.5F,jedynka=72.5F },//kobieta
new Zawodnik (){ piatka=140F, trojka=float.NaN,jedynka=175.5F },
new Zawodnik (){ piatka=float.NaN, trojka=117.5F,jedynka=135F },
new Zawodnik (){ piatka=220F, trojka=230,jedynka=240.5F } };
IDataView dane_treningowe = mlContext.Data.LoadFromEnumerable(zawodnik);
var pipeline = mlContext.Transforms.Concatenate("Features", new[] { "piatka", "trojka" }).Append(mlContext.Regression.Trainers.Sdca(labelColumnName: "jedynka", maximumNumberOfIterations: 100));
var model = pipeline.Fit(dane_treningowe);
var proba = new Zawodnik() { piatka = 110F, trojka = 115F };
var jedynka_proba = mlContext.Model.CreatePredictionEngine<Zawodnik, Przewidywanie>(model).Predict(proba);
Console.WriteLine(jedynka_proba.jedynka);
Console.WriteLine($"Przewidywana jedynka dla 5RM:{proba.piatka},3RM :{proba.trojka} to :{jedynka_proba.jedynka}");
Console.ReadLine();
}
}
}