<commit_before>oKDE-Java
=========

This is a Java implementation of the oKDE algorithm proposed by <NAME>
([oKDE](http://www.vicos.si/Research/Multivariate_Online_Kernel_Density_Estimation)).
This project is part of my master's thesis that uses the oKDE algorithm to estimate
a model of human mobility and exploits the estimated model to predict future locations
of human individuals (*Location Prediction Based on Mobility Patterns in Location Histories*:
[git repository](https://github.com/joluet/prepos)).

*******************************

1. [oKDE Algorithm](#okde)
2. [Build Instructions](#build)
3. [Quickstart](#start)
4. [External Libraries Used](#ext_libs)

*******************************


<a name="okde">
## oKDE Algorithm

Given a set of n-dimensional samples, this algorithm estimates 
the distribution of the samples using kernel density estimation.
The output model is a *Mixture of Gaussians*.
Moreover, the model is compressed and can be updated as new samples arrive.

The basic principle of the oKDE algorithm is summarized by this graphic:

![oKDE algorithm](oKDE.png "")

For more details see ([oKDE](http://www.vicos.si/Research/Multivariate_Online_Kernel_Density_Estimation)).



<a name="build">
## Build Instructions

Just execute ant in project root to compile the project:

**$ ant**

Afterwards, the packed jar file can be found in the *dist*-folder.

To compile the simple example, run ant with target *example* in project root:

**$ ant example**



<a name="start">
## Quickstart

The file *src/de/tuhh/luethke/Example.java* contains a simple example that uses oKDE-Java
to estimate a distribution of randomly generated samples. This example illustrates the basic usage
of oKDE-java.

To use oKDE-Java in another project just include the jar file (see above [how to build](#build)).



<a name="ext_libs">
## External Libraries Used

The following libraries are used in oKDE-Java:
 *  [EJML](https://code.google.com/p/efficient-java-matrix-library/),
 	a linear algebra library for manipulating dense matrices
 *  [JMathPlot](https://code.google.com/p/jmathplot/),
 	a library to draw math plots, used only in the example<commit_msg>Removed unused lib from readme.<commit_after>oKDE-Java
=========

This is a Java implementation of the oKDE algorithm proposed by <NAME>
([oKDE](http://www.vicos.si/Research/Multivariate_Online_Kernel_Density_Estimation)).
This project is part of my master's thesis that uses the oKDE algorithm to estimate
a model of human mobility and exploits the estimated model to predict future locations
of human individuals (*Location Prediction Based on Mobility Patterns in Location Histories*:
[git repository](https://github.com/joluet/prepos)).

*******************************

1. [oKDE Algorithm](#okde)
2. [Build Instructions](#build)
3. [Quickstart](#start)
4. [External Libraries Used](#ext_libs)

*******************************


<a name="okde">
## oKDE Algorithm

Given a set of n-dimensional samples, this algorithm estimates 
the distribution of the samples using kernel density estimation.
The output model is a *Mixture of Gaussians*.
Moreover, the model is compressed and can be updated as new samples arrive.

The basic principle of the oKDE algorithm is summarized by this graphic:

![oKDE algorithm](oKDE.png "")

For more details see ([oKDE](http://www.vicos.si/Research/Multivariate_Online_Kernel_Density_Estimation)).



<a name="build">
## Build Instructions

Just execute ant in project root to compile the project:

**$ ant**

Afterwards, the packed jar file can be found in the *dist*-folder.

To compile the simple example, run ant with target *example* in project root:

**$ ant example**



<a name="start">
## Quickstart

The file *src/de/tuhh/luethke/Example.java* contains a simple example that uses oKDE-Java
to estimate a distribution of randomly generated samples. This example illustrates the basic usage
of oKDE-java.

To use oKDE-Java in another project just include the jar file (see above [how to build](#build)).



<a name="ext_libs">
## External Libraries Used

The following libraries are used in oKDE-Java:
 *  [EJML](https://code.google.com/p/efficient-java-matrix-library/),
 	a linear algebra library for manipulating dense matrices
{'fraction_non_alphanumeric': 0.12169811320754717, 'fraction_numerical': 0.0018867924528301887, 'mean_word_length': 5.0759312320916905, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 5, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1000996', 'n_tokens_mistral': 1253, 'n_tokens_neox': 1171, 'n_words': 491}