如何在 IDataView 中查看数据
How to view data inside IDataView
在ML.net
中,我想查看IDataView
中的数据来验证是否加载了正确的数据。我看不到任何 visualizer/debugging 工具来查看它们,就像我们在 System.Data.DataTable
中查看 table
var mlContext = new MLContext();
IDataView trainData = mlContext.Data.LoadFromTextFile<TaxiTrip>(GetAbsolutePath("../../taxi-fare-test.csv"), hasHeader: true);
IDataView
有一个 Preview
方法。您可以 运行 变量中的该方法并通过那里进行调试以查看数据。
var preview = trainData.Preview();
我真正想要的是查看表格格式的数据。为了实现这一点,我为下面的 IDataView
对象编写了一个扩展方法,它将数据转换为 DataTable
分机
public static class DataViewHelper
{
public static DataTable ToDataTable(this IDataView dataView)
{
DataTable dt = null;
if (dataView != null)
{
dt = new DataTable();
var preview = dataView.Preview();
dt.Columns.AddRange(preview.Schema.Select(x => new DataColumn(x.Name)).ToArray());
foreach (var row in preview.RowView)
{
var r = dt.NewRow();
foreach (var col in row.Values)
{
r[col.Key] = col.Value;
}
dt.Rows.Add(r);
}
}
return dt;
}
}
用法
var table= dataView.ToDataTable();
如果您现在调试变量 table
,您可以使用 visual studio 的内置 DataTable Visualizer 查看数据
剪断,
public static void LogDataView(IDataView dataView)
{
var preview = dataView.Preview();
foreach (var col in preview.Schema) {
if (col.Name == "Features") {
continue;
}
Console.Write(col.Name + "\t");
}
foreach (var row in preview.RowView) {
Console.WriteLine();
foreach (var col in row.Values) {
if (col.Key == "Features") {
continue;
}
Console.Write($"{col.Value}\t");
}
}
Console.WriteLine("\nCount: {0}\n", preview.RowView.Length);
}
跳过Features
因为它是矢量,不可打印
在ML.net
中,我想查看IDataView
中的数据来验证是否加载了正确的数据。我看不到任何 visualizer/debugging 工具来查看它们,就像我们在 System.Data.DataTable
中查看 table
var mlContext = new MLContext();
IDataView trainData = mlContext.Data.LoadFromTextFile<TaxiTrip>(GetAbsolutePath("../../taxi-fare-test.csv"), hasHeader: true);
IDataView
有一个 Preview
方法。您可以 运行 变量中的该方法并通过那里进行调试以查看数据。
var preview = trainData.Preview();
我真正想要的是查看表格格式的数据。为了实现这一点,我为下面的 IDataView
对象编写了一个扩展方法,它将数据转换为 DataTable
分机
public static class DataViewHelper
{
public static DataTable ToDataTable(this IDataView dataView)
{
DataTable dt = null;
if (dataView != null)
{
dt = new DataTable();
var preview = dataView.Preview();
dt.Columns.AddRange(preview.Schema.Select(x => new DataColumn(x.Name)).ToArray());
foreach (var row in preview.RowView)
{
var r = dt.NewRow();
foreach (var col in row.Values)
{
r[col.Key] = col.Value;
}
dt.Rows.Add(r);
}
}
return dt;
}
}
用法
var table= dataView.ToDataTable();
如果您现在调试变量 table
,您可以使用 visual studio 的内置 DataTable Visualizer 查看数据
剪断,
public static void LogDataView(IDataView dataView)
{
var preview = dataView.Preview();
foreach (var col in preview.Schema) {
if (col.Name == "Features") {
continue;
}
Console.Write(col.Name + "\t");
}
foreach (var row in preview.RowView) {
Console.WriteLine();
foreach (var col in row.Values) {
if (col.Key == "Features") {
continue;
}
Console.Write($"{col.Value}\t");
}
}
Console.WriteLine("\nCount: {0}\n", preview.RowView.Length);
}
跳过Features
因为它是矢量,不可打印