TextLoaderSaverCatalog.CreateTextLoader Metoda

Definice

Přetížení

CreateTextLoader(DataOperationsCatalog, TextLoader+Options, IMultiStreamSource)

Vytvořte zavaděč TextLoadertextu .

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

Vytvořte zavaděč TextLoadertextu .

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

Vytvořte zavaděč TextLoader textu odvozováním schématu datové sady z typu datového modelu.

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

Vytvořte zavaděč TextLoader textu odvozováním schématu datové sady z typu datového modelu.

CreateTextLoader(DataOperationsCatalog, TextLoader+Options, IMultiStreamSource)

Vytvořte zavaděč TextLoadertextu .

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

Parametry

options
TextLoader.Options

Definuje nastavení operace načítání.

dataSample
IMultiStreamSource

Volitelné umístění ukázky dat Ukázku lze použít k odvozování poznámek k názvům slotů, pokud jsou k dispozici, a také počtu slotů definovaných Columns s maximálním indexem TextLoader.Rangenull . Pokud byla ukázka uložena s ml.NET SaveAsText(DataOperationsCatalog, IDataView, Stream, Char, Boolean, Boolean, Boolean, Boolean), bude také obsahovat informace o schématu v hlavičce, které zavaděč může číst, i když Columns nejsou zadané. Pokud chcete použít schéma definované v souboru, všechny ostatní TextLoader.Options duše zůstanou s jejich výchozími hodnotami.

Návraty

Platí pro

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

Vytvořte zavaděč TextLoadertextu .

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

Parametry

columns
TextLoader.Column[]

Pole sloupců TextLoader.Column definující schéma

separatorChar
Char

Znak použitý jako oddělovač mezi datovými body v řádku. Ve výchozím nastavení se jako oddělovač používá znak tabulátoru.

hasHeader
Boolean

Určuje, jestli má soubor záhlaví s názvy funkcí. Když je zadán, znamená, true že první řádek v souboru bude použit pro názvy funkcí a že při Load(IMultiStreamSource) zavolání se první řádek přeskočí. Pokud není k dispozici, znamená to, true že zavaděč by měl při Load(IMultiStreamSource) zavolání přeskočit první řádek, ale sloupce nebudou obsahovat poznámky názvů slotů. Důvodem je to, že výstupní schéma se vytvoří při vytvoření zavaděče, a ne při Load(IMultiStreamSource) jeho zavolání.

dataSample
IMultiStreamSource

Volitelné umístění ukázky dat Ukázku lze použít k odvození poznámek názvů slotů, pokud jsou k dispozici, a také počtu slotů ve sloupci definovaném s maximálním indexem TextLoader.Rangenull . Pokud byla ukázka uložena s nástrojem ML.NET SaveAsText(DataOperationsCatalog, IDataView, Stream, Char, Boolean, Boolean, Boolean, Boolean), bude také obsahovat informace o schématu v hlavičce, které může zavaděč přečíst, i když columns je null. Pokud chcete použít schéma definované v souboru, zůstanou všechny ostatní argumenty duše s výchozími hodnotami.

allowQuoting
Boolean

Zda vstup může obsahovat dvojité hodnoty v uvozových hodnotách. Tento parametr se používá k rozlišení oddělovačů ve vstupní hodnotě od skutečných oddělovačů. Při truepoužití se oddělovače v dvojitých uvozovkách považují za součást vstupní hodnoty. Když false, všechny oddělovače, i ty v uvozovkách, se považují za oddělovače nového sloupce.

trimWhitespace
Boolean

Odeberte koncové prázdné znaky z čar.

allowSparse
Boolean

Zda vstup může obsahovat řídké reprezentace. Například řádek obsahující "5 2:6 4:3" znamená, že existuje 5 sloupců a jediné nenulové jsou sloupce 2 a 4, které mají hodnoty 6 a 3. Indexy sloupců jsou založené na nule, takže sloupce 2 a 4 představují třetí a 5. sloupec. Sloupec může mít také husté hodnoty následované řídkými hodnotami reprezentovanými tímto způsobem. Například řádek obsahující "1 2 5 2:6 4:3" představuje dva husté sloupce s hodnotami 1 a 2, následované 5 řídce reprezentovanými sloupci s hodnotami 0, 0, 6, 0 a 3. Indexy řídkých sloupců začínají od 0, i když 0 představuje třetí sloupec.

Návraty

Příklady

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

Platí pro

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

Vytvořte zavaděč TextLoader textu odvozováním schématu datové sady z typu datového modelu.

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

Parametry typu

TInput

Parametry

options
TextLoader.Options

Definuje nastavení operace načítání. Definuje nastavení operace načítání. Není třeba zadávat pole Sloupce, protože sloupce budou odvozeny touto metodou.

dataSample
IMultiStreamSource

Volitelné umístění ukázky dat Ukázku lze použít k odvození informací o sloupcích, jako jsou názvy slotů.

Návraty

Platí pro

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

Vytvořte zavaděč TextLoader textu odvozováním schématu datové sady z typu datového modelu.

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

Parametry typu

TInput

Definuje schéma dat, která se mají načíst. K zadání názvů sloupců a jejich datových typů ve schématu načtených dat použijte veřejná pole nebo vlastnosti zdobené LoadColumnAttribute (a případně další atributy).

Parametry

separatorChar
Char

Znak oddělovače sloupců. Výchozí hodnota je \t.

hasHeader
Boolean

Určuje, jestli má soubor záhlaví s názvy funkcí. Když je zadán, znamená, true že první řádek v souboru bude použit pro názvy funkcí a že při Load(IMultiStreamSource) zavolání se první řádek přeskočí. Pokud není k dispozici, znamená to, true že zavaděč by měl při Load(IMultiStreamSource) zavolání přeskočit první řádek, ale sloupce nebudou obsahovat poznámky názvů slotů. Důvodem je to, že výstupní schéma se vytvoří při vytvoření zavaděče, a ne při Load(IMultiStreamSource) jeho zavolání.

dataSample
IMultiStreamSource

Volitelné umístění ukázky dat Ukázku je možné použít k odvození poznámek k názvům slotů, pokud jsou k dispozici.

allowQuoting
Boolean

Zda vstup může obsahovat dvojité hodnoty v uvozových hodnotách. Tento parametr se používá k rozlišení oddělovačů ve vstupní hodnotě od skutečných oddělovačů. Při truepoužití se oddělovače v dvojitých uvozovkách považují za součást vstupní hodnoty. Když false, všechny oddělovače, i ty bez uvozovky, jsou považovány za oddělovače nového sloupce.

trimWhitespace
Boolean

Odeberte koncové prázdné znaky z čar.

allowSparse
Boolean

Zda vstup může obsahovat řídké reprezentace. Například řádek obsahující "5 2:6 4:3" znamená, že existuje 5 sloupců a jediné nenulové jsou sloupce 2 a 4, které mají hodnoty 6 a 3. Indexy sloupců jsou založené na nule, takže sloupce 2 a 4 představují třetí a 5. sloupec. Sloupec může mít také husté hodnoty následované řídkými hodnotami reprezentovanými tímto způsobem. Například řádek obsahující "1 2 5 2:6 4:3" představuje dva husté sloupce s hodnotami 1 a 2, následované 5 řídce reprezentovanými sloupci s hodnotami 0, 0, 6, 0 a 3. Indexy řídkých sloupců začínají od 0, i když 0 představuje třetí sloupec.

Návraty

Platí pro