Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ML.Net足球预测返回错误结果_C#_.net_Machine Learning_Ml.net - Fatal编程技术网

C# 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

我在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;
}

机器学习假设每次都能得到相同的结果。如果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