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); }
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); }