ML.net - 列标签中第1行的错误值

时间:2018-05-09 01:27:08

标签: c# machine-learning ml.net

我正在关注ML.Net的Iris tutorial,我输入了指令而不是复制/粘贴它们以便我可以更好地学习API,但现在我遇到了一些错误。

当我从教程中运行此行时,会抛出System.Reflection.TargetInvocationException

var model = pipeline.Train<IrisData, IrisPrediction>();

我在运行时获得的控制台错误是:

  Bad value at line 2 in column Label
  ...
  Bad value at line 8 in column Label
  Suppressing further bad value messages
  ...
Processed 150 rows with 150 bad values and 0 format errors
Warning: Term map for output column 'Label' contains no entries.
Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Using 2 threads to train.
Automatically choosing a check frequency of 2.
  Bad value at line 1 in column Label
  ...
  Suppressing further bad value messages
Processed 150 rows with 150 bad values and 0 format errors
Warning: Skipped 150 instances with missing features/label during training

这是我的IrisData课程:

namespace Ronald.A.Fisher
{
    public class IrisData
    {
        [Column("0")]
        public float SepalLength;
        [Column("1")]
        public float SepalWidth;
        [Column("2")]
        public float PetalLength;
        [Column("3")]
        public float PetalWidth;
        [Column("4")]
        [ColumnName("Label")]
        public float Label;
    }

1 个答案:

答案 0 :(得分:2)

看了一会儿后,我意识到我的一个列的数据类型不正确。

在用于加载学习数据IrisData的类中,我使用了Label的错误数据类型。因此控制台消息:Bad value at line 1 in column Label

要解决此问题,我将Label字段的数据类型从float更改为string

public class IrisData
{
    ...
    [ColumnName("Label")]
    public string Label;
}