private Measure[] GetBaseConditionals(Matrix x)
{
Measure[] features = new Measure[x.Cols];
for (int i = 0; i < features.Length; i++)
{
Property p = Descriptor.At(i);
var f = new Measure
{
Discrete = p.Discrete,
Label = Descriptor.ColumnAt(i),
};
IEnumerable<Statistic> fstats;
if (f.Discrete)
fstats = x[i, VectorType.Col].Distinct().OrderBy(d => d)
.Select(d => Statistic.Make(p.Convert(d).ToString(), d, 1));
else
fstats = x[i, VectorType.Col].Segment(Width)
.Select(d => Statistic.Make(f.Label, d, 1));
f.Probabilities = fstats.ToArray();
features[i] = f;
}
return features;
}