public static void Main(string[] args) { List <string> puredatas = ReadDatas(); // verileri okuttuk List <RestoranAttiribute> restorans2 = SplitData(puredatas); // her bir elemanı,bir restoranı ve onun ozellıklerının puanlarını tutan liste. Suan restorans2nin icinde 130 restoran nesnesi var RestoranAttiribute restoranAttiribute2 = ConsoleOperations(); double[] distances = CosinusSimilarity(restorans2, restoranAttiribute2); int k = GetK(); bool isOkey = LastOperation(restorans2, distances, k); while (isOkey == true) { List <string> puredatas2 = ReadDatas(); // verileri okuttuk List <RestoranAttiribute> restorans3 = SplitData(puredatas2); // her bir elemanı,bir restoranı ve onun ozellıklerının puanlarını tutan liste. Suan restorans2nin icinde 130 restoran nesnesi var RestoranAttiribute restoranAttiribute3 = ConsoleOperations(); double[] distances2 = CosinusSimilarity(restorans3, restoranAttiribute3); int k2 = GetK(); bool isOkey2 = LastOperation(restorans3, distances2, k2); } // sadece su yanlıs gırdıgınde devam etme sorununu cozmek kaldı }
public static double[] CosinusSimilarity(List <RestoranAttiribute> restorans, RestoranAttiribute restoranAttiribute) { double[] similarityarray = new double[130]; // En son hesaplanan benzerlik değerlerini barındıracak array. double[] productsofAiBi = new double[130]; // PAY double[] squaresproduct = new double[130]; // PAYDA double sumofpay = 0; double squareofAi = 0, squareofBi = 0; int counter = 0; while (counter < restorans.Count) { if (restorans[counter].Ortam != -1) { sumofpay += restorans[counter].Ortam * restoranAttiribute.Ortam; squareofAi += restorans[counter].Ortam * restorans[counter].Ortam; squareofBi += restoranAttiribute.Ortam * restoranAttiribute.Ortam; } if (restorans[counter].Ortam_temizligi != -1) { sumofpay += restorans[counter].Ortam_temizligi * restoranAttiribute.Ortam_temizligi; squareofAi += restorans[counter].Ortam_temizligi * restorans[counter].Ortam_temizligi; squareofBi += restoranAttiribute.Ortam_temizligi * restoranAttiribute.Ortam_temizligi; } if (restorans[counter].Yemek_kalitesi != -1) { sumofpay += restorans[counter].Yemek_kalitesi * restoranAttiribute.Yemek_kalitesi; squareofAi += restorans[counter].Yemek_kalitesi * restorans[counter].Yemek_kalitesi; squareofBi += restoranAttiribute.Yemek_kalitesi * restoranAttiribute.Yemek_kalitesi; } if (restorans[counter].Hizmet_kalitesi != -1) { sumofpay += restorans[counter].Hizmet_kalitesi * restoranAttiribute.Hizmet_kalitesi; squareofAi += restorans[counter].Hizmet_kalitesi * restorans[counter].Hizmet_kalitesi; squareofBi += restoranAttiribute.Hizmet_kalitesi * restoranAttiribute.Hizmet_kalitesi; } if (restorans[counter].Fiyat_uygunlugu != -1) { sumofpay += restorans[counter].Fiyat_uygunlugu * restoranAttiribute.Fiyat_uygunlugu; squareofAi += restorans[counter].Fiyat_uygunlugu * restorans[counter].Fiyat_uygunlugu; squareofBi += restoranAttiribute.Fiyat_uygunlugu * restoranAttiribute.Fiyat_uygunlugu; } if (restorans[counter].Ulasim_kolaylıgi != -1) { sumofpay += restorans[counter].Ulasim_kolaylıgi * restoranAttiribute.Ulasim_kolaylıgi; squareofAi += restorans[counter].Ulasim_kolaylıgi * restorans[counter].Ulasim_kolaylıgi; squareofBi += restoranAttiribute.Ulasim_kolaylıgi * restoranAttiribute.Ulasim_kolaylıgi; } if (restorans[counter].Araba_park_olanagi != -1) { sumofpay += restorans[counter].Araba_park_olanagi * restoranAttiribute.Araba_park_olanagi; squareofAi += restorans[counter].Araba_park_olanagi * restorans[counter].Araba_park_olanagi; squareofBi += restoranAttiribute.Araba_park_olanagi * restoranAttiribute.Araba_park_olanagi; } productsofAiBi[counter] = sumofpay; // Counterıncı restoranın pay degeri squaresproduct[counter] = Math.Sqrt(squareofAi) * Math.Sqrt(squareofBi); counter++; sumofpay = 0; squareofAi = 0; squareofBi = 0; } for (int i = 0; i < restorans.Count; i++) { similarityarray[i] = productsofAiBi[i] / squaresproduct[i]; } return(similarityarray); }
public static RestoranAttiribute ConsoleOperations() { int input = 0; string[] kriterler = { "Ortam", "Ortam Temizligi", "Yemek Kalitesi", "Hizmet Kalitesi", "Fiyat Uygunlugu", "Uasım Kolayligi", "Araba Park Olanagi" }; Console.WriteLine("----------Restoran Oneri Sistemine Hosgeldiniz----------"); Console.WriteLine("Simdi Sirasyla Size Uygun Kriter Puanlarini Gireceksiniz"); RestoranAttiribute restoranAttiribute = new RestoranAttiribute(); try { Console.WriteLine("{0}) {1} kriterinin sizin icin onemini 0 - 10 arasinda puanlayin", 1, kriterler[0]); input = Convert.ToInt16(Console.ReadLine()); if (input >= 0 && input <= 10) { restoranAttiribute.Ortam = input; } else { throw new Exception(); } Console.WriteLine("{0}) {1} kriterinin sizin icin onemini 0 - 10 arasinda puanlayin", 2, kriterler[1]); input = Convert.ToInt16(Console.ReadLine()); if (input >= 0 && input <= 10) { restoranAttiribute.Ortam_temizligi = input; } else { throw new Exception(); } Console.WriteLine("{0}) {1} kriterinin sizin icin onemini 0 - 10 arasinda puanlayin", 3, kriterler[2]); input = Convert.ToInt16(Console.ReadLine()); if (input >= 0 && input <= 10) { restoranAttiribute.Yemek_kalitesi = input; } else { throw new Exception(); } Console.WriteLine("{0}) {1} kriterinin sizin icin onemini 0 - 10 arasinda puanlayin", 4, kriterler[3]); input = Convert.ToInt16(Console.ReadLine()); if (input >= 0 && input <= 10) { restoranAttiribute.Hizmet_kalitesi = input; } else { throw new Exception(); } Console.WriteLine("{0}) {1} kriterinin sizin icin onemini 0 - 10 arasinda puanlayin", 5, kriterler[4]); input = Convert.ToInt16(Console.ReadLine()); if (input >= 0 && input <= 10) { restoranAttiribute.Fiyat_uygunlugu = input; } else { throw new Exception(); } Console.WriteLine("{0}) {1} kriterinin sizin icin onemini 0 - 10 arasinda puanlayin", 6, kriterler[5]); input = Convert.ToInt16(Console.ReadLine()); if (input >= 0 && input <= 10) { restoranAttiribute.Ulasim_kolaylıgi = input; } else { throw new Exception(); } Console.WriteLine("{0}) {1} kriterinin sizin icin onemini 0 - 10 arasinda puanlayin", 7, kriterler[6]); input = Convert.ToInt16(Console.ReadLine()); if (input >= 0 && input <= 10) { restoranAttiribute.Araba_park_olanagi = input; } else { throw new Exception(); } } catch (Exception) { Console.WriteLine("Hatali giris yaptiniz !! Lutfen 0-10 arasi sayisal bir deger girerek tekrar bastan baslayin."); } return(restoranAttiribute); }