我希望有一个通用的学习流程(例如,从N个特征预测一个标签),因为我的一个输入CSV文件可能有5个特征,而另一个可能有10个特征(这两个CSV文件显然会产生不同的模型,我不想以任何方式将它们合并,我只是想对这两个CSV文件运行同一个程序)。
然而,要加载这些特征,我需要使用
TextLoader(...).CreateFrom<ClassA>()
其中ClassA
定义了我的架构。它的属性需要反映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 = ... // 查看文档
tl.Arguments.Column[0].Type = ...;
// 依此类推。