Tutorials Code: Source Code for Tutorial 3

From DSL

Jump to: navigation, search
  #include <iostream>
  #include "smilearn.h"
  
  using namespace std;
  
  void PrintDataset(const DSL_dataset &d)
  {
  // The code below shows how to access crucial information form
  // a data set. 
  int v,r;
  cout << " ===================" << endl;
  cout << " -- variable info --" << endl;
  cout << "number of variables = " << d.NumVariables() << endl;
  for (v=0;v<d.NumVariables();v++)
     {
  DSL_variableInfo vi;
  d.GetVariableInfo(v,vi);
  cout << " Variable " << v << endl;
  cout << "\tid: " << vi.id << endl; 
  cout << "\t"; 
  if (vi.useInt) 
  cout << "is discrete";
  else
  cout << "is continuous";
  cout << endl;
  cout << "\tMissing element value: ";
  if (vi.useInt)
  {  
  cout << vi.missingValue.i << endl;
  cout << "\tState names: ";
  for (unsigned s=0;s<vi.stateNames.size();s++)
  cout << vi.stateNames[s] << " ";
  cout << endl;
  }
  else
  cout << vi.missingValue.f << endl;
  }
  
  cout << " -- data records --" << endl;
  cout << "number of records = " << d.NumRecords() << endl;
  for (r=0;r<d.NumRecords();r++)
  {
  for (v=0;v<d.NumVariables();v++)
  {
  if (d.IsMissing(v,r))
  cout << "*";
  else
  {
  if (d.IsDiscrete(v))
  cout << d.At(v,r).i;
  else
  cout << d.At(v,r).f;
  }
  cout << "\t" ;
  }
  cout << endl;
  }
  cout << endl;
  }
     
  void Discretization()
  {
  DSL_dataset d;
  vector<float> x;
  x.push_back(12.3f);
  x.push_back(11.3f);
  x.push_back(2.1f);
  x.push_back(1.3f);
  x.push_back(6.3f);
  x.push_back(0.3f);
  x.push_back(7.3f);
  x.push_back(9.3f);
  
  d.AddFloatVar("var-name", &x);
  PrintDataset(d);
  cout << endl;
  
  DSL_discretizer disc(d.GetVariableData(0));
  disc.Discretize(3,DSL_discretizer::MethodType::Hierarch);
  
  cout << "Bin edges: " << endl;
  vector<double> be = disc.GetBinEdges();
  unsigned i;
  for (i=0;i<be.size();i++)
  cout << be[i] << " ";
  cout << endl << endl;
  
  cout << "Discretized values: " << endl;
  vector<int> result;
  result = disc.GetDiscretized();
  for (i=0;i<result.size();i++)
  cout << result[i] << " ";
  cout << endl;
  }
  
  
  int main()
  {
  Discretization();
  }
  
  
  /*
  ===================
  -- variable info --
  number of variables = 1
  Variable 0
  id:
  is continuous
  Missing element value: -1.#IND
  -- data records --
  number of records = 8
  12.3
  11.3
  2.1
  1.3
  6.3
  0.3
  7.3
  9.3
  Bin edges:
  0.3 4.2 10.3 12.3
  Discretized values:
  2 2 0 0 1 0 1 1
  */
Personal tools