我想要一个通用学习管道(例如,从 N 个特征预测标签),从某种意义上说,我的一个输入 CSV 将具有 5 个特征,另一个将具有 10 个特征(这些特征)两个 CSV 显然会产生不同的模型,我不想以任何方式组合它们,我只想在两个 CSV 上运行相同的程序。
但是,要加载这些功能,我需要使用
TextLoader(...).CreateFrom<ClassA>()
其中 ClassA
定义我的架构。其属性需要反射(reflect) CSV 格式,因此 CSV 必须始终具有相同的列数。
我注意到了 CustomTextLoader
但它已经过时了。有任何想法吗?谢谢。
最佳答案
查看来源:( 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.
关于c# - ML.NET - 加载可变数量的特征列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52332597/