【问题标题】:ML.NET Dynamic InputModelML.NET 动态输入模型
【发布时间】:2020-09-02 20:32:53
【问题描述】:

我正在使用 ML.NET 进行多类分类。我有 3 个具有不同输入模型(不同数量的列和数据类型)的用例,并且还会有更多用例,因此必须为每个新用例的每个输入模型创建一个物理文件是没有意义的。如果可能的话,我希望只有一个可以适应任何模型的物理文件,如果没有,则在运行时根据从 Sql Server DB 中的表中检索到的 json 字符串定义的列定义动态创建输入模型.这甚至可能吗?如果可以,能否分享示例代码?

这里有一些我想通用的预测代码的 sn-ps:-

    public class DynamicInputModel
    {

        [ColumnName("ColumnA"), LoadColumn(0)]
        public string ColumnA { get; set; }


        [ColumnName("ColumnB"), LoadColumn(1)]
        public string ColumnB { get; set; }


    }

    PredictionEngine<DynamicInputModel, MulticlassClassificationPrediction> predEngine = _predEnginePool.GetPredictionEngine(modelName: modelName);

    IDataView dataView = _mlContext.Data.LoadFromTextFile<DynamicInputModel>(
                        path: testDataPath,
                        hasHeader: true,
                        separatorChar: ',',
                        allowQuoting: true,
                        allowSparse: false);


    var testDataList = _mlContext.Data.CreateEnumerable<DynamicInputModel>(dataView, false).ToList();

【问题讨论】:

    标签: ml.net


    【解决方案1】:

    我认为您不能使用 DynamicInput,但是您可以从一个输入模式创建管道并根据标签/功能创建多个不同的模型。我在下面有一个示例...两个标签列,您可以传入一个包含用于模型的特征列的数组。这种方法的一个缺点是输入模式(CSV/数据库)必须是静态的(加载时不会改变):

    https://github.com/bartczernicki/MLDotNet-BaseballClassification

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      • 2022-01-13
      相关资源
      最近更新 更多