DataOperationsCatalog.CreateEnumerable<TRow> Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Převeďte ho IDataView na silné typy IEnumerable<T>.
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)
Parametry typu
- TRow
Typ položky definované uživatelem.
Parametry
- data
- IDataView
Zobrazení podkladových dat.
- reuseRowObject
- Boolean
Ať už chcete vrátit stejný objekt na každém řádku, nebo přidělit nový objekt na řádek.
- ignoreMissingColumns
- Boolean
Jestli se má případ ignorovat, pokud požadovaný sloupec v zobrazení dat neexistuje.
- schemaDefinition
- SchemaDefinition
Volitelná definice schématu poskytovaná uživatelem Pokud není k dispozici, schéma se odvodí z definice T.
Návraty
To IEnumerable<T> , které obsahuje data v data
. Je možné ji vyčíst vícekrát.
Příklady
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
};
}
}
}
}