ML.NET – 加载可变数量的特征列

我希望有一个通用的学习流程(例如,从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 = ...;
// 依此类推。

Related Posts

为什么我们在K-means聚类方法中使用kmeans.fit函数?

我在一个视频中使用K-means聚类技术,但我不明白为…

如何获取Keras中ImageDataGenerator的.flow_from_directory函数扫描的类名?

我想制作一个用户友好的GUI图像分类器,用户只需指向数…

如何查看每个词的tf-idf得分

我试图了解文档中每个词的tf-idf得分。然而,它只返…

如何修复 ‘ValueError: Found input variables with inconsistent numbers of samples: [32979, 21602]’?

我在制作一个用于情感分析的逻辑回归模型时遇到了这个问题…

如何向神经网络输入两个不同大小的输入?

我想向神经网络输入两个数据集。第一个数据集(元素)具有…

逻辑回归与机器学习有何关联

我们正在开会讨论聘请一位我们信任的顾问来做机器学习。一…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注