TextLoaderSaverCatalog.CreateTextLoader Método

Definición

Sobrecargas

CreateTextLoader(DataOperationsCatalog, TextLoader+Options, IMultiStreamSource)

Cree un cargador TextLoaderde texto .

CreateTextLoader(DataOperationsCatalog, TextLoader+Column[], Char, Boolean, IMultiStreamSource, Boolean, Boolean, Boolean)

Cree un cargador TextLoaderde texto .

CreateTextLoader<TInput>(DataOperationsCatalog, TextLoader+Options, IMultiStreamSource)

Cree un cargador TextLoader de texto inferenciando el esquema del conjunto de datos a partir de un tipo de modelo de datos.

CreateTextLoader<TInput>(DataOperationsCatalog, Char, Boolean, IMultiStreamSource, Boolean, Boolean, Boolean)

Cree un cargador TextLoader de texto inferenciando el esquema del conjunto de datos a partir de un tipo de modelo de datos.

CreateTextLoader(DataOperationsCatalog, TextLoader+Options, IMultiStreamSource)

Cree un cargador TextLoaderde texto .

public static Microsoft.ML.Data.TextLoader CreateTextLoader (this Microsoft.ML.DataOperationsCatalog catalog, Microsoft.ML.Data.TextLoader.Options options, Microsoft.ML.Data.IMultiStreamSource dataSample = default);
static member CreateTextLoader : Microsoft.ML.DataOperationsCatalog * Microsoft.ML.Data.TextLoader.Options * Microsoft.ML.Data.IMultiStreamSource -> Microsoft.ML.Data.TextLoader
<Extension()>
Public Function CreateTextLoader (catalog As DataOperationsCatalog, options As TextLoader.Options, Optional dataSample As IMultiStreamSource = Nothing) As TextLoader

Parámetros

options
TextLoader.Options

Define la configuración de la operación de carga.

dataSample
IMultiStreamSource

Ubicación opcional de un ejemplo de datos. El ejemplo se puede usar para deducir las anotaciones de nombre de ranura si están presentes y también el número de ranuras Columns definidas con TextLoader.Range el null índice máximo. Si el ejemplo se ha guardado con ML.NET SaveAsText(DataOperationsCatalog, IDataView, Stream, Char, Boolean, Boolean, Boolean, Boolean), también contendrá la información de esquema en el encabezado que el cargador puede leer incluso si Columns no se especifican. Para usar el esquema definido en el archivo, el resto TextLoader.Options del alma se dejan con sus valores predeterminados.

Devoluciones

Se aplica a

CreateTextLoader(DataOperationsCatalog, TextLoader+Column[], Char, Boolean, IMultiStreamSource, Boolean, Boolean, Boolean)

Cree un cargador TextLoaderde texto .

public static Microsoft.ML.Data.TextLoader CreateTextLoader (this Microsoft.ML.DataOperationsCatalog catalog, Microsoft.ML.Data.TextLoader.Column[] columns, char separatorChar = '\t', bool hasHeader = false, Microsoft.ML.Data.IMultiStreamSource dataSample = default, bool allowQuoting = false, bool trimWhitespace = false, bool allowSparse = false);
static member CreateTextLoader : Microsoft.ML.DataOperationsCatalog * Microsoft.ML.Data.TextLoader.Column[] * char * bool * Microsoft.ML.Data.IMultiStreamSource * bool * bool * bool -> Microsoft.ML.Data.TextLoader
<Extension()>
Public Function CreateTextLoader (catalog As DataOperationsCatalog, columns As TextLoader.Column(), Optional separatorChar As Char = '\t', Optional hasHeader As Boolean = false, Optional dataSample As IMultiStreamSource = Nothing, Optional allowQuoting As Boolean = false, Optional trimWhitespace As Boolean = false, Optional allowSparse As Boolean = false) As TextLoader

Parámetros

columns
TextLoader.Column[]

Matriz de columnas TextLoader.Column que definen el esquema.

separatorChar
Char

Carácter utilizado como separador entre puntos de datos de una fila. De forma predeterminada, el carácter de tabulación se usa como separador.

hasHeader
Boolean

Si el archivo tiene un encabezado con nombres de características. Cuando se proporciona , true indica que la primera línea de se usará para los nombres de características y que, cuando Load(IMultiStreamSource) se llama a , se omitirá la primera línea. Cuando no se proporcionatrue, simplemente indica que el cargador debe omitir la primera línea cuando Load(IMultiStreamSource) se llama a , pero las columnas no tendrán anotaciones de nombres de ranura. Esto se debe a que el esquema de salida se realiza cuando se crea el cargador y no cuando Load(IMultiStreamSource) se llama a .

