对于ML.NET 0.11,属性MLContext.Transforms.Categorical
似乎只有OneHotEncoding
和OneHotHashEncoding
作为将分类值转换为要素的选项。我有一些基数较高的数据列,使用数字表示可能会更好。我们在ML.NET中是否具有该选项,还是需要先在外部进行预处理?
答案 0 :(得分: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 |