我有一个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?
谢谢
答案 0 :(得分:1)
我认为这应该很好:
mlContext.Transforms.Categorical.OneHotEncoding("TextFeatures")
对矢量进行一次热编码时,我们有两个选择:“袋子”或“指示器”。 documentation中对它们的介绍很好。
简而言之,如果您具有K个特征并且数据集中有M个不同的值,则使用“ bag”选项将获得一个大小为M的计数向量,而使用“ indicator”将获得一个值为0的向量,并且大小为K * M的1s。