【发布时间】:2019-09-05 17:23:25
【问题描述】:
我实际上完成了所有 Microsoft ML.NET 教程,现在想构建自己的模型。我想将string[][] data 转换为IDataView-Object,因为我想在 ML.NET-Model 中使用它进行二进制分类。
到目前为止,我一直使用来自外部文本或 CSV 文件的数据进行培训。现在我想使用存储在string[][] data 中的数据。 data[0][] 中是文本值,data[1][] 中是 boolean 值。
我无法将现有的嵌套数组转换为IDataView object。我已经尝试使用以下代码:
public class BinaryData
{
public string Text { get; set; }
public bool Label { get; set; }
}
// The data is collected from an Excel-Table with some functions and saved in this nested array:
string[][] data = form.GetDataSelection().GetDataContainer().textCols;
BinaryData[] inMemoryCollection = new BinaryData[data[0].Length];
for (int i = 0; i < data[0].Length-1; i++)
{
inMemoryCollection[i] = new BinaryData
{
Text = data[0][i],
Label = Convert.ToBoolean(Convert.ToInt64(data[1][i]))
};
}
IDataView dataView = mlContext.Data.LoadFromEnumerable<BinaryData>(inMemoryCollection);
我的实现基于tutorial from Microsoft。
在我想使用 Fit()-Method 之前它一直有效。我收到以下错误消息:
System.InvalidOperationException: '拆分器/合并器工作者 使用源数据时遇到异常'
我希望有人可以在这里帮助我。非常感谢!
【问题讨论】:
-
您使用的是锯齿状数组 [][]。也许尝试一个二维数组 [,]。如果这不起作用并且您没有得到好的答案,请回复此评论,我会看看今晚是否可以挖掘。
-
嘿,埃里克,非常感谢您的帮助!它工作正常。当我正在为一个大学项目编辑 Excel-AddIn 时,我首先使用一种方法将给定的锯齿状数组转换为二维数组,然后使用 for 循环将其转换为我的 inMemoryCollection
-
您为什么不将其发布为您自己问题的答案,展示您如何进行转换?问题的未来访问者更有可能看到答案而不是评论。