TextLoaderSaverCatalog.CreateTextLoader 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
오버로드
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.Rangenull
정의된 의 슬롯 수도 유추할 수 있습니다.
샘플이 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개이고 0이 아닌 열은 각각 6과 3 값을 갖는 열 2와 4입니다. 열 인덱스는 0부터 시작하므로 열 2와 4는 3번째 및 5번째 열을 나타냅니다. 열에는 조밀한 값과 이 방식으로 표시되는 스파스 값이 있을 수도 있습니다. 예를 들어 "1 2 5 2:6 4:3"을 포함하는 행은 값이 1과 2인 두 개의 조밀한 열을 나타내고 그 뒤에 값이 0, 0, 6, 0 및 3인 5개의 드물게 표시되는 열을 나타냅니다. 스파스 열의 인덱스는 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개이고 0이 아닌 열은 각각 6과 3 값을 갖는 열 2와 4입니다. 열 인덱스는 0부터 시작하므로 열 2와 4는 3번째 및 5번째 열을 나타냅니다. 열에는 조밀한 값과 이 방식으로 표시되는 스파스 값이 있을 수도 있습니다. 예를 들어 "1 2 5 2:6 4:3"을 포함하는 행은 값이 1과 2인 두 개의 조밀한 열을 나타내고 그 뒤에 값이 0, 0, 6, 0 및 3인 5개의 드물게 표시되는 열을 나타냅니다. 스파스 열의 인덱스는 0이 세 번째 열을 나타내더라도 0부터 시작합니다.