public void ApplyTest()
{
object[,] data =
{
{ "Id", "IsSmoker", "Age" },
{ 0, 1, 10 },
{ 1, 1, 15 },
{ 2, 0, 40 },
{ 3, 1, 20 },
{ 4, 0, 70 },
{ 5, 0, 55 },
};
DataTable input = data.ToTable();
var smoker = new LinearScaling();
var common = new LinearScaling();
smoker.Columns.Add(new LinearScaling.Options("Age")
{
SourceRange = new DoubleRange(10, 20),
OutputRange = new DoubleRange(-1, 0)
});
common.Columns.Add(new LinearScaling.Options("Age")
{
SourceRange = new DoubleRange(40, 70),
OutputRange = new DoubleRange(0, 1)
});
var settings = new Branching.Options("IsSmoker");
settings.Filters.Add(1, smoker);
settings.Filters.Add(0, common);
Branching branching = new Branching(settings);
DataTable actual = branching.Apply(input);
double[] expected = { -1, -0.5, 0, 0, 1, 0.5 };
foreach (DataRow row in actual.Rows)
{
int id = (int)row[0];
double age = (double)row[2];
Assert.AreEqual(expected[id], age);
}
}
}