CategoricalCatalog.OneHotEncoding 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
오버로드
OneHotEncoding(TransformsCatalog+CategoricalTransforms, InputOutputColumnPair[], OneHotEncodingEstimator+OutputKind, Int32, ValueToKeyMappingEstimator+KeyOrdinality, IDataView) |
Create a OneHotEncodingEstimator, which converts one or more input text columns specified in |
OneHotEncoding(TransformsCatalog+CategoricalTransforms, String, String, OneHotEncodingEstimator+OutputKind, Int32, ValueToKeyMappingEstimator+KeyOrdinality, IDataView) |
을 OneHotEncodingEstimator만듭니다. 이 열은 지정된 |
OneHotEncoding(TransformsCatalog+CategoricalTransforms, InputOutputColumnPair[], OneHotEncodingEstimator+OutputKind, Int32, ValueToKeyMappingEstimator+KeyOrdinality, IDataView)
Create a OneHotEncodingEstimator, which converts one or more input text columns specified in columns
into as many columns of one-hot encoded vectors.
public static Microsoft.ML.Transforms.OneHotEncodingEstimator OneHotEncoding (this Microsoft.ML.TransformsCatalog.CategoricalTransforms catalog, Microsoft.ML.InputOutputColumnPair[] columns, Microsoft.ML.Transforms.OneHotEncodingEstimator.OutputKind outputKind = Microsoft.ML.Transforms.OneHotEncodingEstimator+OutputKind.Indicator, int maximumNumberOfKeys = 1000000, Microsoft.ML.Transforms.ValueToKeyMappingEstimator.KeyOrdinality keyOrdinality = Microsoft.ML.Transforms.ValueToKeyMappingEstimator+KeyOrdinality.ByOccurrence, Microsoft.ML.IDataView keyData = default);
static member OneHotEncoding : Microsoft.ML.TransformsCatalog.CategoricalTransforms * Microsoft.ML.InputOutputColumnPair[] * Microsoft.ML.Transforms.OneHotEncodingEstimator.OutputKind * int * Microsoft.ML.Transforms.ValueToKeyMappingEstimator.KeyOrdinality * Microsoft.ML.IDataView -> Microsoft.ML.Transforms.OneHotEncodingEstimator
<Extension()>
Public Function OneHotEncoding (catalog As TransformsCatalog.CategoricalTransforms, columns As InputOutputColumnPair(), Optional outputKind As OneHotEncodingEstimator.OutputKind = Microsoft.ML.Transforms.OneHotEncodingEstimator+OutputKind.Indicator, Optional maximumNumberOfKeys As Integer = 1000000, Optional keyOrdinality As ValueToKeyMappingEstimator.KeyOrdinality = Microsoft.ML.Transforms.ValueToKeyMappingEstimator+KeyOrdinality.ByOccurrence, Optional keyData As IDataView = Nothing) As OneHotEncodingEstimator
매개 변수
변환 카탈로그입니다.
- columns
- InputOutputColumnPair[]
입력 및 출력 열 쌍입니다. 출력 열의 데이터 형식은 if outputKind
Bagis , Indicator및 Binary.의 Single 벡터가 됩니다.
이 Key경우 outputKind
출력 열의 데이터 형식은 스칼라 입력 열의 경우 키이거나 벡터 입력 열의 경우 키 벡터가 됩니다.
- outputKind
- OneHotEncodingEstimator.OutputKind
출력 종류: Bag(다중 집합 벡터), Ind(표시기 벡터), 키(인덱스) 또는 이진 인코딩된 표시기 벡터입니다.
- maximumNumberOfKeys
- Int32
자동 학습 시 열당 유지할 최대 용어 수입니다.
- keyOrdinality
- ValueToKeyMappingEstimator.KeyOrdinality
벡터화할 때 항목의 순서를 지정하는 방법입니다. 선택한 경우 ByOccurrence 발생한 순서대로 표시됩니다. 예를 들어 항목이 기본 비교에 따라 정렬되는 경우 ByValue텍스트 정렬은 대/소문자를 구분합니다(예: 'A', 'Z', 'a').
- keyData
- IDataView
인코딩 순서를 지정합니다. 지정한 경우 단일 열 데이터 뷰여야 하며 키 값은 해당 열에서 가져옵니다. 지정하지 않으면 맞춤 시 입력 데이터에서 순서가 결정됩니다.
반환
예제
using System;
using Microsoft.ML;
namespace Samples.Dynamic.Transforms.Categorical
{
public static class OneHotEncodingMultiColumn
{
public static void Example()
{
// Create a new ML context for ML.NET operations. It can be used for
// exception tracking and logging as well as the source of randomness.
var mlContext = new MLContext();
// Create a small dataset as an IEnumerable.
var samples = new[]
{
new DataPoint {Education = "0-5yrs", ZipCode = "98005"},
new DataPoint {Education = "0-5yrs", ZipCode = "98052"},
new DataPoint {Education = "6-11yrs", ZipCode = "98005"},
new DataPoint {Education = "6-11yrs", ZipCode = "98052"},
new DataPoint {Education = "11-15yrs", ZipCode = "98005"}
};
// Convert training data to IDataView.
IDataView data = mlContext.Data.LoadFromEnumerable(samples);
// Multi column example: A pipeline for one hot encoding two columns
// 'Education' and 'ZipCode'.
var multiColumnKeyPipeline =
mlContext.Transforms.Categorical.OneHotEncoding(
new[]
{
new InputOutputColumnPair("Education"),
new InputOutputColumnPair("ZipCode")
});
// Fit and Transform data.
IDataView transformedData =
multiColumnKeyPipeline.Fit(data).Transform(data);
var convertedData =
mlContext.Data.CreateEnumerable<TransformedData>(transformedData,
true);
Console.WriteLine(
"One Hot Encoding of two columns 'Education' and 'ZipCode'.");
// One Hot Encoding of two columns 'Education' and 'ZipCode'.
foreach (TransformedData item in convertedData)
Console.WriteLine("{0}\t\t\t{1}", string.Join(" ", item.Education),
string.Join(" ", item.ZipCode));
// 1 0 0 1 0
// 1 0 0 0 1
// 0 1 0 1 0
// 0 1 0 0 1
// 0 0 1 1 0
}
private class DataPoint
{
public string Education { get; set; }
public string ZipCode { get; set; }
}
private class TransformedData
{
public float[] Education { get; set; }
public float[] ZipCode { get; set; }
}
}
}
설명
여러 열이 예측 도구에 전달되면 모든 열이 데이터를 한 번의 패스로 처리합니다. 따라서 열이 많은 하나의 추정기를 지정하는 것이 단일 열로 각각 많은 추정기를 지정하는 것보다 더 효율적입니다.
적용 대상
OneHotEncoding(TransformsCatalog+CategoricalTransforms, String, String, OneHotEncodingEstimator+OutputKind, Int32, ValueToKeyMappingEstimator+KeyOrdinality, IDataView)
을 OneHotEncodingEstimator만듭니다. 이 열은 지정된 inputColumnName
입력 열을 이름이 outputColumnName
1 핫으로 인코딩된 벡터의 열로 변환합니다.
public static Microsoft.ML.Transforms.OneHotEncodingEstimator OneHotEncoding (this Microsoft.ML.TransformsCatalog.CategoricalTransforms catalog, string outputColumnName, string inputColumnName = default, Microsoft.ML.Transforms.OneHotEncodingEstimator.OutputKind outputKind = Microsoft.ML.Transforms.OneHotEncodingEstimator+OutputKind.Indicator, int maximumNumberOfKeys = 1000000, Microsoft.ML.Transforms.ValueToKeyMappingEstimator.KeyOrdinality keyOrdinality = Microsoft.ML.Transforms.ValueToKeyMappingEstimator+KeyOrdinality.ByOccurrence, Microsoft.ML.IDataView keyData = default);
static member OneHotEncoding : Microsoft.ML.TransformsCatalog.CategoricalTransforms * string * string * Microsoft.ML.Transforms.OneHotEncodingEstimator.OutputKind * int * Microsoft.ML.Transforms.ValueToKeyMappingEstimator.KeyOrdinality * Microsoft.ML.IDataView -> Microsoft.ML.Transforms.OneHotEncodingEstimator
<Extension()>
Public Function OneHotEncoding (catalog As TransformsCatalog.CategoricalTransforms, outputColumnName As String, Optional inputColumnName As String = Nothing, Optional outputKind As OneHotEncodingEstimator.OutputKind = Microsoft.ML.Transforms.OneHotEncodingEstimator+OutputKind.Indicator, Optional maximumNumberOfKeys As Integer = 1000000, Optional keyOrdinality As ValueToKeyMappingEstimator.KeyOrdinality = Microsoft.ML.Transforms.ValueToKeyMappingEstimator+KeyOrdinality.ByOccurrence, Optional keyData As IDataView = Nothing) As OneHotEncodingEstimator
매개 변수
변환 카탈로그입니다.
- outputColumnName
- String
의 변환에서 생성된 열의 inputColumnName
이름입니다.
이 열의 데이터 형식은 if outputKind
Bagis , Indicator및 Binary.의 Single 벡터가 됩니다.
이 Key경우 outputKind
이 열의 데이터 형식은 스칼라 입력 열의 경우 키 또는 벡터 입력 열의 경우 키의 벡터가 됩니다.
- inputColumnName
- String
원 핫 벡터로 변환할 열의 이름입니다. 이 값으로 null
설정하면 값이 outputColumnName
원본으로 사용됩니다. This column's data type can be scalar or vector of numeric, text, boolean, DateTime or DateTimeOffset,
- outputKind
- OneHotEncodingEstimator.OutputKind
출력 종류: Bag(다중 집합 벡터), 표시기(표시기 벡터), 키(인덱스) 또는 이진 인코딩된 표시기 벡터입니다.
- maximumNumberOfKeys
- Int32
자동 학습 시 열당 유지할 최대 용어 수입니다.
- keyOrdinality
- ValueToKeyMappingEstimator.KeyOrdinality
벡터화할 때 항목의 순서를 지정하는 방법입니다. 선택한 경우 ByOccurrence 발생한 순서대로 표시됩니다. 예를 들어 항목이 기본 비교에 따라 정렬되는 경우 ByValue텍스트 정렬은 대/소문자를 구분합니다(예: 'A', 'Z', 'a').
- keyData
- IDataView
인코딩 순서를 지정합니다. 지정한 경우 단일 열 데이터 뷰여야 하며 키 값은 해당 열에서 가져옵니다. 지정하지 않으면 맞춤 시 입력 데이터에서 순서가 결정됩니다.
반환
예제
using System;
using Microsoft.ML;
using Microsoft.ML.Data;
using Microsoft.ML.Transforms;
namespace Samples.Dynamic.Transforms.Categorical
{
public static class OneHotEncoding
{
public static void Example()
{
// Create a new ML context for ML.NET operations. It can be used for
// exception tracking and logging as well as the source of randomness.
var mlContext = new MLContext();
// Create a small dataset as an IEnumerable.
var samples = new[]
{
new DataPoint {Education = "0-5yrs"},
new DataPoint {Education = "0-5yrs"},
new DataPoint {Education = "6-11yrs"},
new DataPoint {Education = "6-11yrs"},
new DataPoint {Education = "11-15yrs"}
};
// Convert training data to IDataView.
IDataView data = mlContext.Data.LoadFromEnumerable(samples);
// A pipeline for one hot encoding the Education column.
var pipeline = mlContext.Transforms.Categorical.OneHotEncoding(
"EducationOneHotEncoded", "Education");
// Fit and transform the data.
IDataView oneHotEncodedData = pipeline.Fit(data).Transform(data);
PrintDataColumn(oneHotEncodedData, "EducationOneHotEncoded");
// We have 3 slots because there are three categories in the
// 'Education' column.
// 1 0 0
// 1 0 0
// 0 1 0
// 0 1 0
// 0 0 1
// A pipeline for one hot encoding the Education column (using keying).
var keyPipeline = mlContext.Transforms.Categorical.OneHotEncoding(
"EducationOneHotEncoded", "Education",
OneHotEncodingEstimator.OutputKind.Key);
// Fit and Transform data.
oneHotEncodedData = keyPipeline.Fit(data).Transform(data);
var keyEncodedColumn =
oneHotEncodedData.GetColumn<uint>("EducationOneHotEncoded");
Console.WriteLine(
"One Hot Encoding of single column 'Education', with key type " +
"output.");
// One Hot Encoding of single column 'Education', with key type output.
foreach (uint element in keyEncodedColumn)
Console.WriteLine(element);
// 1
// 1
// 2
// 2
// 3
}
private static void PrintDataColumn(IDataView transformedData,
string columnName)
{
var countSelectColumn = transformedData.GetColumn<float[]>(
transformedData.Schema[columnName]);
foreach (var row in countSelectColumn)
{
for (var i = 0; i < row.Length; i++)
Console.Write($"{row[i]}\t");
Console.WriteLine();
}
}
private class DataPoint
{
public string Education { get; set; }
}
}
}