Exemple #1
0
        public static void DoDataMining()
        {
            string path = @"Transactions.txt";

            string[]      records        = File.ReadAllLines(path);
            List <string> referenceItems = new List <string>
            {
                "kawa", "mleko", "cukier",
                "orzechy", "jajka", "chleb",
                "maslo", "miod", "platki", "ser"
            };
            TransactionSet <string> transactions = new TransactionSet <string>(referenceItems);
            List <string>           tempList     = new List <string>();

            foreach (var record in records)
            {
                string[] fields = record.Split('\t');
                foreach (var field in fields)
                {
                    tempList.Add(field);
                }
                transactions.Add(tempList);
                tempList.Clear();
            }

            Console.WriteLine("Cwiczenie 2: Eksploracja danych");
            int    choice;
            string line = "";

            do
            {
                Printers.ShowDataMiningMenu();
                line = Console.ReadLine();
                Console.Clear();
                Int32.TryParse(line, out choice);
                switch (choice)
                {
                case 1:
                    transactions.Print();
                    break;

                case 2:
                    foreach (var item in referenceItems)
                    {
                        Console.WriteLine("Przedmiot: {0,10} | {1:P2}", item, transactions.Support(item));
                    }
                    break;

                case 3:
                    double thold;
                    Console.Write("Próg (ułamek ','): ");
                    Double.TryParse(Console.ReadLine(), out thold);
                    var frequentELements = transactions.Frequent(thold);
                    foreach (var item in frequentELements)
                    {
                        Console.WriteLine("Przedmiot: {0,10} | {1:P2}", item, transactions.Support(item));
                    }
                    break;

                case 4:
                    Console.Write("Przedmiot 1: ");
                    string item1 = Console.ReadLine();
                    Console.Write("Przedmiot 2: ");
                    string item2  = Console.ReadLine();
                    double orCond = transactions.ConditionSupportOr(item1, item2);
                    Console.WriteLine("Przedmiot 1: {0}, Przedmiot 2: {1}, Wsparcie warunkowe: {2:P2}", item1, item2, orCond);
                    break;

                case 5:
                    Console.Write("Przedmiot 1: ");
                    item1 = Console.ReadLine();
                    Console.Write("Przedmiot 2: ");
                    item2 = Console.ReadLine();
                    Console.WriteLine("{0} -> {1} {2:P2}", item1, item2, transactions.ConditionConfidence(item1, item2));
                    break;

                case 6:
                    Console.Write("Próg (ułamek ','): ");
                    Double.TryParse(Console.ReadLine(), out thold);
                    foreach (var it1 in referenceItems)
                    {
                        foreach (var it2 in referenceItems)
                        {
                            if (it1 == it2)
                            {
                                continue;
                            }
                            else
                            {
                                double or   = transactions.ConditionSupportOr(it1, it2);
                                double conf = transactions.ConditionConfidence(it1, it2);
                                if (or >= thold && conf >= thold)
                                {
                                    Console.WriteLine("{0} -> {1} ({2:P2},{3:P2})", it1, it2, or, conf);
                                }
                            }
                        }
                    }
                    break;

                case 7:
                    var EquivalenceClass = transactions.EquivalenceClassTransformation();
                    foreach (var eq in EquivalenceClass.Select((value, index) => new { value, index }))
                    {
                        Console.Write("\n{0,10}\t|", transactions.ReferenceListOfItems[eq.index]);
                        foreach (var e in eq.value)
                        {
                            Console.Write("\t{0}\t|", e);
                        }
                    }
                    Console.WriteLine();
                    break;

                default:
                    break;
                }
                if (line == "q")
                {
                    Environment.Exit(0);
                }
            } while (!String.IsNullOrWhiteSpace(line));
        }