... | ... | @@ -8,7 +8,34 @@ Here you can find documentaion on the used Datatypes, a detailed documentation f |
|
|
|
|
|
# **_Quickstart_**
|
|
|
|
|
|
## Todo
|
|
|
How to get the project running:
|
|
|
|
|
|
1. Clone the project onto your system
|
|
|
2. Have MLpacks system Version installed
|
|
|
3. Have SICStus prolog installed (at least 4.7.1)
|
|
|
4. Have Ensmallen C++ Libary installed
|
|
|
|
|
|
(Required by the Methods Linear_SVM, LMNN, Logistic_regression and NCA)
|
|
|
5. Change the path Variable in the root folder Makefile to your absolute path to the SICStus splfr tool
|
|
|
6. Run the root folder Makefile
|
|
|
|
|
|
After that you can use each Method by loading their module with SICStus e.g.
|
|
|
|
|
|
```prolog
|
|
|
:- use_module('path/to/.../src/methods/dbscan/dbscan.pl').
|
|
|
```
|
|
|
|
|
|
If you want to edit the Project then the steps are almost the same except you should also install the Eclipse IDE SICStus integration Spider.
|
|
|
|
|
|
Since it makes writing and running the prolog Code easier.
|
|
|
|
|
|
To test all methods there is a test_all.pl file in the root directory that you can compile with SICStus and then call :
|
|
|
|
|
|
```prolog
|
|
|
run_tests.
|
|
|
```
|
|
|
|
|
|
Just make sure the SICStus Toplevel is the prolog-mlpack-libary root directory. (If not it will cause the predicate open/3, for opening files, to not find the iris2.csv)
|
|
|
|
|
|
# **_Data Types_**
|
|
|
|
... | ... | @@ -26,33 +53,33 @@ To connect mlpack and SICStus prolog i used the c interface of SICStus which can |
|
|
|
|
|
## Data Types
|
|
|
|
|
|
* **_integer_**
|
|
|
* **_Integer_**
|
|
|
|
|
|
are the normal numbers 1,2,3...
|
|
|
|
|
|
c/c++ : _SP_integer_
|
|
|
* **_float_**
|
|
|
* **_Float_**
|
|
|
|
|
|
are the numbers like 0.0, 1.2, 5.7...
|
|
|
|
|
|
full definition prolog : float_32 shortend to float32 since this has the correct Byte size for its counter part double
|
|
|
|
|
|
c/c++ : _double_
|
|
|
* **_string_**
|
|
|
* **_String_**
|
|
|
|
|
|
are just atoms like: word, hello, nice7...
|
|
|
|
|
|
c/c++ : _char const \*_
|
|
|
* **_integer(bool)_**
|
|
|
* **_Integer(bool)_**
|
|
|
|
|
|
there are no bool atoms in Prolog that could translate to bool in c, so i chose integer numbers as replacement with 1 = true and 0(or any other int number) = false
|
|
|
|
|
|
c/c++ : _SP_integer (1)true, (0)false_
|
|
|
* **_matrix_**
|
|
|
* **_Matrix_**
|
|
|
|
|
|
is defined a just a long list/vector where you specify its row numbers
|
|
|
|
|
|
Internally it converts a normal prolog list like \[1, 2, 3\] to a float_array with the help of some of the predicates in helper.pl.
|
|
|
Internally it converts a normal prolog list like \[1, 2, 3\] to a float_array with the help of some of the predicates in helper.pl.
|
|
|
|
|
|
To be then able to convert it into a c++ array, with the c Interface.
|
|
|
|
... | ... | @@ -63,7 +90,7 @@ To connect mlpack and SICStus prolog i used the c interface of SICStus which can |
|
|
output :
|
|
|
* prolog : _\[\[1,2,3\],\[1,2,3\],...\], DataDimensionality_(Lenght of each DataPoint)
|
|
|
* c/c++ : _float \*\*array, SP_integer \*colums, SP_integer \*rows_
|
|
|
* **_vector_**
|
|
|
* **_Vector_**
|
|
|
|
|
|
When inputing or recieving a vector you just get a normal Prolog List.
|
|
|
|
... | ... | |