У меня есть следующий код в ML.NET, который читает исторические шансы и результаты футбольных матчей и пытается предсказать результат на основе пройденных шансов, но прогноз неутешителен, и каждый раз он дает другой прогноз, даже если я использую те же самые данные,
public ResultPrediction Start()
{
var dbData = matchDetailsRepository.GetOdds(string.Empty);
if (dbData.Count == 0)
return null;
//Create ML Context with seed for repeteable/deterministic results
MLContext mlContext = new MLContext(seed: 0);
IDataView data = mlContext.Data.LoadFromEnumerable<FullTimeOddsData>(dbData.ToFullTimeOddsDataList());
var pipeline = mlContext.Transforms.CopyColumns(outputColumnName: "Label", inputColumnName: "Result")
.Append(mlContext.Transforms.Concatenate("Features", "HomeWinOdd", "DrawOdd", "AwayWinOdd"));
// Define StochasticDualCoordinateAscent regression algorithm estimator
var sdcaEstimator = pipeline.Append(mlContext.Regression.Trainers.Sdca(labelColumnName: "Label", featureColumnName: "Features"));
// Build machine learning model
TransformerChain<RegressionPredictionTransformer<LinearRegressionModelParameters>> trainedModel = sdcaEstimator.Fit(data);
// Create PredictionEngines
PredictionEngine<FullTimeOddsData, ResultPrediction> predictionEngine = mlContext.Model.CreatePredictionEngine<FullTimeOddsData, ResultPrediction>(trainedModel);
// Input Data
FullTimeOddsData inputData = new FullTimeOddsData
{
HomeWinOdd = 19F,
DrawOdd = 10F,
AwayWinOdd = 1.14F,
};
// Get Prediction
ResultPrediction prediction = predictionEngine.Predict(inputData);
return prediction;
}
public class ResultPrediction
{
[ColumnName("Score")]
public float Prediction;
}
public class FullTimeOddsData
{
public float HomeWinOdd;
public float DrawOdd;
public float AwayWinOdd;
public float Result;
}
В чем здесь проблема, которая дает другой прогноз, используя одни и те же данные, и что я делаю неправильно, чтобы дать неправильный прогноз. На основе входных данных прогноз должен составлять 1 или около 1
Пример данных ниже:
HomeWinOdd,DrawOdd,AwayWinOdd,Result
2.2,3.5,2.5,2
2,3,2.9,2
2.05,3.4,2.95,2
2,3.4,2.9,2
2,3.6,2.65,3
2.1,3,2.8,3
2.3,3.4,2.55,3
2.4,3.3,2.4,3
2.3,3.3,2.45,3
2.35,3,2.35,3
2.45,3.4,2.4,3
2.4,3.3,2.4,3
1.9,3.3,3.5,1
1.8,3,3.5,1
1.85,3.4,3.5,1
1.41,4.1,4.7,1
1.75,3.1,3.6,1
1.6,3.5,4.5,1
1.61,3.6,4.2,1
Result = 1 means Home wins
Result = 2 means Away wins
Result = 3 means Draw