public static void Main(string[] args) { CollisionEntry[] collisions = CollisionEntry.ReadCollisionsFromFile(args[0]); RulesGenerator gen = new RulesGenerator(args[1]); C4p5 alg = new C4p5(collisions.ToList(), gen.CurrentRules); if (args.Length == 4) { if (args[3] == "-o") { alg.LearnOrTree(alg.Root); alg.PrintRules(args[2]); return; } else { C4p5.SetHeaderToPredict(args[3]); } } Node root = alg.Root; C4p5.MaxDepth = 4; C4p5.MinDivSize = 10000; alg.Learn(); alg.PrintRules(args[2]); }
public static void WriteCollisionToFile(CollisionEntry entry, BinaryWriter writer) { for (int i = 0; i < entry.vals.Length; i++) { writer.Write(entry.vals[i]); } }
public static CollisionEntry ReadCollisionFromFile(BinaryReader reader, int numOfFields) { byte[] vals = new byte[numOfFields]; for (int i = 0; i < vals.Length; i++) { vals[i] = reader.ReadByte(); } CollisionEntry c = new CollisionEntry(vals); return(c); }
public static CollisionEntry[] ReadCollisionsFromFile(string fileName) { Console.Write("Reading "); BinaryReader reader = new BinaryReader(File.OpenRead(fileName)); int numCollisions = reader.ReadInt32(); Console.WriteLine(numCollisions + " from File"); int length = reader.ReadInt32(); CollisionEntry.headers = new string[length]; CollisionEntry[] retVal = new CollisionEntry[numCollisions]; for (int i = 0; i < length; i++) { headers[i] = reader.ReadString(); } for (int i = 0; i < numCollisions; i++) { retVal[i] = ReadCollisionFromFile(reader, length); } reader.Close(); return(retVal); }
static void Main(string[] args) { StreamReader reader = new StreamReader(args[0]); string line = reader.ReadLine(); //Set up our string ids to be the ids of the file CollisionEntry.headers = removeLast(line.Split(',')); //Create a list of entries for our file List <CollisionEntry> collisions = new List <CollisionEntry>(); while ((line = reader.ReadLine()) != null && line != string.Empty) { string[] stringCode = removeLast(line.Split(',')); //set up our int array for the collision entry byte[] intCode = new byte[stringCode.Length]; //For each string value in this collisions for (int i = 0; i < stringCode.Length; i++) { //Custom number for the year :P if (i == 0) { if (byte.TryParse(stringCode[i].Substring(2), out byte result)) { intCode[0] = result; } else { if (stringCode[i].Contains("U")) { intCode[i] = 255; } if (stringCode[i].Contains("X")) { intCode[i] = 254; } if (stringCode[i].Contains("Q")) { intCode[i] = 253; } if (stringCode[i].Contains("N")) { intCode[i] = 252; } } } if (byte.TryParse(stringCode[i], out byte resCode)) { intCode[i] = resCode; } else { if (stringCode[i].Contains("U")) { intCode[i] = 255; } if (stringCode[i].Contains("X")) { intCode[i] = 254; } if (stringCode[i].Contains("Q")) { intCode[i] = 253; } if (stringCode[i].Contains("N")) { intCode[i] = 252; } if (stringCode[i].Contains("M")) { intCode[i] = 0; } if (stringCode[i].Contains("F")) { intCode[i] = 1; } } } CollisionEntry toBeAdded = new CollisionEntry(intCode); collisions.Add(toBeAdded); } CollisionEntry.WriteCollisionsToFile(collisions); }