Skip to content

Instantly share code, notes, and snippets.

@cihanyakar
Created February 7, 2019 19:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cihanyakar/8fae9a24ac5b7501974950a12efce2da to your computer and use it in GitHub Desktop.
Save cihanyakar/8fae9a24ac5b7501974950a12efce2da to your computer and use it in GitHub Desktop.
public static double Entropi<T>(IEnumerable<T> data)
{
var sayac = new Dictionary<T, int>();
int i;
using (var sayici = data.GetEnumerator())
{
i = 0;
while (sayici.MoveNext())
{
if (sayac.ContainsKey(sayici.Current))
{
sayac[sayici.Current]++;
}
else
{
sayac.Add(sayici.Current, 1);
}
i++;
}
}
var sonuc = 0D;
using (var sayici = sayac.GetEnumerator())
{
while (sayici.MoveNext())
{
var oran = (sayici.Current.Value / (double)i);
sonuc += oran * Math.Log(oran, 2);
}
}
return -sonuc;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment