Guest User

Untitled

a guest
Jul 16th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. #include <svm.h>
  2.  
  3. /*
  4. Veri dosyasini okuyup SVM Problem donduren fonksiyon
  5. */
  6. svm_problem*
  7. parse_train_data(std::string filename)
  8. {
  9. svm_problem *ret = new svm_problem;
  10. // Uc alan var l, y, ve x
  11. // l: Length: Veri sayimiz
  12. // y: Label: etiketler
  13. // x: X: egitim verisi
  14. // Dosyayi acip alanlari oku
  15. std::ifstream inf(filename);
  16. std::string line;
  17. std::getline(inf, line); // ilk satiri yoksay
  18. // Ilk olarak X ve y'leri vektor icinde tutalim.
  19. // Veri kumesi icinde kac veri var bilmiyoruz.
  20. std::vector<svm_node*> table;
  21. std::vector<double> labels;
  22. int counter = 0; // Bu veri sayisini tutacak
  23. while (std::getline(inf, line))
  24. {
  25. counter += 1; // Yeni satir
  26. std::vector<std::string> tokens = split(line.c_str(), ',');
  27. // ',' karakterinden bol
  28. // tokens.size() veri kumesinin sutun sayisini tutuyor
  29. // Yani tokens.size() - 1 kadar X sutunu var
  30.  
  31. // LibSVM formati eger bir satirda 0 olmayan N degisken varsa
  32. // N+1 adet alan istiyor. Buna yazida degindik.
  33. // yani tokens.size() -1 +1
  34. svm_node* data = new svm_node[tokens.size()]; // Yeni bir node(Satir) olustur
  35. for (int i = 0; i < tokens.size() - 1; i++)
  36. {
  37. data[i].index = i;
  38. data[i].value = std::stoi(tokens[i]);
  39. }
  40. data[tokens.size()].index = -1; // N+1'in sebebi sonda manasiz bir -1 istiyor ki bu satirin bittigi anlasilsin.
  41. table.push_back(data);
  42. labels.push_back(std::stoi(tokens[tokens.size() -1 ])); // Y'yi ekle
  43. }
  44. ret->l = counter; // satir sayisini ata
  45. ret->y = new double[ret->l]; // y icin alan al
  46. ret->x = new svm_node*[ret->l]; // x icin alan al
  47. for(int i = 0;i < ret->l;i++)
  48. {
  49. ret->y[i] = labels[i]; // vektorden verileri LibSVM formatina aktar
  50. ret->x[i] = table[i];
  51. }
  52. inf.close();
  53. return ret;
  54. }
Add Comment
Please, Sign In to add comment