Bagikan melalui


TextLoaderSaverCatalog.CreateTextLoader Metode

Definisi

Overload

CreateTextLoader(DataOperationsCatalog, TextLoader+Options, IMultiStreamSource)

Buat pemuat TextLoaderteks .

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

Buat pemuat TextLoaderteks .

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

Buat pemuat TextLoader teks dengan menyimpulkan skema himpunan data dari jenis model data.

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

Buat pemuat TextLoader teks dengan menyimpulkan skema himpunan data dari jenis model data.

CreateTextLoader(DataOperationsCatalog, TextLoader+Options, IMultiStreamSource)

Buat pemuat TextLoaderteks .

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

Menentukan pengaturan operasi pemuatan.

dataSample
IMultiStreamSource

Lokasi opsional sampel data. Sampel dapat digunakan untuk menyimpulkan anotasi nama slot jika ada, dan juga jumlah slot yang Columns ditentukan dengan TextLoader.Rangenull indeks maksimum. Jika sampel telah disimpan dengan ML.NET SaveAsText(DataOperationsCatalog, IDataView, Stream, Char, Boolean, Boolean, Boolean, Boolean), sampel juga akan berisi informasi skema di header yang dapat dibaca pemuat bahkan jika Columns tidak ditentukan. Untuk menggunakan skema yang ditentukan dalam file, semua sould lainnya TextLoader.Options dibiarkan dengan nilai defaultnya.

Mengembalikan

Berlaku untuk

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

Buat pemuat TextLoaderteks .

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 kolom yang TextLoader.Column menentukan skema.

separatorChar
Char

Karakter yang digunakan sebagai pemisah antara titik data berturut-turut. Secara default karakter tab digunakan sebagai pemisah.

hasHeader
Boolean

Apakah file memiliki header dengan nama fitur. Ketika disediakan, true menunjukkan bahwa baris pertama dalam akan digunakan untuk nama fitur, dan ketika Load(IMultiStreamSource) dipanggil, baris pertama akan dilewati. Ketika tidak ada yang disediakan, true hanya menunjukkan bahwa loader harus melewati baris pertama ketika Load(IMultiStreamSource) dipanggil, tetapi kolom tidak akan memiliki anotasi nama slot. Ini karena skema output dibuat ketika loader dibuat, dan bukan ketika Load(IMultiStreamSource) dipanggil.

dataSample
IMultiStreamSource

Lokasi opsional sampel data. Sampel dapat digunakan untuk menyimpulkan anotasi nama slot jika ada, dan juga jumlah slot dalam kolom yang ditentukan dengan TextLoader.Rangenull indeks maksimum. Jika sampel telah disimpan dengan ML.NET SaveAsText(DataOperationsCatalog, IDataView, Stream, Char, Boolean, Boolean, Boolean, Boolean), sampel juga akan berisi informasi skema di header yang dapat dibaca pemuat bahkan jika columns adalah null. Untuk menggunakan skema yang ditentukan dalam file, semua argumen lain dibiarkan dengan nilai defaultnya.

allowQuoting
Boolean

Apakah input dapat menyertakan nilai yang dikutip ganda. Parameter ini digunakan untuk membedakan karakter pemisah dalam nilai input dari pemisah aktual. Ketika true, pemisah dalam tanda kutip ganda diperlakukan sebagai bagian dari nilai input. Ketika false, semua pemisah, bahkan yang ada dalam tanda kutip, diperlakukan sebagai pembatas kolom baru.

trimWhitespace
Boolean

Hapus spasi kosong berikutnya dari garis.

allowSparse
Boolean

