C# ML.Net足球预测返回错误结果
我在ML.NET中有以下代码,它读取历史足球比赛的赔率和结果,并尝试根据通过的赔率预测结果,但预测令人失望,每次它都给出不同的预测,即使我使用完全相同的数据C# ML.Net足球预测返回错误结果,c#,.net,machine-learning,ml.net,C#,.net,Machine Learning,Ml.net,我在ML.NET中有以下代码,它读取历史足球比赛的赔率和结果,并尝试根据通过的赔率预测结果,但预测令人失望,每次它都给出不同的预测,即使我使用完全相同的数据 public ResultPrediction Start() { var dbData = matchDetailsRepository.GetOdds(string.Empty); if (dbData.Count == 0) return null; //Create ML Context w
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;
}
机器学习假设每次都能得到相同的结果。如果A队获胜的概率为60%,B队获胜的概率为40%,A队是否总是获胜?SDCA是一种随机算法,很难确定。也许试着用其他的模型?还有,我想问你为什么要把它作为回归问题来解决?多类别分类似乎是一种更自然的选择
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