Facebook
From sss, 4 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 128
  1.  public delegate double Metryka(Obiekt x, Obiekt y);
  2.         public static double Klasyfikacja(List<Obiekt> OB, Obiekt nowy, int metr, int knn){
  3.             List<double> KeyList = new List<double>();
  4.             Dictionary<double, double> dictionary = new Dictionary<double, double>();
  5.  
  6.             foreach (Obiekt POB in OB){
  7.                 if (KeyList.IndexOf(POB.klasa) == -1)
  8.                     KeyList.Add(POB.klasa);
  9.             }
  10.             Metryka metryka = new Metryka(Metryki.Logarytmiczna);
  11.             if(metr == 1) metryka = new Metryka(Metryki.Logarytmiczna);
  12.             if (metr == 2) metryka = new Metryka(Metryki.Manhattan);
  13.             if (metr == 3) metryka = new Metryka(Metryki.Czybyczewa);
  14.            
  15.             double wynik = 0;
  16.             double value = -1;
  17.  
  18.             foreach (double key in KeyList)
  19.             {
  20.                 double tmp = 0;
  21.                 List<double> doubleList = new List<double>();
  22.                 foreach (Obiekt x in OB)
  23.                 {
  24.                     if (x.klasa == key && x != nowy)
  25.                         doubleList.Add(metryka(x, nowy));
  26.                 }
  27.                 doubleList.Sort();
  28.                 for (int index = 0; index < knn; ++index)
  29.                     tmp += doubleList[index];
  30.                 dictionary.Add(key, tmp);
  31.             }
  32.             foreach (KeyValuePair<double, double> keyValuePair in dictionary)
  33.             {
  34.                 double tmp = -1;
  35.                 if (value == -1)
  36.                 {
  37.                     value = keyValuePair.Value;
  38.                     wynik = keyValuePair.Key;
  39.                 }
  40.                 else if (keyValuePair.Value == value)
  41.                     tmp = 1;
  42.                 else if (keyValuePair.Value < value)
  43.                 {
  44.                     value = keyValuePair.Value;
  45.                     wynik = keyValuePair.Key;
  46.                     tmp = -1;
  47.                 }
  48.             }
  49.             return wynik;