Ошибка компиляции при прогнозировании LogisticRegression в ML.NET - PullRequest
0 голосов
/ 29 декабря 2018

Использование набора данных Titanic для создания модели логистической регрессии в ML.NET.У меня большая часть кода идет, но когда я пытаюсь создать прогноз в оценщике, я получаю ошибки компиляции.

Вот полный код:

var context = new MLContext();

var reader = TextLoader.CreateReader(context,
    ctx => (
        PassengerId: ctx.LoadFloat(0),
        HasSurvived: ctx.LoadBool(1),
        PClass: ctx.LoadFloat(2),
        Name: ctx.LoadText(3),
        Gender: ctx.LoadText(4),
        Age: ctx.LoadFloat(5),
        NumOfSiblingsOrSpouses: ctx.LoadFloat(6),
        NumOfParentOrChildAboard: ctx.LoadFloat(7),
        Ticket: ctx.LoadText(8),
        Fare: ctx.LoadFloat(9),
        Cabin: ctx.LoadText(10),
        EmbarkedPort: ctx.LoadText(11)
    ),
    hasHeader: true,
    separator: ',');

var data = reader.Read("titanic.csv");

var (trainData, testData) = context.BinaryClassification.TrainTestSplit(data, testFraction: 0.2);

var pipeline = reader.MakeNewEstimator()
    .Append(row => (
        Target: row.HasSurvived,
        Features: row.NumOfParentOrChildAboard.ConcatWith(
            row.NumOfSiblingsOrSpouses, row.PClass, row.Age.ReplaceNaNValues(MissingValueReplacingTransformer.ColumnInfo.ReplacementMode.Mean)
    )));

pipeline.Append(row => (
        row.Target,
        Prediction: context.BinaryClassification.Trainers.LogisticRegression(row.Target, row.Features)
    ));

Ошибка возникает в этомстрока - context.BinaryClassification.Trainers.LogisticRegression(row.Target, row.Features), говоря cannot convert from 'Microsoft.ML.StaticPipe.Scalar<bool>' to 'string'.

Когда я изменяю аргументы на строки, я получаю другую ошибку: Type of item Prediction.PredictionKind is neither a PipelineColumn nor a ValueTuple, nor a class of an allowed form.

Может кто-нибудь увидеть, что я делаю неправильнополучать эти ошибки или если я пропускаю шаг в конвейере?

...