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

パラメーター

options
TextLoader.Options

読み込み操作の設定を定義します。

dataSample
IMultiStreamSource

データサンプルの任意の場所。 このサンプルを使用すると、スロット名の注釈がある場合はそれを推測でき Columns ます。また、最大インデックスで定義されているスロットの数も推定され TextLoader.Range null ます。 サンプルが ML と共に保存されている場合はです。SaveAsText(DataOperationsCatalog, IDataView, Stream, Char, Boolean, Boolean, Boolean, Boolean)また、が指定されていない場合でも、ローダーが読み取ることができるスキーマ情報がヘッダーに含まれ Columns ます。 ファイルで定義されているスキーマを使用するには、他のすべての TextLoader.Options 値を既定値のままにします。

戻り値

TextLoader

適用対象

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

パラメーター

columns
TextLoader.Column[]

TextLoader.Columnスキーマを定義している列の配列。

separatorChar
Char

行内のデータポイント間の区切り記号として使用される文字。 既定では、タブ文字は区切り記号として使用されます。

hasHeader
Boolean

ファイルに機能名のヘッダーがあるかどうか。 が指定されている場合 、 true の最初の行が 機能名に使用されること、およびが呼び出されたときに最初の行がスキップされることを示し Load(IMultiStreamSource) ます。 が指定されていない場合 true は、が呼び出されたときにローダーが最初の行をスキップする必要があることを示し Load(IMultiStreamSource) ます。ただし、列にはスロット名の注釈がありません。 これは、が呼び出されたときではなく、ローダーの作成時に出力スキーマが作成されるためです Load(IMultiStreamSource)

dataSample
IMultiStreamSource

データサンプルの任意の場所。 このサンプルを使用すると、スロット名の注釈がある場合はそれを推測できます。また、最大インデックスを使用して定義された列のスロット数も推定され TextLoader.Range null ます。 サンプルが ML と共に保存されている場合はです。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つの列があることを意味し、0以外の値は列2と4で、それぞれ値が6と3になります。 列インデックスは0から始まるため、列2と4は第3列と第5列を表します。 列には、密度の値の後に、この方法で表されるスパース値も含まれる場合があります。 たとえば、"1 2 5 2:6 4:3" を含む行は、値1と2を持つ2つの高密度列を表し、その後に5少ないの値が0、0、6、0、3の列で表されます。 スパース列のインデックスは0から始まりますが、0は3番目の列を表しています。

戻り値

TextLoader

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

パラメーター

options
TextLoader.Options

読み込み操作の設定を定義します。 読み込み操作の設定を定義します。 列がこのメソッドによってピアリングされるため、列フィールドを指定する必要はありません。

dataSample
IMultiStreamSource

データサンプルの任意の場所。 このサンプルは、スロット名などの列に関する情報を推測するために使用できます。

戻り値

TextLoader

適用対象

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 データのスキーマで列名とそのデータ型を指定します。

パラメーター

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つの列があることを意味し、0以外の値は列2と4で、それぞれ値が6と3になります。 列インデックスは0から始まるため、列2と4は第3列と第5列を表します。 列には、密度の値の後に、この方法で表されるスパース値も含まれる場合があります。 たとえば、"1 2 5 2:6 4:3" を含む行は、値1と2を持つ2つの高密度列を表し、その後に5少ないの値が0、0、6、0、3の列で表されます。 スパース列のインデックスは0から始まりますが、0は3番目の列を表しています。

戻り値

TextLoader

適用対象