Freigeben über


TextLoaderSaverCatalog.CreateTextLoader Methode

Definition

Überlädt

CreateTextLoader(DataOperationsCatalog, TextLoader+Options, IMultiStreamSource)

Erstellen Sie ein Textladeprogramm TextLoader.

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

Erstellen Sie ein Textladeprogramm TextLoader.

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

Erstellen Sie ein Textladeprogramm TextLoader , indem Sie das Datasetschema aus einem Datenmodelltyp ableiten.

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

Erstellen Sie ein Textladeprogramm TextLoader , indem Sie das Datasetschema aus einem Datenmodelltyp ableiten.

CreateTextLoader(DataOperationsCatalog, TextLoader+Options, IMultiStreamSource)

Erstellen Sie ein Textladeprogramm 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

Parameter

options
TextLoader.Options

Definiert die Einstellungen des Ladevorgangs.

dataSample
IMultiStreamSource

Der optionale Speicherort eines Datenbeispiels. Das Beispiel kann verwendet werden, um Anmerkungen zum Slotnamen abzuleiten, sofern vorhanden, und auch die Anzahl der Slots in Columns definiert mit TextLoader.Range maximalem null Index. Wenn das Beispiel mit dem von ML.NET SaveAsText(DataOperationsCatalog, IDataView, Stream, Char, Boolean, Boolean, Boolean, Boolean)gespeichert wurde, enthält es auch die Schemainformationen im Header, die der Ladeprogramm lesen kann, auch wenn Columns es nicht angegeben ist. Um das in der Datei definierte Schema zu verwenden, bleiben alle anderen TextLoader.Options Seelen mit ihren Standardwerten belassen.

Gibt zurück

Gilt für:

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

Erstellen Sie ein Textladeprogramm 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

Parameter

columns
TextLoader.Column[]

Array von Spalten TextLoader.Column , die das Schema definieren.

separatorChar
Char

Das Zeichen, das als Trennzeichen zwischen Datenpunkten in einer Zeile verwendet wird. Standardmäßig wird das Tabstoppzeichen als Trennzeichen verwendet.

hasHeader
Boolean

Gibt an, ob die Datei über einen Header mit Featurenamen verfügt. Wenn ein bereitgestellt wird, gibt an, true dass die erste Zeile in der für Featurenamen verwendet wird und dass beim Load(IMultiStreamSource) Aufruf die erste Zeile übersprungen wird. Wenn keine Angabe vorhanden ist, gibt nur an, true dass das Ladeprogramm die erste Zeile überspringen soll, wenn Load(IMultiStreamSource) aufgerufen wird, spalten jedoch keine Slotnamenanmerkungen enthalten. Dies liegt daran, dass das Ausgabeschema erstellt wird, wenn das Ladeprogramm erstellt wird, und nicht, wenn Load(IMultiStreamSource) aufgerufen wird.

dataSample
IMultiStreamSource

Der optionale Speicherort eines Datenbeispiels. Das Beispiel kann verwendet werden, um Anmerkungen zum Slotnamen abzuleiten, sofern vorhanden, sowie die Anzahl der Slots in einer Spalte, die mit TextLoader.Rangenull dem maximalen Index definiert ist. Wenn das Beispiel mit dem von ML.NET SaveAsText(DataOperationsCatalog, IDataView, Stream, Char, Boolean, Boolean, Boolean, Boolean)gespeichert wurde, enthält es auch die Schemainformationen im Header, die der Ladeprogramm lesen kann, auch wenn columnsnullist. Um das in der Datei definierte Schema zu verwenden, bleiben alle anderen Argumente mit ihren Standardwerten belassen.

allowQuoting
Boolean

Gibt an, ob die Eingabe Werte in doppelter Anführungszeichen enthalten darf. Dieser Parameter wird verwendet, um Trennzeichen in einem Eingabewert von tatsächlichen Trennzeichen zu unterscheiden. Wenn true, werden Trennzeichen in doppelten Anführungszeichen als Teil des Eingabewerts behandelt. Wenn false, werden alle Trennzeichen, auch die in Anführungszeichen, als Trennzeichen für eine neue Spalte behandelt.

trimWhitespace
Boolean

Entfernen Sie nachfolgende Leerzeichen aus Zeilen.

allowSparse
Boolean

