Esempio n. 1
0
        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]);
        }
Esempio n. 2
0
 public static void WriteCollisionToFile(CollisionEntry entry, BinaryWriter writer)
 {
     for (int i = 0; i < entry.vals.Length; i++)
     {
         writer.Write(entry.vals[i]);
     }
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }