Burada KNN algoritması ile ilgili bilgi ve formül vardır. Aşağıdaki kodlar formülün koda dökülmüş halidir. C# ile yazılmışlardır.
Aşağıdaki fonksiyon iki vektörü karşılaştırır, siz bu fonksiyonu bir for döngüsü içinde kullanarak birden fazla vektörü de karşılaştırabilirsiniz, elde edeceğiniz benzerlik oranlarından en yükseği size en benzer iki vektörün hangisi olacağını verecektir.
Umarım faydalı olur..
class KNN
{
public float knnBenzerlikHes(float[] gelenMailVectoru, float[] q)
{
float benzerlikOranı = 0;
float toplamUst = 0, toplamAlt1 = 0, toplamAlt2 = 0;
for (int i = 0; i < gelenMailVectoru.Length; i++)
{
toplamUst += float.Parse(gelenMailVectoru[i].ToString()) * float.Parse(q[i].ToString());
toplamAlt1 += float.Parse(gelenMailVectoru[i].ToString()) * float.Parse(gelenMailVectoru[i].ToString());
toplamAlt2 += float.Parse(q[i].ToString()) * float.Parse(q[i].ToString());
}
benzerlikOranı = toplamUst / (float)(Math.Sqrt(toplamAlt1) * Math.Sqrt(toplamAlt2));
return benzerlikOranı; //0 ile 1 arasında bir değer döner. 1'e ne kadar yakınsa benzerlik o kadar fazladır.
}
}