0

Im trying to return a prediction / label of an array of numbers but get a Schema mismatch for label column '': expected R4, got Vector Parameter name: labelCol' error. Any ideas what im doing wrong.

Im using ml.net 0.11 in visual studio 2017. Im loading the data from an enumerable and passing that to the pipeline. It works fine for one value but when I change to output to vector i get the error.

The class structure is

Public Class BallsDrawn
    <LoadColumn(0)>
    <ColumnName("Sequence")>
    Public Sequence As Single

    <LoadColumn(1)>
    <ColumnName("Day")>
    Public Day As Single

    <LoadColumn(2)>
    <ColumnName("Month")>
    Public Month As Single

    <LoadColumn(3)>
    <ColumnName("Year")>
    Public Year As Single

    <LoadColumn(4)>
    <ColumnName("Balls")>
    <VectorType(8)>
    Public Balls() As Single

End Class

Public Class BallsDrawnPrediction



    <ColumnName("Score")>
    <VectorType(8)>
    Public Balls() As Single


End Class

'code to load data worka fine. testDataView = mlContext.Data.LoadFromEnumerable((GetTestDataList(records, 5)))

'pipeline

        Dim dataProcessPipeline = mlContext.Transforms.Conversion.MapValueToKey(outputColumnName:=DefaultColumnNames.Label, inputColumnName:=NameOf(MLnet.BallsDrawn.Balls)).Append(mlContext.Transforms.CopyColumns(outputColumnName:=DefaultColumnNames.Label, inputColumnName:=NameOf(MLnet.BallsDrawn.Balls))).Append(mlContext.Transforms.Categorical.OneHotEncoding(outputColumnName:="Sequence", inputColumnName:=NameOf(MLnet.BallsDrawn.Sequence))).Append(mlContext.Transforms.Normalize(outputColumnName:=NameOf(BallsDrawn.Day), mode:=NormalizerMode.MeanVariance)).Append(mlContext.Transforms.Normalize(outputColumnName:=NameOf(BallsDrawn.Month), mode:=NormalizerMode.MeanVariance)).Append(mlContext.Transforms.Normalize(outputColumnName:=NameOf(BallsDrawn.Year), mode:=NormalizerMode.MeanVariance)).Append(mlContext.Transforms.Concatenate(DefaultColumnNames.Features, "Sequence", NameOf(MLnet.BallsDrawn.Day), NameOf(MLnet.BallsDrawn.Month), NameOf(MLnet.BallsDrawn.Year))).AppendCacheCheckpoint(mlContext)

'testing multiple trainers

 Dim trainer As IEstimator(Of ITransformer)

        Select Case Learner
          '  Case = Learner.FastTree
              '  trainer = mlContext.Ranking.Trainers.FastTree(labelColumnName:=DefaultColumnNames.Label, featureColumnName:=DefaultColumnNames.Features)

          '  Case = Learner.FastTreeTweedie
              '  trainer = mlContext.Regression.Trainers.FastTreeTweedie(labelColumnName:=DefaultColumnNames.Label, featureColumnName:=DefaultColumnNames.Features)

            Case = Learner.Poisson
                trainer = mlContext.Regression.Trainers.PoissonRegression(labelColumnName:=DefaultColumnNames.Label, featureColumnName:=DefaultColumnNames.Features)

            Case = Learner.SDCA
                'mlContext.MulticlassClassification.Trainers.StochasticDualCoordinateAscent
                '  trainer = mlContext.MulticlassClassification.Trainers.StochasticDualCoordinateAscent(labelColumnName:=DefaultColumnNames.Label, featureColumnName:=DefaultColumnNames.Features)
                ' trainer = mlContext.MulticlassClassification.Trainers.StochasticDualCoordinateAscent(labelColumnName:=DefaultColumnNames.Label, featureColumnName:=DefaultColumnNames.Features)

                trainer = mlContext.MulticlassClassification.Trainers.StochasticDualCoordinateAscent(labelColumnName:=DefaultColumnNames.Label, featureColumnName:=DefaultColumnNames.Features)
                '     Case = Learner.FastForestRegressor

              '  trainer = mlContext.Regression.Trainers.FastForest(labelColumnName:=DefaultColumnNames.Label, featureColumnName:=DefaultColumnNames.Features)

                '  Case = Learner.GeneralizedAdditiveModels

              '  trainer = mlContext.Regression.Trainers.GeneralizedAdditiveModels(labelColumnName:=DefaultColumnNames.Label, featureColumnName:=DefaultColumnNames.Features)

            Case = Learner.OnlineGradientDescentRegressor

                trainer = mlContext.Regression.Trainers.OnlineGradientDescent(labelColumnName:=DefaultColumnNames.Label, featureColumnName:=DefaultColumnNames.Features)

                '  mlContext.MulticlassClassification.Trainers.StochasticDualCoordinateAscent

        End Select




        Dim trainingPipeline = dataProcessPipeline.Append(trainer)

        ' STEP 4: Train the model fitting to the DataSet
        'The pipeline is trained on the dataset that has been loaded and transformed.
        '  Console.WriteLine("=============== Training the model ===============")

'get the error here. Dim trainedModel = trainingPipeline.Fit(trainingDataView)

trying to get an array or multiple number outputs. Any help or advise will be greatly appreciated.

amy8374
  • 1,450
  • 3
  • 17
  • 26
Trevor
  • 21
  • 4
  • 1
    I think the score has to be a float for regression. Not too sure if it supports multiple predictions of the top of my head. I can research it some. – Jon Apr 03 '19 at 21:27
  • was mainly trying trainer = mlContext.MulticlassClassification.Trainers.StochasticDualCoordinateAscent(labelColumnName:=DefaultColumnNames.Label, featureColumnName:=DefaultColumnNames.Features) – Trevor Apr 09 '19 at 21:47

0 Answers0