Apakah input mungkin menyertakan representasi yang jarang. Misalnya, baris yang berisi "5 2:6 4:3" berarti bahwa ada 5 kolom, dan satu-satunya non-nol adalah kolom 2 dan 4, yang masing-masing memiliki nilai 6 dan 3. Indeks kolom berbasis nol, sehingga kolom 2 dan 4 mewakili kolom ke-3 dan ke-5. Kolom mungkin juga memiliki nilai padat diikuti dengan nilai jarang yang diwakili dalam mode ini. Misalnya, baris yang berisi "1 2 5 2:6 4:3" mewakili dua kolom padat dengan nilai 1 dan 2, diikuti oleh 5 kolom yang jarang diwakili dengan nilai 0, 0, 6, 0, dan 3. Indeks kolom jarang dimulai dari 0, meskipun 0 mewakili kolom ketiga.

Mengembalikan

Contoh

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

Berlaku untuk

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

Buat pemuat TextLoader teks dengan menyimpulkan skema himpunan data dari jenis model data.

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

Jenis parameter

TInput

Parameter

options
TextLoader.Options

Menentukan pengaturan operasi pemuatan. Menentukan pengaturan operasi pemuatan. Tidak perlu menentukan bidang Kolom, karena kolom akan disimpulkan oleh metode ini.

dataSample
IMultiStreamSource

Lokasi opsional sampel data. Sampel dapat digunakan untuk menyimpulkan informasi tentang kolom, seperti nama slot.

Mengembalikan

Berlaku untuk

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

Buat pemuat TextLoader teks dengan menyimpulkan skema himpunan data dari jenis model data.

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

Jenis parameter

TInput

Menentukan skema data yang akan dimuat. Gunakan bidang atau properti publik yang didekorasi dengan LoadColumnAttribute (dan mungkin atribut lain) untuk menentukan nama kolom dan jenis datanya dalam skema data yang dimuat.

Parameter

separatorChar
Char

Karakter pemisah kolom. Defaultnya adalah '\t'

hasHeader
Boolean

Apakah file memiliki header dengan nama fitur. Ketika disediakan, true menunjukkan bahwa baris pertama dalam akan digunakan untuk nama fitur, dan ketika Load(IMultiStreamSource) dipanggil, baris pertama akan dilewati. Ketika tidak ada yang disediakan, true hanya menunjukkan bahwa loader harus melewati baris pertama ketika Load(IMultiStreamSource) dipanggil, tetapi kolom tidak akan memiliki anotasi nama slot. Ini karena skema output dibuat ketika loader dibuat, dan bukan ketika Load(IMultiStreamSource) dipanggil.

dataSample
IMultiStreamSource

Lokasi opsional sampel data. Sampel dapat digunakan untuk menyimpulkan anotasi nama slot jika ada.

allowQuoting
Boolean

Apakah input dapat menyertakan nilai yang dikutip ganda. Parameter ini digunakan untuk membedakan karakter pemisah dalam nilai input dari pemisah aktual. Ketika true, pemisah dalam tanda kutip ganda diperlakukan sebagai bagian dari nilai input. Ketika false, semua pemisah, bahkan tanda kutip whitin tersebut, diperlakukan sebagai pembatas kolom baru.

trimWhitespace
Boolean

Hapus spasi kosong berikutnya dari garis.

allowSparse
Boolean

Apakah input mungkin menyertakan representasi yang jarang. Misalnya, baris yang berisi "5 2:6 4:3" berarti bahwa ada 5 kolom, dan satu-satunya non-nol adalah kolom 2 dan 4, yang masing-masing memiliki nilai 6 dan 3. Indeks kolom berbasis nol, sehingga kolom 2 dan 4 mewakili kolom ke-3 dan ke-5. Kolom mungkin juga memiliki nilai padat diikuti dengan nilai jarang yang diwakili dalam mode ini. Misalnya, baris yang berisi "1 2 5 2:6 4:3" mewakili dua kolom padat dengan nilai 1 dan 2, diikuti oleh 5 kolom yang jarang diwakili dengan nilai 0, 0, 6, 0, dan 3. Indeks kolom jarang dimulai dari 0, meskipun 0 mewakili kolom ketiga.

Mengembalikan

Berlaku untuk