DataOperationsCatalog.LoadFromEnumerable Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
LoadFromEnumerable<TRow>(IEnumerable<TRow>, SchemaDefinition) |
Создайте новый IDataView объект для перечисления элементов определяемого пользователем типа.
Пользователь сохраняет право владения и Одним из типичных способов использования представления потоковых данных может быть создание представления данных, которое лениво загружает данные по мере необходимости, а затем применяет к нему предварительно обученные преобразования и курсор через него для результатов преобразования. |
LoadFromEnumerable<TRow>(IEnumerable<TRow>, DataViewSchema) |
Создайте новый IDataView объект для перечисления элементов определяемого пользователем типа с помощью предоставленного DataViewSchemaтипа, который может содержать больше сведений о схеме, чем тип может захватывать. |
LoadFromEnumerable<TRow>(IEnumerable<TRow>, SchemaDefinition)
Создайте новый IDataView объект для перечисления элементов определяемого пользователем типа.
Пользователь сохраняет право владения и data
результирующее представление данных никогда не изменяет содержимое .data
Так как IDataView предполагается, что неизменяемый пользователь будет поддерживать несколько перечислений data
, возвращающих одинаковые результаты, если пользователь не знает, что данные будут курсорироваться только один раз.
Одним из типичных способов использования представления потоковых данных может быть создание представления данных, которое лениво загружает данные по мере необходимости, а затем применяет к нему предварительно обученные преобразования и курсор через него для результатов преобразования.
public Microsoft.ML.IDataView LoadFromEnumerable<TRow> (System.Collections.Generic.IEnumerable<TRow> data, Microsoft.ML.Data.SchemaDefinition schemaDefinition = default) where TRow : class;
member this.LoadFromEnumerable : seq<'Row (requires 'Row : null)> * Microsoft.ML.Data.SchemaDefinition -> Microsoft.ML.IDataView (requires 'Row : null)
Public Function LoadFromEnumerable(Of TRow As Class) (data As IEnumerable(Of TRow), Optional schemaDefinition As SchemaDefinition = Nothing) As IDataView
Параметры типа
- TRow
Определяемый пользователем тип элемента.
Параметры
- data
- IEnumerable<TRow>
Перечисляемые данные, содержащие тип TRow
для преобразования в .IDataView
- schemaDefinition
- SchemaDefinition
Необязательное определение схемы создаваемого представления данных. Если null
определение схемы выводится из TRow
.
Возвращаемое значение
Сконструированный IDataView.
Примеры
using System;
using System.Collections.Generic;
using Microsoft.ML;
using Microsoft.ML.Data;
namespace Samples.Dynamic
{
public static class LoadFromEnumerable
{
// Creating IDataView from IEnumerable, and setting the size of the vector
// at runtime. When the data model is defined through types, setting the
// size of the vector is done through the VectorType annotation. When the
// size of the data is not known at compile time, the Schema can be directly
// modified at runtime and the size of the vector set there. This is
// important, because most of the ML.NET trainers require the Features
// vector to be of known size.
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<DataPointVector> enumerableKnownSize = new DataPointVector[]
{
new DataPointVector{ Features = new float[]{ 1.2f, 3.4f, 4.5f, 3.2f,
7,5f } },
new DataPointVector{ Features = new float[]{ 4.2f, 3.4f, 14.65f,
3.2f, 3,5f } },
new DataPointVector{ Features = new float[]{ 1.6f, 3.5f, 4.5f, 6.2f,
3,5f } },
};
// Load dataset into an IDataView.
IDataView data = mlContext.Data.LoadFromEnumerable(enumerableKnownSize);
var featureColumn = data.Schema["Features"].Type as VectorDataViewType;
// Inspecting the schema
Console.WriteLine($"Is the size of the Features column known: " +
$"{featureColumn.IsKnownSize}.\nSize: {featureColumn.Size}");
// Preview
//
// Is the size of the Features column known? True.
// Size: 5.
// If the size of the vector is unknown at compile time, it can be set
// at runtime.
IEnumerable<DataPoint> enumerableUnknownSize = new DataPoint[]
{
new DataPoint{ Features = new float[]{ 1.2f, 3.4f, 4.5f } },
new DataPoint{ Features = new float[]{ 4.2f, 3.4f, 1.6f } },
new DataPoint{ Features = new float[]{ 1.6f, 3.5f, 4.5f } },
};
// The feature dimension (typically this will be the Count of the array
// of the features vector known at runtime).
int featureDimension = 3;
var definedSchema = SchemaDefinition.Create(typeof(DataPoint));
featureColumn = definedSchema["Features"]
.ColumnType as VectorDataViewType;
Console.WriteLine($"Is the size of the Features column known: " +
$"{featureColumn.IsKnownSize}.\nSize: {featureColumn.Size}");
// Preview
//
// Is the size of the Features column known? False.
// Size: 0.
// Set the column type to be a known-size vector.
var vectorItemType = ((VectorDataViewType)definedSchema[0].ColumnType)
.ItemType;
definedSchema[0].ColumnType = new VectorDataViewType(vectorItemType,
featureDimension);
// Read the data into an IDataView with the modified schema supplied in
IDataView data2 = mlContext.Data
.LoadFromEnumerable(enumerableUnknownSize, definedSchema);
featureColumn = data2.Schema["Features"].Type as VectorDataViewType;
// Inspecting the schema
Console.WriteLine($"Is the size of the Features column known: " +
$"{featureColumn.IsKnownSize}.\nSize: {featureColumn.Size}");
// Preview
//
// Is the size of the Features column known? True.
// Size: 3.
}
}
public class DataPoint
{
public float[] Features { get; set; }
}
public class DataPointVector
{
[VectorType(5)]
public float[] Features { get; set; }
}
}
Применяется к
LoadFromEnumerable<TRow>(IEnumerable<TRow>, DataViewSchema)
Создайте новый IDataView объект для перечисления элементов определяемого пользователем типа с помощью предоставленного DataViewSchemaтипа, который может содержать больше сведений о схеме, чем тип может захватывать.
public Microsoft.ML.IDataView LoadFromEnumerable<TRow> (System.Collections.Generic.IEnumerable<TRow> data, Microsoft.ML.DataViewSchema schema) where TRow : class;
member this.LoadFromEnumerable : seq<'Row (requires 'Row : null)> * Microsoft.ML.DataViewSchema -> Microsoft.ML.IDataView (requires 'Row : null)
Public Function LoadFromEnumerable(Of TRow As Class) (data As IEnumerable(Of TRow), schema As DataViewSchema) As IDataView
Параметры типа
- TRow
Определяемый пользователем тип элемента.
Параметры
- data
- IEnumerable<TRow>
Перечисляемые данные, содержащие тип TRow
для преобразования в .IDataView
- schema
- DataViewSchema
Схема возвращаемого объекта IDataView.
Возвращаемое значение
С IDataView заданным schema
.
Комментарии
Пользователь сохраняет право владения и data
результирующее представление данных никогда не изменяет содержимое .data
Так как IDataView предполагается, что неизменяемый пользователь будет поддерживать несколько перечислений data
, возвращающих одинаковые результаты, если пользователь не знает, что данные будут курсорироваться только один раз. Одним из типичных способов использования представления потоковых данных может быть создание представления данных, которое лениво загружает данные по мере необходимости, а затем применяет к нему предварительно обученные преобразования и курсор через него для результатов преобразования. Одним из практических способов этого было бы указание имен столбцов признаков с помощью DataViewSchema.Annotations.