From DSL
#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
*/