【问题标题】:Error when multiclass classification label is type string多类分类标签为字符串类型时出错
【发布时间】:2019-02-14 05:56:14
【问题描述】:

我刚开始使用 ML.Net,发现自己对基于各种 API 版本的 API 和示例的快速发展感到困惑。

我的目标是读取几个数字特征列和一个指定标签(“品牌”)的文本列,但我在这个 sn-p 的最后一行出现错误

var trainingDataView = mlContext.Data.ReadFromTextFile<PurchaseData>
    (path: trainDataPath, hasHeader: true, separatorChar: ',');

var dataProcessPipeline = mlContext.Transforms
    .Concatenate(DefaultColumnNames.Features,
                                nameof(PurchaseData.AgeBracket),
                                nameof(PurchaseData.Gender),
                                nameof(PurchaseData.IncomeBracket),
                                )                               
    .Append(mlContext.Transforms.CopyColumns("Label", nameof(PurchaseData.Brand)))
    .AppendCacheCheckpoint(mlContext);

var trainer = mlContext.MulticlassClassification.Trainers
    .StochasticDualCoordinateAscent(featureColumn: DefaultColumnNames.Features);
var trainingPipeline = dataProcessPipeline.Append(trainer);

var trainedModel = trainingPipeline.Fit(trainingDataView);

'标签列 'Label' 的架构不匹配:预期的浮点数、双精度或 KeyType,得到文本'

为什么标签不希望/不允许是文本,我可以做些什么来修复它?

【问题讨论】:

    标签: .net ml.net


    【解决方案1】:

    您需要将标签转换为键类型,算法需要数字作为输入。 代替: .Append(mlContext.Transforms.CopyColumns("Label", nameof(PurchaseData.Brand)))

    与:

    mlContext.Transforms.Conversion.MapValueToKey(outputColumnName: DefaultColumnNames.Label,inputColumnName:nameof(PurchaseData.Brand))

    看看这个,例如: https://github.com/dotnet/machinelearning-samples/blob/master/samples/csharp/end-to-end-apps/MulticlassClassification-GitHubLabeler/GitHubLabeler/GitHubLabelerConsoleApp/Program.cs

    【讨论】:

      猜你喜欢
      • 2013-09-22
      • 2019-02-27
      • 2019-06-15
      • 1970-01-01
      • 2017-12-28
      • 2020-10-28
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      相关资源
      最近更新 更多