public static void Convert(string inputArffFile, string outputFile) { int lineCount = 0; using (ArffReader reader = new ArffReader(inputArffFile)) { using (var writer = new BinaryWriter(File.Open(outputFile, FileMode.Create))) { var maxAttributeValueCount = reader.Attributes.Max(a => a.NominalValues.Count); Console.WriteLine("Max attribute value count: " + maxAttributeValueCount); if (maxAttributeValueCount > byte.MaxValue) { throw new ArgumentOutOfRangeException("maxAttributeValueCount", "One attribute has more than " + byte.MaxValue + " possible values."); } writer.Write(reader.Attributes.Count); ArffRecord record; while ((record = reader.ReadNextRecord()) != null) { var values = record.Values; for (int i = 0; i < values.Length; i++) { writer.Write((byte)values[i].NominalValueIndex); } ++lineCount; if (lineCount % 1000 == 0 && lineCount > 0) Console.Write(lineCount + " "); } } } Console.WriteLine(); Console.WriteLine("Total records: " + lineCount); }
public static void Convert(string inputArffFile, string outputFile) { int lineCount = 0; using (ArffReader reader = new ArffReader(inputArffFile)) { using (var writer = new BinaryWriter(File.Open(outputFile, FileMode.Create))) { var maxAttributeValueCount = reader.Attributes.Max(a => a.NominalValues.Count); Console.WriteLine("Max attribute value count: " + maxAttributeValueCount); if (maxAttributeValueCount > byte.MaxValue) { throw new ArgumentOutOfRangeException("maxAttributeValueCount", "One attribute has more than " + byte.MaxValue + " possible values."); } writer.Write(reader.Attributes.Count); ArffRecord record; while ((record = reader.ReadNextRecord()) != null) { var values = record.Values; for (int i = 0; i < values.Length; i++) { writer.Write((byte)values[i].NominalValueIndex); } ++lineCount; if (lineCount % 1000 == 0 && lineCount > 0) { Console.Write(lineCount + " "); } } } } Console.WriteLine(); Console.WriteLine("Total records: " + lineCount); }