public void SimpleAttributes() { string arff = @"@relation relationName @attribute a1 numeric @attribute a2 string @attribute a3 {v1,v2,v3} @attribute a4 date @attribute a5 date hh:mm:ss @attribute a6 relational @attribute a7 numeric @attribute a8 string @end a6 "; AssertWriter(arff, arffWriter => { arffWriter.WriteRelationName("relationName"); arffWriter.WriteAttribute(new ArffAttribute("a1", ArffAttributeType.Numeric)); arffWriter.WriteAttribute(new ArffAttribute("a2", ArffAttributeType.String)); arffWriter.WriteAttribute(new ArffAttribute("a3", ArffAttributeType.Nominal("v1", "v2", "v3"))); arffWriter.WriteAttribute(new ArffAttribute("a4", ArffAttributeType.Date())); arffWriter.WriteAttribute(new ArffAttribute("a5", ArffAttributeType.Date("hh:mm:ss"))); arffWriter.WriteAttribute(new ArffAttribute("a6", ArffAttributeType.Relational( new ArffAttribute("a7", ArffAttributeType.Numeric), new ArffAttribute("a8", ArffAttributeType.String)))); }); }
public void MissingValues() { string arff = @"@relation relationName @attribute a1 numeric @attribute a2 integer @attribute a3 real @attribute a4 string @attribute a5 date @attribute a6 date yyyy-MM-dd @attribute a7 {v1,'v2',""v3""} @attribute a8 string @data ?,?,?,?,?,?,?,'?'"; AssertReader(arff, expectedRelationName: "relationName", expectedAttributes: new[] { new ArffAttribute("a1", ArffAttributeType.Numeric), new ArffAttribute("a2", ArffAttributeType.Numeric), new ArffAttribute("a3", ArffAttributeType.Numeric), new ArffAttribute("a4", ArffAttributeType.String), new ArffAttribute("a5", ArffAttributeType.Date()), new ArffAttribute("a6", ArffAttributeType.Date("yyyy-MM-dd")), new ArffAttribute("a7", ArffAttributeType.Nominal("v1", "v2", "v3")), new ArffAttribute("a8", ArffAttributeType.String) }, expectedInstances: new object[][] { new object[] { null, null, null, null, null, null, null, "?" } }); }
public void InstancesReadCorrectly() { string arff = @"@relation relationName @attribute a1 numeric @attribute a2 integer @attribute a3 real @attribute a4 string @attribute a5 date @attribute a6 date yyyy-MM-dd @attribute a7 {v1,'v2',""v3""} @data -6.54,42,0.0,string,2016-06-11T19:30:05,2016-06-11,v3"; AssertReader(arff, expectedRelationName: "relationName", expectedAttributes: new[] { new ArffAttribute("a1", ArffAttributeType.Numeric), new ArffAttribute("a2", ArffAttributeType.Numeric), new ArffAttribute("a3", ArffAttributeType.Numeric), new ArffAttribute("a4", ArffAttributeType.String), new ArffAttribute("a5", ArffAttributeType.Date()), new ArffAttribute("a6", ArffAttributeType.Date("yyyy-MM-dd")), new ArffAttribute("a7", ArffAttributeType.Nominal("v1", "v2", "v3")) }, expectedInstances: new object[][] { new object[] { -6.54, 42.0, 0.0, "string", DateTime.ParseExact("2016-06-11T19:30:05", "yyyy-MM-dd'T'HH:mm:ss", CultureInfo.InvariantCulture), DateTime.ParseExact("2016-06-11", "yyyy-MM-dd", CultureInfo.InvariantCulture), 2 } }); }
public void AttributesReadCorrectly() { string arff = @"@relation relationName @attribute a1 numeric @attribute a2 integer @attribute a3 real @attribute a4 string @attribute a5 date @attribute a6 date yyyy-MM-dd @attribute a7 {v1,'v2',""v3""} @attribute a8 relational @attribute a9 numeric @attribute a10 relational @attribute a11 string @end a10 @end a8 @data"; AssertReader(arff, expectedRelationName: "relationName", expectedAttributes: new[] { new ArffAttribute("a1", ArffAttributeType.Numeric), new ArffAttribute("a2", ArffAttributeType.Numeric), new ArffAttribute("a3", ArffAttributeType.Numeric), new ArffAttribute("a4", ArffAttributeType.String), new ArffAttribute("a5", ArffAttributeType.Date()), new ArffAttribute("a6", ArffAttributeType.Date("yyyy-MM-dd")), new ArffAttribute("a7", ArffAttributeType.Nominal("v1", "v2", "v3")), new ArffAttribute("a8", ArffAttributeType.Relational( new ArffAttribute("a9", ArffAttributeType.Numeric), new ArffAttribute("a10", ArffAttributeType.Relational( new ArffAttribute("a11", ArffAttributeType.String))))) }); }
public void SparseInstancesWithInstanceWeightsWrittenCorrectly() { string arff = @"@relation relationName @attribute a1 numeric @attribute a2 string @attribute a3 {v1,v2,v3} @attribute a4 date @attribute a5 date hh:mm:ss @attribute a6 relational @attribute a7 numeric @attribute a8 numeric @end a6 @data {0 1.5,1 'abc,def',2 v3,3 2017-01-29T18:39:18,4 06:39:18,5 '2,-3.5\r\n3,4.5'},{0.44} {1 '',3 1970-01-01T00:00:00,4 12:00:00,5 '0,0\r\n0,0'},{0.87} "; DateTime date1 = DateTime.ParseExact("2017-01-29T18:39:18", "yyyy-MM-dd'T'HH:mm:ss", CultureInfo.InvariantCulture); DateTime date2 = new DateTime(1970, 1, 1, 0, 0, 0); object[] instance1 = { 1.5, "abc,def", 2, date1, date1, new[] { new object[] { 2.0, -3.5 }, new object[] { 3.0, 4.5 } } }; object[] instance2 = { 0.0, string.Empty, 0, date2, date2, new[] { new object[] { 0.0, 0.0 }, new object[] { 0.0, 0.0 } } }; AssertWriter(arff, arffWriter => { arffWriter.WriteRelationName("relationName"); arffWriter.WriteAttribute(new ArffAttribute("a1", ArffAttributeType.Numeric)); arffWriter.WriteAttribute(new ArffAttribute("a2", ArffAttributeType.String)); arffWriter.WriteAttribute(new ArffAttribute("a3", ArffAttributeType.Nominal("v1", "v2", "v3"))); arffWriter.WriteAttribute(new ArffAttribute("a4", ArffAttributeType.Date())); arffWriter.WriteAttribute(new ArffAttribute("a5", ArffAttributeType.Date("hh:mm:ss"))); arffWriter.WriteAttribute(new ArffAttribute("a6", ArffAttributeType.Relational( new ArffAttribute("a7", ArffAttributeType.Numeric), new ArffAttribute("a8", ArffAttributeType.Numeric)))); arffWriter.WriteInstance(instance1, true, 0.44); arffWriter.WriteInstance(instance2, true, 0.87); }); }
public void InstancesWrittenCorrectly() { string arff = @"@relation relationName @attribute a1 numeric @attribute a2 string @attribute a3 {v1,v2,v3} @attribute a4 date @attribute a5 date hh:mm:ss @attribute a6 relational @attribute a7 numeric @attribute a8 numeric @end a6 @data 1.5,'abc,def',v3,2017-01-29T18:39:18,06:39:18,'2,-3.5\r\n3,4.5' "; DateTime date = DateTime.ParseExact("2017-01-29T18:39:18", "yyyy-MM-dd'T'HH:mm:ss", CultureInfo.InvariantCulture); object[] instance = { 1.5, "abc,def", 2, date, date, new[] { new object[] { 2.0, -3.5 }, new object[] { 3.0, 4.5 } } }; AssertWriter(arff, arffWriter => { arffWriter.WriteRelationName("relationName"); arffWriter.WriteAttribute(new ArffAttribute("a1", ArffAttributeType.Numeric)); arffWriter.WriteAttribute(new ArffAttribute("a2", ArffAttributeType.String)); arffWriter.WriteAttribute(new ArffAttribute("a3", ArffAttributeType.Nominal("v1", "v2", "v3"))); arffWriter.WriteAttribute(new ArffAttribute("a4", ArffAttributeType.Date())); arffWriter.WriteAttribute(new ArffAttribute("a5", ArffAttributeType.Date("hh:mm:ss"))); arffWriter.WriteAttribute(new ArffAttribute("a6", ArffAttributeType.Relational( new ArffAttribute("a7", ArffAttributeType.Numeric), new ArffAttribute("a8", ArffAttributeType.Numeric)))); arffWriter.WriteInstance(instance); }); }