Я пытаюсь сделать функцию прогнозирования, используя новую Microsoft.ML 0.6.0
Когда я вызываю "model.AsDynamic.MakePredictionFunction", я получаю
"Систему.ArgumentOutOfRangeException: «Не удалось определить тип IDataView для элементов-участников» ».
Код:
using System;
using Microsoft.ML;
using Microsoft.ML.Runtime.Api;
using Microsoft.ML.Runtime.Data;
using Microsoft.ML.Trainers;
using Microsoft.ML.StaticPipe;
namespace MachineLearning
{
class MLTest
{
public void Run()
{
var env = new LocalEnvironment();
var reader = TextLoader.CreateReader(env, ctx => (label: ctx.LoadBool(0), features: ctx.LoadFloat(1, 3)));
var traindata = reader.Read(new MultiFileSource("train.txt"));
var bctx = new BinaryClassificationContext(env);
var est = reader.MakeNewEstimator()
.Append(x => (x.label, prediction: bctx.Trainers.Sdca(x.label, x.features.Normalize())));
var model = est.Fit(traindata);
//FAILS: System.ArgumentOutOfRangeException: 'Could not determine an IDataView type for member features'
var predictionFunct = model.AsDynamic.MakePredictionFunction<Issue, Prediction>(env);
}
public class Issue
{
public float label;
public Vector<float> features; //what is wrong?
}
public class Prediction
{
[ColumnName("prediction.predictedLabel")]
public bool PredictionLabel;
[ColumnName("prediction.probability")]
public float Probability;
[ColumnName("prediction.score")]
public float Score;
}
}
}
Файл train.txt содержит:
1 0 0 0
1 0 1 0
1 0 0 1
1 0 1 1
0 1 1 1
0 1 0 1
0 1 1 0
0 1 0 0
Похоже, ошибка в классе «Issue», но что именно не так?Спасибо