dataSample
IMultiStreamSource

Ubicación opcional de un ejemplo de datos. El ejemplo se puede usar para deducir las anotaciones de nombre de ranura si están presentes y también el número de ranuras de una columna definida con TextLoader.Range el null índice máximo. Si el ejemplo se ha guardado con ML.NET SaveAsText(DataOperationsCatalog, IDataView, Stream, Char, Boolean, Boolean, Boolean, Boolean), también contendrá la información de esquema en el encabezado que el cargador puede leer incluso si columns es null. Para usar el esquema definido en el archivo, todos los demás argumentos se dejan con sus valores predeterminados.

allowQuoting
Boolean

Si la entrada puede incluir valores entre comillas dobles. Este parámetro se usa para distinguir caracteres separadores en un valor de entrada de separadores reales. Cuando true, los separadores entre comillas dobles se tratan como parte del valor de entrada. Cuando false, todos los separadores, incluso aquellos entre comillas, se tratan como delimitadores de una nueva columna.

trimWhitespace
Boolean

Quite el espacio en blanco final de las líneas.

allowSparse
Boolean

Si la entrada puede incluir representaciones dispersas. Por ejemplo, una fila que contiene "5 2:6 4:3" significa que hay 5 columnas y que el único distinto de cero son las columnas 2 y 4, que tienen valores 6 y 3, respectivamente. Los índices de columna son de base cero, por lo que las columnas 2 y 4 representan las columnas 3 y 5. Una columna también puede tener valores densos seguidos de valores dispersos representados de esta manera. Por ejemplo, una fila que contiene "1 2 5 2:6 4:3" representa dos columnas densas con valores 1 y 2, seguidas de 5 columnas representadas dispersamente con valores 0, 0, 6, 0 y 3. Los índices de las columnas dispersas comienzan desde 0, aunque 0 representa la tercera columna.

Devoluciones

Ejemplos

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using Microsoft.ML;
using Microsoft.ML.Data;

