c# - ML.NET - 加载可变数量的特征列

标签 c# machine-learning ml.net

我想要一个通用学习管道(例如,从 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/

相关文章:

python - Jupyter 错误 - 给定代码段的 'the kernel appears to have died, it will restart automatically'

c# - 获取用于 PFI 分析的 BinaryClassification FastTree FeatureNames

c# - 调用 MakePredictionFunction 时“无法确定成员特征的 IDataView 类型”

c# - ML.NET 中的延迟加载位图

c# - 在 C# 的数组列表中查找数组的索引

python - Tensorflow:恢复模型后权重似乎是随机的

c# - 如何避免装载机锁定?

python - 在 Pandas 中编码列标签以进行机器学习

c# - RichTextBox 中的居中对齐段落

c# - 我的 32 位头痛现在变成了 64 位偏头痛?!? (或 64 位 .NET CLR 运行时问题)