public void KeyToBinaryVectorStatic() { string dataPath = GetDataPath("breast-cancer.txt"); var reader = TextLoaderStatic.CreateReader(Env, ctx => ( ScalarString: ctx.LoadText(1), VectorString: ctx.LoadText(1, 4) )); var data = reader.Read(dataPath); // Non-pigsty Term. var dynamicData = new ValueToKeyMappingEstimator(Env, new[] { new ValueToKeyMappingTransformer.ColumnInfo("ScalarString", "A"), new ValueToKeyMappingTransformer.ColumnInfo("VectorString", "B") }) .Fit(data.AsDynamic).Transform(data.AsDynamic); var data2 = dynamicData.AssertStatic(Env, ctx => ( A: ctx.KeyU4.TextValues.Scalar, B: ctx.KeyU4.TextValues.Vector)); var est = data2.MakeNewEstimator() .Append(row => ( ScalarString: row.A.ToBinaryVector(), VectorString: row.B.ToBinaryVector())); TestEstimatorCore(est.AsDynamic, data2.AsDynamic, invalidInput: data.AsDynamic); Done(); }
public void KeyToValuePigsty() { string dataPath = GetDataPath("breast-cancer.txt"); var reader = TextLoaderStatic.CreateReader(Env, ctx => ( ScalarString: ctx.LoadText(1), VectorString: ctx.LoadText(1, 4) )); var data = reader.Read(dataPath); // Non-pigsty Term. var dynamicData = new ValueToKeyMappingEstimator(Env, new[] { new ValueToKeyMappingEstimator.ColumnInfo("A", "ScalarString"), new ValueToKeyMappingEstimator.ColumnInfo("B", "VectorString") }) .Fit(data.AsDynamic).Transform(data.AsDynamic); var data2 = dynamicData.AssertStatic(Env, ctx => ( A: ctx.KeyU4.TextValues.Scalar, B: ctx.KeyU4.TextValues.Vector)); var est = data2.MakeNewEstimator() .Append(row => ( ScalarString: row.A.ToValue(), VectorString: row.B.ToValue())); TestEstimatorCore(est.AsDynamic, data2.AsDynamic, invalidInput: data.AsDynamic); var data2Transformed = est.Fit(data2).Transform(data2).AsDynamic; // Check that term and ToValue are round-trippable. var dataLeft = ML.Transforms.SelectColumns(new[] { "ScalarString", "VectorString" }).Fit(data.AsDynamic).Transform(data.AsDynamic); var dataRight = ML.Transforms.SelectColumns(new[] { "ScalarString", "VectorString" }).Fit(data2Transformed).Transform(data2Transformed); CheckSameSchemas(dataLeft.Schema, dataRight.Schema); CheckSameValues(dataLeft, dataRight); Done(); }