I'm trying out the ML.net framework with some random test data. My data exists of a DepartmentId (1-25) and a Body (string). I want my machine to predict the department that the body should be allocated (for example in a ticket system like Zendesk).
Using the following code, I'm receving an error:
ArgumentOutOfRangeException: Score column is missing
I'm not sure why it says that the Score
column is missing, as it's present in my prediction class.
Here's my setup for training the model, as well as my classes.
Main
var pipeline = new LearningPipeline();
pipeline.Add(new TextLoader(_dataPath).CreateFrom<DepartmentData>(userHeader: true, seperator: ','));
pipeline.Add(new TextFeaturizer("Features", "Body"));
pipeline.Add(new Dictionarizer("Label"));
pipeline.Add(new StochasticDualCoordinateAscentClassifier());
pipeline.Add(new PredictedLabelColumnOriginalValueConverter() { PredictedLabelColumn = "PredictedLabel" });
var model = pipeline.Train<DepartmentData, DepartmentPrediction>();
DepartmentData and DepartmentPrediction
public class DepartmentData
{
[Column(ordinal: "0", name: "Label")]
public float Department;
[Column(ordinal: "1")]
public string Body;
}
public class DepartmentPrediction
{
[ColumnName("PredictedLabel")]
public float Department;
[ColumnName("Score")]
public float[] Score;
}
Example data
Department, Body
1, Hello. 4 weeks ago I requested a replacement keycap for my keyboard. I still ahvent received the keycap. Perhaps you can confirm that it has been shipped?
13, I seem to have some problems when paying for you new mouse XZ-250 I'm being told that my card is not valid?
1, I just received the package I bought from you but I'm most definetly not satisfied with the shipment. The box was bended and broken when it received as well as the GPU inside. I demand that you ship a new one to me without charge. I've attached a few images of the box and the GPU here.
/* etc... */
Evaluation
var testData = new TextLoader(_testDataPath).CreateFrom<DepartmentData>(useHeader: true, seperator: ',');
var evaluator = new ClassificationEvaluator();
var metrics = evaluator.Evaluate(model, testData);
float[]
be a simplefloat
? – BannockSystem.InvalidOperationException: 'Can't bind the IDataView column 'Score' of type 'Vec<R4, 11>' to field 'Score' of type 'System.Single'.'
, which is why I changed it to an array – Winchnetcoreapp 2.1
, usingMicrosoft.ML 0.3.0
. I don't know what more to tell you, since this is a very small application. – Winch