对于 ML.NET 0.11,该属性MLContext.Transforms.Categorical
似乎只有OneHotEncoding
和OneHotHashEncoding
作为将分类值转换为特征的选项。我有一些具有高基数的数据列,使用数字表示可能会更好。我们在 ML.NET 中是否有这些选项,或者我是否需要先在外部预处理数据?
问问题
278 次
1 回答
2
您可以将它们转换为KeyType而不是数值。
var rnd = new Random();
var enumerable = Enumerable.Range(1, 1000)
.Select(n => new Row { Email = "sadas" + rnd.Next(1, 41) + "@so.com"
Label = rnd.Next(1, 6).ToString() });
var context = new MLContext();
var data = context.Data.LoadFromEnumerable(enumerable);
var pipeline = context.Transforms.Conversion.MapValueToKey(nameof(Row.Email));
var preview = pipeline.Fit(data).Transform(data).Preview(10);
样本结果:
| Email | Email | Label |
|----------------|-------|-------|
| sadas25@so.com | 39 | 3 |
| sadas7@so.com | 1 | 4 |
| sadas13@so.com | 10 | 1 |
| sadas27@so.com | 33 | 4 |
| sadas5@so.com | 19 | 4 |
| sadas31@so.com | 4 | 2 |
| sadas2@so.com | 38 | 4 |
| sadas22@so.com | 25 | 2 |
| sadas37@so.com | 36 | 5 |
| sadas32@so.com | 26 | 2 |
于 2019-03-15T07:48:59.557 回答