#include <memory>
#include <exception>
#include <iostream>
#include <cstdlib>
#include <string>
#include <vector>
{
try{
typedef double RETURNTYPE; typedef double DATATYPE; typedef double REALTYPE;
typedef unsigned int IDXTYPE; typedef unsigned int DIMTYPE; typedef short BINTYPE;
typedef std::shared_ptr<FST::Data_Splitter<INTERVALLER,IDXTYPE> > PSPLITTER;
std::cout << "Starting Example 10: Basic Filter-based feature selection..." << std::endl;
PSPLITTER dsp(new SPLITTER5050());
std::shared_ptr<std::vector<PSPLITTER> > splitters(new std::vector<PSPLITTER>);
splitters->push_back(dsp);
std::shared_ptr<DATAACCESSOR> da(new DATAACCESSOR("data/wdbc_30.trn",splitters,dsc));
da->initialize();
da->setSplittingDepth(0);
if(!da->getFirstSplit())
throw FST::fst_error(
"50/50 data split failed.");
std::shared_ptr<SUBSET> sub(new SUBSET(da->getNoOfFeatures())); sub->deselect_all();
std::shared_ptr<FILTERCRIT> crit(new FILTERCRIT);
crit->initialize(da);
std::shared_ptr<EVALUATOR> eval(new EVALUATOR);
std::cout << "Feature selection setup:" << std::endl << *da << std::endl << srch << std::endl << *crit << std::endl << std::endl;
RETURNTYPE critval_train, critval_test;
const DIMTYPE d=7;
std::cout << std::endl << "Search result: " << std::endl << *sub << std::endl << "Criterion value=" << critval_train << std::endl << std::endl;
std::shared_ptr<CLASSIFIERKNN> cknn(new CLASSIFIERKNN); cknn->set_k(3);
da->setSplittingDepth(0);
cknn->train(da,sub);
cknn->test(critval_test,da);
std::cout << "Validated "<<cknn->get_k()<<"-NN accuracy=" << critval_test << std::endl << std::endl;
}
catch(
FST::fst_error &e) {std::cerr<<
"FST ERROR: "<< e.what() <<
", code=" << e.
code() << std::endl;
return 1;}
catch(std::exception &e) {std::cerr<<"non-FST ERROR: "<< e.what() << std::endl; return 1;}
return 0;
}
Implements k-Nearest Neighbor classifier.
Definition classifier_knn.hpp:95
Implements Generalized Mahalanobis distance based on normal (gaussian) model to serve as feature sele...
Definition criterion_normal_gmahalanobis.hpp:107
Implements data access to data cached entirely in memory, read once from a TRN file.
Definition data_accessor_splitting_memTRN.hpp:91
Container to hold list of Data_Interval; implements nested interval reduction.
Definition data_intervaller.hpp:102
Void data scaler, to bypass data normalization.
Definition data_scaler_void.hpp:94
Implements train/test data splitting: first 50% of original data for training, second 50% for testing...
Definition data_splitter_5050.hpp:99
Implements Euclidean (L_2) distance.
Definition distance_euclid.hpp:92
Implements Sequential_Forward_Selection and Sequential_Backward_Selection.
Definition search_seq_sfs.hpp:92
void set_search_direction(const SearchDirection direction)
FORWARD implies SFS, BACKWARD implies SBS (do not change concurrently to running search()).
Definition search_seq_sfs.hpp:118
virtual bool search(const DIMTYPE target_d, RETURNTYPE &result, const PSubset sub, const PCriterion crit, std::ostream &os=std::cout) override
Runs SFS (or SBS) and returns the resulting subset + its criterion value.
Definition search_seq_sfs.hpp:150
Implements standard sequential selection step in sequential search type of methods.
Definition seq_step_straight.hpp:103
Stores the info on currently selected features, enables generating permutations, etc.
Definition subset.hpp:104
FST4 specific error passing class.
Definition error.hpp:61
int code() const
returns the numeric error code supplied at construction (0 if none was given)
Definition error.hpp:67
Implements k-Nearest Neighbor classifier.
Implements Generalized Mahalanobis distance based on normal (gaussian) model to serve as feature sele...
Implements data access to data cached entirely in memory, read once from ARFF files.
Implements data access to data cached entirely in memory, read once from TRN files.
Container to hold a list of Data_Interval; implements nested interval reduction.
Defines interface for data scaling implementations (for use in data accessors).
Void data scaler, to bypass data normalization.
Defines interface for data splitting implementations (for use in data accessors).
Implements train/test data splitting: first 50% of original data for training, second 50% for testing...
int main()
Definition demo10.cpp:132
Implements Euclidean (L_2) distance.
FST4 specific error passing class.
implements Sequential_Forward_Selection and Sequential_Backward_Selection
Implements standard sequential selection step in sequential search type of methods.
Stores the info on currently selected features, enables generating permutations, etc.