namespace Samples.Dynamic.DataOperations
{
    public static class LoadingText
    {
        // This examples shows all the ways to load data with TextLoader.
        public static void Example()
        {
            // Create 5 data files to illustrate different loading methods.
            var dataFiles = new List<string>();
            var random = new Random(1);
            var dataDirectoryName = "DataDir";
            Directory.CreateDirectory(dataDirectoryName);
            for (int i = 0; i < 5; i++)
            {
                var fileName = Path.Combine(dataDirectoryName, $"Data_{i}.csv");
                dataFiles.Add(fileName);
                using (var fs = File.CreateText(fileName))
                {
                    // Write without header with 10 random columns, forcing
                    // approximately 80% of values to be 0.
                    for (int line = 0; line < 10; line++)
                    {
                        var sb = new StringBuilder();
                        for (int pos = 0; pos < 10; pos++)
                        {
                            var value = random.NextDouble();
                            sb.Append((value < 0.8 ? 0 : value).ToString() + '\t');
                        }
                        fs.WriteLine(sb.ToString(0, sb.Length - 1));
                    }
                }
            }

            // Create a TextLoader.
            var mlContext = new MLContext();
            var loader = mlContext.Data.CreateTextLoader(
                columns: new[]
                {
                    new TextLoader.Column("Features", DataKind.Single, 0, 9)
                },
                hasHeader: false
            );

            // Load a single file from path.
            var singleFileData = loader.Load(dataFiles[0]);
            PrintRowCount(singleFileData);

            // Expected Output:
            //   10


            // Load all 5 files from path.
            var multipleFilesData = loader.Load(dataFiles.ToArray());
            PrintRowCount(multipleFilesData);

            // Expected Output:
            //   50


            // Load all files using path wildcard.
            var multipleFilesWildcardData =
                loader.Load(Path.Combine(dataDirectoryName, "Data_*.csv"));
            PrintRowCount(multipleFilesWildcardData);

            // Expected Output:
            //   50


            // Create a TextLoader with user defined type.
            var loaderWithCustomType =
                mlContext.Data.CreateTextLoader<Data>(hasHeader: false);

            // Load a single file from path.
            var singleFileCustomTypeData = loaderWithCustomType.Load(dataFiles[0]);
            PrintRowCount(singleFileCustomTypeData);

            // Expected Output:
            //   10


            // Create a TextLoader with unknown column length to illustrate
            // how a data sample may be used to infer column size.
            var dataSample = new MultiFileSource(dataFiles[0]);
            var loaderWithUnknownLength = mlContext.Data.CreateTextLoader(
                columns: new[]
                {
                    new TextLoader.Column("Features",
                                          DataKind.Single,
                                          new[] { new TextLoader.Range(0, null) })
                },
                dataSample: dataSample
            );

            var dataWithInferredLength = loaderWithUnknownLength.Load(dataFiles[0]);
            var featuresColumn = dataWithInferredLength.Schema.GetColumnOrNull("Features");
            if (featuresColumn.HasValue)
                Console.WriteLine(featuresColumn.Value.ToString());

            // Expected Output:
            //   Features: Vector<Single, 10>
            //
            // ML.NET infers the correct length of 10 for the Features column,
            // which is of type Vector<Single>.

            PrintRowCount(dataWithInferredLength);

            // Expected Output:
            //   10


            // Save the data with 10 rows to a text file to illustrate the use of
            // sparse format.
            var sparseDataFileName = Path.Combine(dataDirectoryName, "saved_data.tsv");
            using (FileStream stream = new FileStream(sparseDataFileName, FileMode.Create))
                mlContext.Data.SaveAsText(singleFileData, stream);

            // Since there are many zeroes in the data, it will be saved in a sparse
            // representation to save disk space. The data may be forced to be saved
            // in a dense representation by setting forceDense to true. The sparse
            // data will look like the following:
            //
            //   10 7:0.943862259
            //   10 3:0.989767134
            //   10 0:0.949778438   8:0.823028445   9:0.886469543
            //
            // The sparse representation of the first row indicates that there are
            // 10 columns, the column 7 (8-th column) has value 0.943862259, and other
            // omitted columns have value 0.

            // Create a TextLoader that allows sparse input.
            var sparseLoader = mlContext.Data.CreateTextLoader(
                columns: new[]
                {
                    new TextLoader.Column("Features", DataKind.Single, 0, 9)
                },
                allowSparse: true
            );

            // Load the saved sparse data.
            var sparseData = sparseLoader.Load(sparseDataFileName);
            PrintRowCount(sparseData);

            // Expected Output:
            //   10


            // Create a TextLoader without any column schema using TextLoader.Options.
            // Since the sparse data file was saved with ML.NET, it has the schema
            // enoded in its header that the loader can understand:
            //
            // #@ TextLoader{
            // #@   sep=tab
            // #@   col=Features:R4:0-9
            // #@ }
            //
            // The schema syntax is unimportant since it is only used internally. In
            // short, it tells the loader that the values are separated by tabs, and
            // that columns 0-9 in the text file are to be read into one column named
            // "Features" of type Single (internal type R4).

            var options = new TextLoader.Options()
            {
                AllowSparse = true,
            };
            var dataSampleWithSchema = new MultiFileSource(sparseDataFileName);
            var sparseLoaderWithSchema =
                mlContext.Data.CreateTextLoader(options, dataSample: dataSampleWithSchema);

            // Load the saved sparse data.
            var sparseDataWithSchema = sparseLoaderWithSchema.Load(sparseDataFileName);
            PrintRowCount(sparseDataWithSchema);

            // Expected Output:
            //   10
        }

        private static void PrintRowCount(IDataView idv)
        {
            // IDataView is lazy so we need to iterate through it
            // to get the number of rows.
            long rowCount = 0;
            using (var cursor = idv.GetRowCursor(idv.Schema))
                while (cursor.MoveNext())
                    rowCount++;

            Console.WriteLine(rowCount);
        }

        private class Data
        {
            [LoadColumn(0, 9)]
            public float[] Features { get; set; }
        }
    }
}

Se aplica a

CreateTextLoader<TInput>(DataOperationsCatalog, TextLoader+Options, IMultiStreamSource)

Cree un cargador TextLoader de texto inferenciando el esquema del conjunto de datos a partir de un tipo de modelo de datos.

