Поделиться через


TextLoaderSaverCatalog.CreateTextLoader Метод

Определение

Перегрузки

CreateTextLoader(DataOperationsCatalog, TextLoader+Options, IMultiStreamSource)

Создайте текстовый загрузчик TextLoader.

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

Создайте текстовый загрузчик TextLoader.

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

Создайте загрузчик TextLoader текста, выведите схему набора данных из типа модели данных.

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

Создайте загрузчик TextLoader текста, выведите схему набора данных из типа модели данных.

CreateTextLoader(DataOperationsCatalog, TextLoader+Options, IMultiStreamSource)

Создайте текстовый загрузчик TextLoader.

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

Параметры

catalog
DataOperationsCatalog

Каталог DataOperationsCatalog .

options
TextLoader.Options

Определяет параметры операции загрузки.

dataSample
IMultiStreamSource

Необязательное расположение образца данных. Пример можно использовать для вывода заметок к имени слота, если они есть, а также количества слотов в Columns , определенных с TextLoader.Range максимальным null индексом. Если пример был сохранен с помощью ML.NET SaveAsText(DataOperationsCatalog, IDataView, Stream, Char, Boolean, Boolean, Boolean, Boolean), он также будет содержать сведения о схеме в заголовке, которые загрузчик может считывать, даже если Columns они не указаны. Чтобы использовать схему, определенную в файле, все остальные TextLoader.Options sould должны иметь значения по умолчанию.

Возвращаемое значение

Применяется к

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

Создайте текстовый загрузчик TextLoader.

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

Параметры

catalog
DataOperationsCatalog

Каталог DataOperationsCatalog .

columns
TextLoader.Column[]

Массив столбцов TextLoader.Column , определяющих схему.

separatorChar
Char

Символ, используемый в качестве разделителя между точками данных в строке. По умолчанию символ табуляции используется в качестве разделителя.

hasHeader
Boolean

Указывает, имеет ли файл заголовок с именами компонентов. При указании указывает, true что первая строка в будет использоваться для имен компонентов и что при Load(IMultiStreamSource) вызове первая строка будет пропущена. Если не указано, просто указывает, true что загрузчик должен пропустить первую строку при Load(IMultiStreamSource) вызове , но столбцы не будут иметь заметок к именам слотов. Это связано с тем, что выходная схема создается при создании загрузчика, а не при Load(IMultiStreamSource) вызове.

dataSample
IMultiStreamSource

Необязательное расположение образца данных. Пример можно использовать для вывода заметок к имени слота, если они есть, а также количества слотов в столбце, определяемом с максимальным TextLoader.Rangenull индексом. Если пример был сохранен с помощью ML.NET SaveAsText(DataOperationsCatalog, IDataView, Stream, Char, Boolean, Boolean, Boolean, Boolean), он также будет содержать сведения о схеме в заголовке, который загрузчик может считывать, даже если columns имеет значение null. Чтобы использовать схему, определенную в файле, все остальные аргументы должны быть оставлены со значениями по умолчанию.

allowQuoting
Boolean

Указывает, могут ли входные данные содержать значения, заключенные в двойные кавычки. Этот параметр используется для различения символов-разделителей во входном значении от фактических разделителей. При trueзначении разделители в двойных кавычках обрабатываются как часть входного значения. При falseзначении все разделители, даже находящиеся в кавычках, рассматриваются как разделители нового столбца.

trimWhitespace
Boolean

Удалите конечные пробелы из строк.

allowSparse
Boolean

Указывает, могут ли входные данные включать разреженные представления. Например, строка, содержащая "5 2:6 4:3", означает, что имеется 5 столбцов, а единственными ненулевыми являются столбцы 2 и 4 со значениями 6 и 3 соответственно. Индексы столбцов отсчитываются от нуля, поэтому столбцы 2 и 4 представляют собой 3-й и 5-й столбцы. Столбец также может содержать плотные значения, за которыми следуют разреженные значения, представленные таким образом. Например, строка, содержащая "1 2 5 2:6 4:3", представляет два плотных столбца со значениями 1 и 2, за которыми следуют 5 редко представленных столбцов со значениями 0, 0, 6, 0 и 3. Индексы разреженных столбцов начинаются с 0, хотя 0 представляет третий столбец.

Возвращаемое значение

Примеры

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; }
        }
    }
}

Применяется к

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

Создайте загрузчик TextLoader текста, выведите схему набора данных из типа модели данных.

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

Параметры типа

TInput

Параметры

catalog
DataOperationsCatalog

Каталог DataOperationsCatalog .

options
TextLoader.Options

Определяет параметры операции загрузки. Определяет параметры операции загрузки. Не нужно указывать поле Столбцы, так как столбцы будут выведены этим методом.

dataSample
IMultiStreamSource

Необязательное расположение образца данных. Пример можно использовать для вывода сведений о столбцах, таких как имена слотов.

Возвращаемое значение

Применяется к

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

Создайте загрузчик TextLoader текста, выведите схему набора данных из типа модели данных.

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

Параметры типа

TInput

Определяет схему загружаемых данных. Используйте открытые поля или свойства, LoadColumnAttribute дополненные (и, возможно, другими атрибутами), чтобы указать имена столбцов и их типы данных в схеме загруженных данных.

Параметры

catalog
DataOperationsCatalog

Каталог DataOperationsCatalog .

separatorChar
Char

Знак разделителя столбцов. Значение по умолчанию — \t.

hasHeader
Boolean

Указывает, имеет ли файл заголовок с именами компонентов. При указании указывает, true что первая строка в будет использоваться для имен компонентов и что при Load(IMultiStreamSource) вызове первая строка будет пропущена. Если не указано, просто указывает, true что загрузчик должен пропустить первую строку при Load(IMultiStreamSource) вызове , но столбцы не будут иметь заметок к именам слотов. Это связано с тем, что выходная схема создается при создании загрузчика, а не при Load(IMultiStreamSource) вызове.

dataSample
IMultiStreamSource

Необязательное расположение образца данных. Пример можно использовать для вывода заметок к имени слота, если они есть.

allowQuoting
Boolean

Указывает, могут ли входные данные содержать значения, заключенные в двойные кавычки. Этот параметр используется для различения символов-разделителей во входном значении от фактических разделителей. При trueзначении разделители в двойных кавычках обрабатываются как часть входного значения. При falseзначении все разделители, даже эти кавычки, рассматриваются как разделяющие новый столбец.

trimWhitespace
Boolean

Удалите конечные пробелы из строк.

allowSparse
Boolean

Указывает, могут ли входные данные включать разреженные представления. Например, строка, содержащая "5 2:6 4:3", означает, что имеется 5 столбцов, а единственными ненулевыми являются столбцы 2 и 4 со значениями 6 и 3 соответственно. Индексы столбцов отсчитываются от нуля, поэтому столбцы 2 и 4 представляют собой 3-й и 5-й столбцы. Столбец также может содержать плотные значения, за которыми следуют разреженные значения, представленные таким образом. Например, строка, содержащая "1 2 5 2:6 4:3", представляет два плотных столбца со значениями 1 и 2, за которыми следуют 5 редко представленных столбцов со значениями 0, 0, 6, 0 и 3. Индексы разреженных столбцов начинаются с 0, хотя 0 представляет третий столбец.

Возвращаемое значение

Применяется к