-
Notifications
You must be signed in to change notification settings - Fork 1.9k
/
CbAdfData.cs
50 lines (45 loc) · 1.44 KB
/
CbAdfData.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VW.Labels;
using VW.Serializer.Attributes;
namespace cs_unittest.cbadf
{
public class Generator
{
private static Random rand = new Random(123);
public static Tuple<CbAdfShared, List<CbAdfAction>, ContextualBanditLabel> GenerateShared(int numActions)
{
return Tuple.Create(
new CbAdfShared
{
Num = rand.Next(100),
Vector = Enumerable.Range(1, 500).Select(_ => (float)rand.NextDouble()).ToArray()
},
Enumerable.Range(1, numActions).Select(_ => new CbAdfAction
{
Vector = Enumerable.Range(1, 500).Select(__ => (float)rand.NextDouble()).ToArray()
}).ToList(),
new ContextualBanditLabel
{
Action = (uint)rand.Next(numActions),
Cost = rand.Next(1),
Probability = (float)rand.NextDouble()
});
}
}
public class CbAdfShared
{
[Feature]
public int Num { get; set; }
[Feature(FeatureGroup = 'x', AddAnchor = true)]
public float[] Vector { get; set; }
}
public class CbAdfAction
{
[Feature(FeatureGroup = 'y', AddAnchor = true)]
public float[] Vector { get; set; }
}
}