我想知道是否可以将两个字符串类型的数据列连接成标签列。
我尝试过的是:
pipeline.Add(new ColumnConcatenator("Label", "string1", "string2"));
但这只会输出一个V2(text, 2)。而标签必须是R4-R8类型。
我需要这样做的原因是我只有两个输入变量,我想使用回归来确定哪个是最佳的。
谢谢!
回答:
ColumnConcatenator 目前会将你的两列合并并生成一个新的宽度为二的向量类型列。它会将 a
和 b
上转换为向量 [a, b]
。
我想你问的是如何生成一个新的标签,等于 a + b
,其中 a
和 b
是字符串。例如:var a = "Hello"; var b = "World"; var c = a + c; // c 是 HelloWorld
。
目前在 ML.NET 中没有办法实现第二种方法(普通字符串连接)。你可能需要在 ML.NET 代码之前先组合你的字符串。这是我们会在 ML.NET 未来版本中考虑的问题,你可以提交一个问题请求:https://github.com/dotnet/machinelearning/issues/new。
更新:
我们已经添加了表达式转换,可以用来连接字符串(以及许多其他功能)。
使用方法:
pipeline.Append(ML.Transforms.Expression("Label", "(x, y) : concat(x, \"-\", y)", "LabelColOne", "LabelColTwo"))
对于 LabelColOne="Cat"
和 LabelColTwo="Dog"
的输入,它会将它们用 “-” 连接起来,生成 Label="Cat-Dog"
。