Gibt an, ob die Eingabe Sparsedarstellungen enthalten kann. Beispielsweise bedeutet eine Zeile mit "5 2:6 4:3", dass es fünf Spalten gibt, und die einzigen Spalten ungleich Null sind die Spalten 2 und 4, die die Werte 6 bzw. 3 aufweisen. Spaltenindizes sind nullbasiert, sodass die Spalten 2 und 4 die 3. und 5. Spalte darstellen. Eine Spalte kann auch dichte Werte aufweisen, gefolgt von Sparsewerten, die auf diese Weise dargestellt werden. Beispielsweise stellt eine Zeile mit "1 2 5 2:6 4:3" zwei dichte Spalten mit den Werten 1 und 2 dar, gefolgt von 5 spär dargestellten Spalten mit den Werten 0, 0, 6, 0 und 3. Die Indizes der Sparsespalten beginnen bei 0, obwohl 0 die dritte Spalte darstellt.

Gibt zurück

Beispiele

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

Gilt für:

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

Erstellen Sie ein Textladeprogramm TextLoader , indem Sie das Datasetschema aus einem Datenmodelltyp ableiten.

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

Typparameter

TInput

Parameter

options
TextLoader.Options

Definiert die Einstellungen des Ladevorgangs. Definiert die Einstellungen des Ladevorgangs. Es ist nicht erforderlich, ein Spaltenfeld anzugeben, da Spalten von dieser Methode abgeleitet werden.

dataSample
IMultiStreamSource

Der optionale Speicherort eines Datenbeispiels. Das Beispiel kann verwendet werden, um Informationen zu den Spalten abzuleiten, z. B. Slotnamen.

Gibt zurück

Gilt für:

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

Erstellen Sie ein Textladeprogramm TextLoader , indem Sie das Datasetschema aus einem Datenmodelltyp ableiten.

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

Typparameter

TInput

Definiert das Schema der zu ladenden Daten. Verwenden Sie öffentliche Felder oder Eigenschaften, die mit LoadColumnAttribute (und möglicherweise anderen Attributen) versehen sind, um die Spaltennamen und deren Datentypen im Schema der geladenen Daten anzugeben.

Parameter

separatorChar
Char

Spaltentrennzeichen. Der Standardwert ist "\t".

hasHeader
Boolean

Gibt an, ob die Datei über einen Header mit Featurenamen verfügt. Wenn ein bereitgestellt wird, gibt an, true dass die erste Zeile in der für Featurenamen verwendet wird und dass beim Load(IMultiStreamSource) Aufruf die erste Zeile übersprungen wird. Wenn keine Angabe vorhanden ist, gibt nur an, true dass das Ladeprogramm die erste Zeile überspringen soll, wenn Load(IMultiStreamSource) aufgerufen wird, spalten jedoch keine Slotnamenanmerkungen enthalten. Dies liegt daran, dass das Ausgabeschema erstellt wird, wenn das Ladeprogramm erstellt wird, und nicht, wenn Load(IMultiStreamSource) aufgerufen wird.

dataSample
IMultiStreamSource

Der optionale Speicherort eines Datenbeispiels. Das Beispiel kann verwendet werden, um Anmerkungen zum Slotnamen abzuleiten, falls vorhanden.

allowQuoting
Boolean

Gibt an, ob die Eingabe Werte in doppelter Anführungszeichen enthalten darf. Dieser Parameter wird verwendet, um Trennzeichen in einem Eingabewert von tatsächlichen Trennzeichen zu unterscheiden. Wenn true, werden Trennzeichen in doppelten Anführungszeichen als Teil des Eingabewerts behandelt. Wenn false, werden alle Trennzeichen, auch diese whitin-Anführungszeichen, als Trennzeichen für eine neue Spalte behandelt.

trimWhitespace
Boolean

Entfernen Sie nachfolgende Leerzeichen aus Zeilen.

allowSparse
Boolean

Gibt an, ob die Eingabe Sparsedarstellungen enthalten kann. Beispielsweise bedeutet eine Zeile mit "5 2:6 4:3", dass es fünf Spalten gibt, und die einzigen Spalten ungleich Null sind die Spalten 2 und 4, die die Werte 6 bzw. 3 aufweisen. Spaltenindizes sind nullbasiert, sodass die Spalten 2 und 4 die 3. und 5. Spalte darstellen. Eine Spalte kann auch dichte Werte aufweisen, gefolgt von Sparsewerten, die auf diese Weise dargestellt werden. Beispielsweise stellt eine Zeile mit "1 2 5 2:6 4:3" zwei dichte Spalten mit den Werten 1 und 2 dar, gefolgt von 5 spär dargestellten Spalten mit den Werten 0, 0, 6, 0 und 3. Die Indizes der Sparsespalten beginnen bei 0, obwohl 0 die dritte Spalte darstellt.

Gibt zurück

Gilt für: