DataOperationsCatalog.CreateEnumerable<TRow> Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Converter um IDataView em um tipo IEnumerable<T>forte.
public System.Collections.Generic.IEnumerable<TRow> CreateEnumerable<TRow> (Microsoft.ML.IDataView data, bool reuseRowObject, bool ignoreMissingColumns = false, Microsoft.ML.Data.SchemaDefinition schemaDefinition = default) where TRow : class, new();
member this.CreateEnumerable : Microsoft.ML.IDataView * bool * bool * Microsoft.ML.Data.SchemaDefinition -> seq<'Row (requires 'Row : null and 'Row : (new : unit -> 'Row))> (requires 'Row : null and 'Row : (new : unit -> 'Row))
Public Function CreateEnumerable(Of TRow As {Class, New}) (data As IDataView, reuseRowObject As Boolean, Optional ignoreMissingColumns As Boolean = false, Optional schemaDefinition As SchemaDefinition = Nothing) As IEnumerable(Of TRow)
Parâmetros de tipo
- TRow
O tipo de item definido pelo usuário.
Parâmetros
- data
- IDataView
A exibição de dados subjacente.
- reuseRowObject
- Boolean
Se deseja retornar o mesmo objeto em cada linha ou alocar um novo por linha.
- ignoreMissingColumns
- Boolean
Se deve ignorar o caso quando uma coluna solicitada não estiver presente na exibição de dados.
- schemaDefinition
- SchemaDefinition
Definição de esquema opcional fornecida pelo usuário. Se não estiver presente, o esquema será inferido da definição de T.
Retornos
O IEnumerable<T> que contém os dados em data
. Ele pode ser enumerado várias vezes.
Exemplos
using System;
using System.Collections.Generic;
using Microsoft.ML;
namespace Samples.Dynamic
{
public static class DataViewEnumerable
{
// A simple case of creating IDataView from
//IEnumerable.
public static void Example()
{
// Create a new context for ML.NET operations. It can be used for
// exception tracking and logging,
// as a catalog of available operations and as the source of randomness.
var mlContext = new MLContext();
// Get a small dataset as an IEnumerable.
IEnumerable<SampleTemperatureData> enumerableOfData =
GetSampleTemperatureData(5);
// Load dataset into an IDataView.
IDataView data = mlContext.Data.LoadFromEnumerable(enumerableOfData);
// We can now examine the records in the IDataView. We first create an
// enumerable of rows in the IDataView.
var rowEnumerable = mlContext.Data
.CreateEnumerable<SampleTemperatureData>(data,
reuseRowObject: true);
// SampleTemperatureDataWithLatitude has the definition of a Latitude
// column of type float. We can use the parameter ignoreMissingColumns
// to true to ignore any missing columns in the IDataView. The produced
// enumerable will have the Latitude field set to the default for the
// data type, in this case 0.
var rowEnumerableIgnoreMissing = mlContext.Data
.CreateEnumerable<SampleTemperatureDataWithLatitude>(data,
reuseRowObject: true, ignoreMissingColumns: true);
Console.WriteLine($"Date\tTemperature");
foreach (var row in rowEnumerable)
Console.WriteLine(
$"{row.Date.ToString("d")}\t{row.Temperature}");
// Expected output:
// Date Temperature
// 1/2/2012 36
// 1/3/2012 36
// 1/4/2012 34
// 1/5/2012 35
// 1/6/2012 35
Console.WriteLine($"Date\tTemperature\tLatitude");
foreach (var row in rowEnumerableIgnoreMissing)
Console.WriteLine($"{row.Date.ToString("d")}\t{row.Temperature}"
+ $"\t{row.Latitude}");
// Expected output:
// Date Temperature Latitude
// 1/2/2012 36 0
// 1/3/2012 36 0
// 1/4/2012 34 0
// 1/5/2012 35 0
// 1/6/2012 35 0
}
private class SampleTemperatureData
{
public DateTime Date { get; set; }
public float Temperature { get; set; }
}
private class SampleTemperatureDataWithLatitude
{
public float Latitude { get; set; }
public DateTime Date { get; set; }
public float Temperature { get; set; }
}
/// <summary>
/// Get a fake temperature dataset.
/// </summary>
/// <param name="exampleCount">The number of examples to return.</param>
/// <returns>An enumerable of <see cref="SampleTemperatureData"/>.</returns>
private static IEnumerable<SampleTemperatureData> GetSampleTemperatureData(
int exampleCount)
{
var rng = new Random(1234321);
var date = new DateTime(2012, 1, 1);
float temperature = 39.0f;
for (int i = 0; i < exampleCount; i++)
{
date = date.AddDays(1);
temperature += rng.Next(-5, 5);
yield return new SampleTemperatureData
{
Date = date,
Temperature =
temperature
};
}
}
}
}