我想要一个一般学习管道(例如,从N个特征预测标签),因为我输入的CSV中有一个具有5个特征,而另一个CSV具有10个特征(那些两个CSV显然会产生不同的模型,我不想以任何方式组合它们,我只想在两个CSV上运行相同的程序。
但是,要加载功能,我需要使用
TextLoader(...).CreateFrom<ClassA>()
其中ClassA
定义了我的架构。其属性需要反映CSV格式,因此CSV必须始终具有相同的列数。
我注意到CustomTextLoader
,但是它已经过时了。有任何想法吗?谢谢。
答案 0 :(得分:1)
查看源代码:(https://github.com/dotnet/machinelearning/blob/master/src/Microsoft.ML/Data/TextLoader.cs)
CreateFrom看起来无非是一个填充Arguments.Columns和Arguments的帮助器方法,这两个方法都是可公开访问的。这意味着您可以编写自己的实现。
TextLoader tl = new TextLoader(inputFileName)
tl.Arguments.HasHeader = useHeader;
tl.Arguments.Separator = new[] { separator };
tl.Arguments.AllowQuoting = allowQuotedStrings;
tl.Arguments.AllowSparse = supportSparse;
tl.Arguments.TrimWhitespace = trimWhitespace;
现在是重要的部分,您需要为TextLoader.Arguments.Columns填充数据集中每个列的条目。如果您提前知道将有5或10列是最简单的列,但是否则,我会查看CSV找出答案。
tl.Arguments.Column = new TextLoaderColumns[numColumns];
tl.Arguments.Column[0].Name = ...
tl.Arguments.Column[0].Source = ... // see the docs
tl.Arguments.Column[0].Type = ...
// and so on.
答案 1 :(得分:1)
外套-谢谢您的回答。我可以看到如何将数据加载到TextLoader中。但是,您将如何训练模型?因为管道Train()方法还要求您传入定义数据模式的对象:
PredictionModel<ClassA, ClassAPrediction> model = pipeline.Train<ClassA, ClassAPrediction>();