quickstartTutorial.cpp
Go to the documentation of this file.
1 #include <shark/Data/Csv.h>
3 using namespace shark;
4 
5 
6 #include <iostream>
7 using namespace std;
8 
9 
10 int main(int argc, char **argv){
11  //create a Dataset from the file "quickstartData"
12  if(argc < 2) {
13  cerr << "usage: " << argv[0] << " (filename)" << endl;
14  exit(EXIT_FAILURE);
15  }
16 
18  try {
19  importCSV(data, argv[1], LAST_COLUMN, ' ');
20  }
21  catch (...) {
22  cerr << "unable to read data from file " << argv[1] << endl;
23  exit(EXIT_FAILURE);
24  }
25 
26  //create a test and training partition of the data
27  ClassificationDataset test = splitAtElement(data,static_cast<std::size_t>(0.8*data.numberOfElements()));
28 
29  //create a classifier for the problem
30  LinearClassifier<> classifier;
31  //create the lda trainer
32  LDA lda;
33  //train the classifier using the training portion of the Data
34  lda.train(classifier,data);
35 
36 
37  //now use the test data to evaluate the model
38  //loop over all points of the test set
39  //be aware that in this example a single point consists of an input and a label
40  //this code here is just for illustration purposes
41  unsigned int correct = 0;
42  BOOST_FOREACH(ClassificationDataset::element_reference point, test.elements()){
43  unsigned int result = classifier(point.input);
44  if (result == point.label){
45  correct++;
46  }
47  }
48 
49  //print results
50  cout << "RESULTS: " << endl;
51  cout << "========\n" << endl;
52  cout << "test data size: " << test.numberOfElements() << endl;
53  cout << "correct classification: "<< correct << endl;
54  cout << "error rate: " << 1.0 - double(correct)/test.numberOfElements() << endl;
55 }