我正在使用ML.NET进行多类分类。我有3个不同输入模型的用例(不同的列数和数据类型),而且还会有更多的用例,所以没有必要为每个新用例的每个输入模型创建一个物理文件。我希望最好只有一个物理文件,如果可能,它可以适应任何模型,如果不能,则在运行时根据从Sql Server DB中的表检索到的json字符串定义的列定义动态创建输入模型。这有可能吗?如果是这样的话,你能分享示例代码吗?
以下是我想要通用的预测代码的一些片段:
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();发布于 2020-06-10 04:13:44
我不认为你可以做DynamicInput,但是你可以从一个输入模式创建管道,然后基于标签/特征创建多个不同的模型。我在下面有一个示例,它包含that...two标签列,您可以传入一个数组,其中包含要用于模型的特征列。这种方法的一个缺点是输入模式(CSV/Database)必须是静态的(不能在加载时更改):
https://github.com/bartczernicki/MLDotNet-BaseballClassification
https://stackoverflow.com/questions/61845954
复制相似问题