Beispiel #1
0
        public static double Entropia(string[] wartAtrybutu)
        {
            Dictionary <string, int> tabWystapien = Metody.Wystapienia(wartAtrybutu);
            double p = 0.0;

            foreach (int iloscWystapien in tabWystapien.Values)
            {
                p += (iloscWystapien / (double)wartAtrybutu.Length)
                     * Math.Log(iloscWystapien / (double)wartAtrybutu.Length, 2);
            }
            return(-p);
        }
Beispiel #2
0
        public static double Info2(string[,] tablica, int nrKolumny)
        {
            double suma = 0;

            string[] wartAtrybutu = Metody.Kolumna(tablica, nrKolumny);
            Dictionary <string, int> tabWystapien = Metody.Wystapienia(wartAtrybutu);

            for (int i = 0; i < tabWystapien.Count; i++)
            {
                List <string> podzial = new List <string>();
                for (int j = 0; j < wartAtrybutu.Length; j++)
                {
                    if (wartAtrybutu[j] == tabWystapien.ElementAt(i).Key)
                    {
                        podzial.Add(tablica[j, tablica.GetLength(1) - 1]);
                    }
                }
                suma += ((double)tabWystapien.ElementAt(i).Value / wartAtrybutu.Length) * Entropia(podzial.ToArray());
            }
            return(suma);
        }