Package: density_forest
Density ForestThis library was developed within an EPFL Master Project, Spring Semester 2018.GitHub repository:https://github.com/CyrilWendl/SIE-Master📖 Usage of theDensityForestclass:Fitting a Density ForestSuppose you have your training dataX_trainand test dataX_test, in[N, D]withNdata points inDdimensions:fromdensity_forest.density_forestimportDensityForestclf_df=DensityForest(**params)# create new class instance, put hyperparameters hereclf_df.fit(X_train)# fit to a training setconf=clf_df.decision_function(X_test)# get confidence values for test setoutliers=clf_df.predict(X_test)# predict whether a point is an outlier (-1 for outliers 1, for inliers)Hyperparameters are documented in the docstring. To find the optimal hyperparameters, consider the section below.Finding HyperparametersTo find the optimal hyperparameters, use theParameterSearchfromhelpers.cross_validator, which allows CV, and hyperparameter search.fromhelpers.cross_validatorimportParameterSearch# define hyperparameters to testtuned_params=[{'max_depth':[2,3,4],'n_trees':[10,20]}]# optionally add non-default arguments as single-element arraysdefault_params=[{'verbose':0,...}]# other default parameters# do parameter searchps=ParameterSearch(DensityForest,tuned_parameters,X_train,X_train_all,y_true_tr,f_scorer,n_iter=2,verbosity=0,n_jobs=1,default_params=default_params)ps.fit()# get model with the best parameters, as aboveclf_df=DensityForest(**ps.best_params,**default_params)# create new class instance with best hyperparameters...# continue as aboveCheck the docstrings for more detailed documentation af theParameterSearchclass.🗂 File Structure👾 CodeAll libraries for density forests, helper libraries for semantic segmentation and for baselines.density_forest/Package for implementation of Decision Trees, Random Forests, Density Trees and Density Forestscreate_data.py: functions for generating labelled and unlabelled datadecision_tree.py: data structure for decision tree nodesdecision_tree_create.py: functions for generating decision treesdecision_tree_traverse.py: functions for traversing a decision tree and predicting labelsdensity_forest.py: functions for creating density forestsdensity_tree.py: data struture for density tree nodesdensity_tree_create.py: functions for generating a density treedensity_tree_traverse.py: functions for descending a density tree and retrieving its cluster parametershelper.py: various helper functionsrandom_forests.py: functions for creating random forestshelpers/:General helpers library for semantic segmentationdata_augment.py: custom data augmentation methods applied to both the image and the ground truthdata_loader.py: PyTorch data loader for Zurich datasethelpers.py: functions for importing, cropping, padding images and other related image tranformationsparameter_search.py: functions for finding optimal hyperparameters for Density Forest, OC-SVM and GMM (explained above)plots.py:  Generic plotter functions for labelled and unlabelled 2D and 3D plots, used for t-SNE and PCA plotsbaselines/:Helper functions for confidence estimation baselines MSR, margin, entropy and MC-Dropoutkeras_helpers/Helper functions for Kerashelpers.py: get activationscallbacks.py: callbacks to be evaluated after each epochunet.py: UNET model for training of network on Zurich dataset🗾 Visualizationsdensity_forest/:Visualizations of basic decision tree and density treeDecision Forest.ipynb: Decision Trees and Random Forest on randomly generated labelled dataDensity Forest.ipynb: Density Trees on randomly generated unlabelled data🎓 Supervisors:Prof. Devis Tuia, University of WageningenDiego Marcos González, University of WageningenProf. François Golay, EPFLCyril Wendl, 2018