public void FeatureMetadata_FilterOnlyX_ExpectSingleItem() { var ext = new ObjectFeatureExtractorFactory(); var fe = ext.CreateFeatureExtractor<FeatureObject>(); var tfe = new TransformingFeatureExtractor<FeatureObject, double>(fe, null, f => f.Label == "x"); var featurex = tfe.FeatureMetadata.Single(); Assert.That(featurex.DataType == System.TypeCode.Int32); Assert.That(featurex.Label == "x"); }
public void FeatureMetadata_AggregateInputsInto1D_ExpectSingleItem() { var ext = new ObjectFeatureExtractorFactory(); var fe = ext.CreateFeatureExtractor<FeatureObject>(); var tfe = new TransformingFeatureExtractor<FeatureObject, double>(fe, v => new double[] { v[0] * v[1] * v[2] }); tfe.NormaliseUsing(new FeatureObject[] { new FeatureObject() { x = 10, y = 10, z = 10 } }); var trasnformedFeature = tfe.FeatureMetadata.Single(); Assert.That(trasnformedFeature.DataType == System.TypeCode.Double); Assert.That(trasnformedFeature.Index == 0); Assert.That(trasnformedFeature.Label == "Transform 1"); var vector = tfe.ExtractVector(new FeatureObject() { x = 3, y = 5, z = 7 }); Assert.That(vector.First(), Is.EqualTo((3d / 10d) * (5d / 10d) * (7d / 10d))); }
public void CreateFeatureExtractor_SimpleObject() { var fo = new ObjectFeatureExtractorFactory(); var fe = fo.CreateFeatureExtractorFunc<FeatureObject>(); var data = fe(new FeatureObject() { Height = 105.23, Quantity = 16, Width = 123.6f, Cost = 12, Category = "a", Amount = 4323.31M }); Assert.That(data.Length, Is.EqualTo(5)); Assert.That(data[0], Is.EqualTo(12d)); Assert.That(data[1], Is.EqualTo(105.23d)); Assert.That(data[2], Is.EqualTo(16d)); Assert.That(data[2], Is.EqualTo(16d)); Assert.That(Math.Round(data[3], 1), Is.EqualTo(123.6d)); Assert.That(data[4], Is.EqualTo(0.5d)); }