public static Microsoft.ML.Data.TextLoader CreateTextLoader<TInput> (this Microsoft.ML.DataOperationsCatalog catalog, Microsoft.ML.Data.TextLoader.Options options, Microsoft.ML.Data.IMultiStreamSource dataSample = default);
static member CreateTextLoader : Microsoft.ML.DataOperationsCatalog * Microsoft.ML.Data.TextLoader.Options * Microsoft.ML.Data.IMultiStreamSource -> Microsoft.ML.Data.TextLoader
<Extension()>
Public Function CreateTextLoader(Of TInput) (catalog As DataOperationsCatalog, options As TextLoader.Options, Optional dataSample As IMultiStreamSource = Nothing) As TextLoader

Parámetros de tipo

TInput

Parámetros

options
TextLoader.Options

Define la configuración de la operación de carga. Define la configuración de la operación de carga. No es necesario especificar un campo Columnas, ya que este método deducirá las columnas.

dataSample
IMultiStreamSource

Ubicación opcional de un ejemplo de datos. El ejemplo se puede usar para deducir información sobre las columnas, como los nombres de ranura.

Devoluciones

Se aplica a

CreateTextLoader<TInput>(DataOperationsCatalog, Char, Boolean, IMultiStreamSource, Boolean, Boolean, Boolean)

Cree un cargador TextLoader de texto inferenciando el esquema del conjunto de datos a partir de un tipo de modelo de datos.

public static Microsoft.ML.Data.TextLoader CreateTextLoader<TInput> (this Microsoft.ML.DataOperationsCatalog catalog, char separatorChar = '\t', bool hasHeader = false, Microsoft.ML.Data.IMultiStreamSource dataSample = default, bool allowQuoting = false, bool trimWhitespace = false, bool allowSparse = false);
static member CreateTextLoader : Microsoft.ML.DataOperationsCatalog * char * bool * Microsoft.ML.Data.IMultiStreamSource * bool * bool * bool -> Microsoft.ML.Data.TextLoader
<Extension()>
Public Function CreateTextLoader(Of TInput) (catalog As DataOperationsCatalog, Optional separatorChar As Char = '\t', Optional hasHeader As Boolean = false, Optional dataSample As IMultiStreamSource = Nothing, Optional allowQuoting As Boolean = false, Optional trimWhitespace As Boolean = false, Optional allowSparse As Boolean = false) As TextLoader

Parámetros de tipo

TInput

Define el esquema de los datos que se van a cargar. Use campos públicos o propiedades decorados con LoadColumnAttribute (y posiblemente otros atributos) para especificar los nombres de columna y sus tipos de datos en el esquema de los datos cargados.

Parámetros

separatorChar
Char

Carácter separador de columna. El valor predeterminado es '\t'

hasHeader
Boolean

Si el archivo tiene un encabezado con nombres de características. Cuando se proporciona , true indica que la primera línea de se usará para los nombres de características y que, cuando Load(IMultiStreamSource) se llama a , se omitirá la primera línea. Cuando no se proporcionatrue, simplemente indica que el cargador debe omitir la primera línea cuando Load(IMultiStreamSource) se llama a , pero las columnas no tendrán anotaciones de nombres de ranura. Esto se debe a que el esquema de salida se realiza cuando se crea el cargador y no cuando Load(IMultiStreamSource) se llama a .

dataSample
IMultiStreamSource

Ubicación opcional de un ejemplo de datos. El ejemplo se puede usar para deducir anotaciones de nombre de ranura si están presentes.

allowQuoting
Boolean

Si la entrada puede incluir valores entre comillas dobles. Este parámetro se usa para distinguir caracteres separadores en un valor de entrada de separadores reales. Cuando true, los separadores entre comillas dobles se tratan como parte del valor de entrada. Cuando false, todos los separadores, incluso las comillas whitin, se tratan como delimitadores de una nueva columna.

trimWhitespace
Boolean

Quite el espacio en blanco final de las líneas.

allowSparse
Boolean

Si la entrada puede incluir representaciones dispersas. Por ejemplo, una fila que contiene "5 2:6 4:3" significa que hay 5 columnas y que el único distinto de cero son las columnas 2 y 4, que tienen valores 6 y 3, respectivamente. Los índices de columna son de base cero, por lo que las columnas 2 y 4 representan las columnas 3 y 5. Una columna también puede tener valores densos seguidos de valores dispersos representados de esta manera. Por ejemplo, una fila que contiene "1 2 5 2:6 4:3" representa dos columnas densas con valores 1 y 2, seguidas de 5 columnas representadas dispersamente con valores 0, 0, 6, 0 y 3. Los índices de las columnas dispersas comienzan desde 0, aunque 0 representa la tercera columna.

Devoluciones

Se aplica a