One Hot 使用 ML.NET 对文本数组进行编码
OneHotEncoding an array of text with ML.NET
我有一个 class InputData
如下
public class InputData
{
public string[] TextFields { get; set; }
public float[] NumericFields { get; set; }
}
在构建管道时,我可以用 1 行代码轻松地将 NumericFields
转换为数字特征
var numFeatures = MlContext.Transforms.Concatenate("NumFeatures", nameof(InputData.NumericFields));
但是我想不出一种方法来进行单热编码TextFields
根据 https://docs.microsoft.com/en-us/dotnet/api/microsoft.ml.categoricalcatalog.onehotencoding 中的示例,每个文本字段都需要有自己的 属性,然后可以添加为
MlContext.Transforms.Categorical.OneHotEncoding("TextField1", "TextField2" ....);
是否有更优雅的方法来快速对文本字段数组进行 OneHotEncoding?
谢谢
我认为这应该可以正常工作:
mlContext.Transforms.Categorical.OneHotEncoding("TextFeatures")
当单热编码一个向量时,我们有两个选择:'bag',或'indicator'。 documentation.
中对它们进行了很好的介绍
简而言之,如果你有 K 个特征并且数据集中有 M 个不同的值,使用 'bag' 选项你将得到一个大小为 M 的计数向量,而使用 'indicator' 你将得到大小为 K*M 的 0 和 1 向量。
我有一个 class InputData
如下
public class InputData
{
public string[] TextFields { get; set; }
public float[] NumericFields { get; set; }
}
在构建管道时,我可以用 1 行代码轻松地将 NumericFields
转换为数字特征
var numFeatures = MlContext.Transforms.Concatenate("NumFeatures", nameof(InputData.NumericFields));
但是我想不出一种方法来进行单热编码TextFields
根据 https://docs.microsoft.com/en-us/dotnet/api/microsoft.ml.categoricalcatalog.onehotencoding 中的示例,每个文本字段都需要有自己的 属性,然后可以添加为
MlContext.Transforms.Categorical.OneHotEncoding("TextField1", "TextField2" ....);
是否有更优雅的方法来快速对文本字段数组进行 OneHotEncoding?
谢谢
我认为这应该可以正常工作:
mlContext.Transforms.Categorical.OneHotEncoding("TextFeatures")
当单热编码一个向量时,我们有两个选择:'bag',或'indicator'。 documentation.
中对它们进行了很好的介绍简而言之,如果你有 K 个特征并且数据集中有 M 个不同的值,使用 'bag' 选项你将得到一个大小为 M 的计数向量,而使用 'indicator' 你将得到大小为 K*M 的 0 和 1 向量。