gpt4 book ai didi

c# - 如何将带有数据的字符串 [][] 转换为 IDataView 对象? (ML.NET)

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:37 26 4
gpt4 key购买 nike

我实际上完成了 ML.NET 的所有 Microsoft 教程,现在想构建自己的模型。我想将 string[][] 数据 转换为 IDataView-Object,因为我想在 ML.NET 模型中使用它进行二进制分类。

到目前为止,我一直使用外部文本或 CSV 文件中的数据进行训练。现在我想使用存储在 string[][] data 中的数据。 data[0][] 中是文本值,data[1][] 中是boolean 值。

我无法将现有的嵌套数组转换为 IDataView 对象。我已经尝试使用以下代码:

 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: 'Splitter/consolidator worker encountered exception while consuming source data'

我希望有人能帮我解决这个问题。非常感谢!

最佳答案

它使用二维数组[,]。我用了Method from this post 锯齿状数组 [][] 转换为二维数组并稍微更改我的代码:

string[][] data_jagged = form.GetDataSelection().GetDataContainer().textCols;
string[,] data = To2D(data_jagged);

BinaryData[] inMemoryCollection = new BinaryData[data_jagged[0].Length];
for (int i = 0; i < data_jagged[0].Length; i++)
{

inMemoryCollection[i] = new BinaryData
{
Text = data[0,i],
Label = Convert.ToBoolean(Convert.ToInt64(data[1,i]))
};
}


IDataView dataView = mlContext.Data.LoadFromEnumerable<BinaryData>(inMemoryCollection);

感谢 Eric 的帮助。

关于c# - 如何将带有数据的字符串 [][] 转换为 IDataView 对象? (ML.NET),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57810354/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com