Skip to content
Snippets Groups Projects
Commit 703fe7b4 authored by Jakhes's avatar Jakhes
Browse files

Adding decision_tree tests

parent 00d012bb
No related branches found
No related tags found
No related merge requests found
...@@ -37,6 +37,15 @@ void initModel( float *dataMatArr, SP_integer dataMatSize, SP_integer dataMatRow ...@@ -37,6 +37,15 @@ void initModel( float *dataMatArr, SP_integer dataMatSize, SP_integer dataMatRow
// convert the Prolog array to arma::rowvec // convert the Prolog array to arma::rowvec
Row<size_t> labelsVector = convertArrayToVec(labelsArr, labelsArrSize); Row<size_t> labelsVector = convertArrayToVec(labelsArr, labelsArrSize);
try
{
decisionTreeObj = DecisionTree(data, labelsVector, numClasses, minimumLeafSize, minimumGainSplit, maximumDepth);
}
catch(const std::out_of_range& e)
{
raisePrologSystemExeption("Labels Vector is too short or its values are incorrect: should fit into [0,numClasses)!");
return;
}
decisionTreeObj = DecisionTree(data, labelsVector, numClasses, minimumLeafSize, minimumGainSplit, maximumDepth); decisionTreeObj = DecisionTree(data, labelsVector, numClasses, minimumLeafSize, minimumGainSplit, maximumDepth);
} }
...@@ -61,7 +70,15 @@ void classifyPoint( float *pointArr, SP_integer pointArrSize, ...@@ -61,7 +70,15 @@ void classifyPoint( float *pointArr, SP_integer pointArrSize,
vec probsReturnVector; vec probsReturnVector;
try
{
decisionTreeObj.Classify(pointVector, predictReturn, probsReturnVector); decisionTreeObj.Classify(pointVector, predictReturn, probsReturnVector);
}
catch(const std::logic_error& e)
{
raisePrologSystemExeption("Given Point has the wrong Length!");
return;
}
// return prediction value // return prediction value
...@@ -79,26 +96,33 @@ void classifyPoint( float *pointArr, SP_integer pointArrSize, ...@@ -79,26 +96,33 @@ void classifyPoint( float *pointArr, SP_integer pointArrSize,
// description: // description:
void classifyMatrix(float *dataMatArr, SP_integer dataMatSize, SP_integer dataMatRowNum, void classifyMatrix(float *dataMatArr, SP_integer dataMatSize, SP_integer dataMatRowNum,
float **predictArr, SP_integer *predictArrSize, float **predictArr, SP_integer *predictArrSize,
float **probsArr, SP_integer *probsArrSize) float **probsMatArr, SP_integer *probsMatColNum, SP_integer *probsMatRowNum)
{ {
// convert the Prolog array to arma::mat // convert the Prolog array to arma::mat
mat data = convertArrayToMat(dataMatArr, dataMatSize, dataMatRowNum); mat data = convertArrayToMat(dataMatArr, dataMatSize, dataMatRowNum);
// create the ReturnVector // create the ReturnVector
Row< size_t > predictReturnVector; Row< size_t > predictReturnVector;
// create the ReturnMat
// create the ReturnVector mat probsReturnMat;
rowvec probsReturnVector;
decisionTreeObj.Classify(data, predictReturnVector, probsReturnVector); try
{
decisionTreeObj.Classify(data, predictReturnVector, probsReturnMat);
}
catch(const std::logic_error& e)
{
raisePrologSystemExeption(e.what());
return;
}
// return the Vector // return the Vector
returnVectorInformation(predictReturnVector, predictArr, predictArrSize); returnVectorInformation(predictReturnVector, predictArr, predictArrSize);
/// return the Matrix
returnMatrixInformation(probsReturnMat, probsMatArr, probsMatColNum, probsMatRowNum);
// return the Vector
returnVectorInformation(probsReturnVector, probsArr, probsArrSize);
} }
// TODO: // TODO:
...@@ -122,5 +146,15 @@ double train( float *dataMatArr, SP_integer dataMatSize, SP_integer dataMatRow ...@@ -122,5 +146,15 @@ double train( float *dataMatArr, SP_integer dataMatSize, SP_integer dataMatRow
// convert the Prolog array to arma::rowvec // convert the Prolog array to arma::rowvec
Row<size_t> labelsVector = convertArrayToVec(labelsArr, labelsArrSize); Row<size_t> labelsVector = convertArrayToVec(labelsArr, labelsArrSize);
try
{
return decisionTreeObj.Train(data, labelsVector, numClasses, minimumLeafSize, minimumGainSplit, maximumDepth); return decisionTreeObj.Train(data, labelsVector, numClasses, minimumLeafSize, minimumGainSplit, maximumDepth);
} }
catch(const std::invalid_argument& e)
{
raisePrologSystemExeption(e.what());
return 0.0;
}
}
:- module(decision_tree, [ initModel/9, :- module(decision_tree, [ initModel/7,
classifyPoint/5, classifyPoint/3,
classifyMatrix/7, classifyMatrix/5,
train/10]). train/8]).
%% requirements of library(struct) %% requirements of library(struct)
:- load_files(library(str_decl), :- load_files(library(str_decl),
...@@ -20,6 +20,9 @@ ...@@ -20,6 +20,9 @@
%% definitions for the connected function %% definitions for the connected function
foreign(initModel, c, initModelI( +pointer(float_array), +integer, +integer,
+pointer(float_array), +integer,
+integer, +integer, +float32, +integer)).
%% --Input-- %% --Input--
%% mat dataset, %% mat dataset,
%% vec labels, %% vec labels,
...@@ -34,11 +37,20 @@ ...@@ -34,11 +37,20 @@
%% Construct the decision tree on the given data and labels, assuming that the data is all of the numeric type. %% Construct the decision tree on the given data and labels, assuming that the data is all of the numeric type.
%% Setting minimumLeafSize and minimumGainSplit too small may cause the tree to overfit, but setting them too large may cause it to underfit. %% Setting minimumLeafSize and minimumGainSplit too small may cause the tree to overfit, but setting them too large may cause it to underfit.
%% %%
foreign(initModel, c, initModel( +pointer(float_array), +integer, +integer, initModel(DataList, DataRows, LabelsList, NumClasses, MinimumLeafSize, MinimumGainSplit, MaximumDepth) :-
+pointer(float_array), +integer, NumClasses >= 0,
+integer, +integer, +float32, +integer)). MinimumLeafSize > 0,
MinimumGainSplit > 0.0,
MinimumGainSplit < 1.0,
MaximumDepth >= 0,
convert_list_to_float_array(DataList, DataRows, array(Xsize, Xrownum, X)),
convert_list_to_float_array(LabelsList, array(Ysize, Y)),
initModelI(X, Xsize, Xrownum, Y, Ysize, NumClasses, MinimumLeafSize, MinimumGainSplit, MaximumDepth).
foreign(classifyPoint, c, classifyPointI(+pointer(float_array), +integer,
-integer,
-pointer(float_array), -integer)).
%% --Input-- %% --Input--
%% vec point %% vec point
%% %%
...@@ -49,26 +61,36 @@ foreign(initModel, c, initModel( +pointer(float_array), +integer, +intege ...@@ -49,26 +61,36 @@ foreign(initModel, c, initModel( +pointer(float_array), +integer, +intege
%% --Description-- %% --Description--
%% Classify the given point and also return estimates of the probability for each class in the given vector. %% Classify the given point and also return estimates of the probability for each class in the given vector.
%% %%
foreign(classifyPoint, c, classifyPoint(+pointer(float_array), +integer, classifyPoint(DataList, Prediction, AssignList) :-
-integer, convert_list_to_float_array(DataList, array(Xsize, X)),
-pointer(float_array), -integer)). classifyPointI(X, Xsize, Prediction, Y, Ysize),
convert_float_array_to_list(Y, Ysize, AssignList).
foreign(classifyMatrix, c, classifyMatrixI( +pointer(float_array), +integer, +integer,
-pointer(float_array), -integer,
-pointer(float_array), -integer, -integer)).
%% --Input-- %% --Input--
%% mat data %% mat data
%% %%
%% --Output-- %% --Output--
%% vec predictions, %% vec predictions,
%% vec probabilities %% mat probabilities
%% %%
%% --Description-- %% --Description--
%% Classify the given points and also return estimates of the probabilities for each class in the given matrix. %% Classify the given points and also return estimates of the probabilities for each class in the given matrix.
%% %%
foreign(classifyMatrix, c, classifyMatrix( +pointer(float_array), +integer, +integer, classifyMatrix(DataList, DataRows, PredictionList, ProbsList, ZCols) :-
-pointer(float_array), -integer, convert_list_to_float_array(DataList, DataRows, array(Xsize, Xrows, X)),
-pointer(float_array), -integer)). classifyMatrixI(X, Xsize, Xrows, Y, Ysize, Z, ZCols, ZRows),
convert_float_array_to_list(Y, Ysize, PredictionList),
convert_float_array_to_2d_list(Z, ZCols, ZRows, ProbsList).
foreign(train, c, trainI(+pointer(float_array), +integer, +integer,
+pointer(float_array), +integer,
+integer, +integer, +float32, +integer,
[-float32])).
%% --Input-- %% --Input--
%% mat data, %% mat data,
%% vec labels, %% vec labels,
...@@ -84,10 +106,15 @@ foreign(classifyMatrix, c, classifyMatrix( +pointer(float_array), +integer, ...@@ -84,10 +106,15 @@ foreign(classifyMatrix, c, classifyMatrix( +pointer(float_array), +integer,
%% Train the decision tree on the given data, assuming that all dimensions are numeric. %% Train the decision tree on the given data, assuming that all dimensions are numeric.
%% This will overwrite the given model. Setting minimumLeafSize and minimumGainSplit too small may cause the tree to overfit, but setting them too large may cause it to underfit. %% This will overwrite the given model. Setting minimumLeafSize and minimumGainSplit too small may cause the tree to overfit, but setting them too large may cause it to underfit.
%% %%
foreign(train, c, train(+pointer(float_array), +integer, +integer, train(DataList, DataRows, LabelsList, NumClasses, MinimumLeafSize, MinimumGainSplit, MaximumDepth, Entropy) :-
+pointer(float_array), +integer, NumClasses >= 0,
+integer, +integer, +float32, +integer, MinimumLeafSize > 0,
[-float32])). MinimumGainSplit > 0.0,
MinimumGainSplit < 1.0,
MaximumDepth >= 0,
convert_list_to_float_array(DataList, DataRows, array(Xsize, Xrownum, X)),
convert_list_to_float_array(LabelsList, array(Ysize, Y)),
trainI(X, Xsize, Xrownum, Y, Ysize, NumClasses, MinimumLeafSize, MinimumGainSplit, MaximumDepth, Entropy).
%% Defines the functions that get connected from main.cpp %% Defines the functions that get connected from main.cpp
......
:- module(decision_tree_tests, [run_decision_tree_tests/0]).
:- use_module(library(plunit)). :- use_module(library(plunit)).
:- use_module(decision_tree). :- use_module(decision_tree).
:- use_module('../../helper_files/helper.pl'). :- use_module('../../helper_files/helper.pl').
reset_Model :- reset_Model_With_Train :-
initModel(1,0,50,0.0001). initModel([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,1,0,0], 2, 10, 0.5, 0).
:- begin_tests(lists). %%
%% TESTING predicate initModel/7
%% alpha tests %%
test(alpha_std_init) :- :- begin_tests(initModel).
reset_Model,
alpha(0). %% Failure Tests
test(alpha_wrong_input, fail) :-
reset_Model, test(decision_tree_Negative_NumClass, fail) :-
alpha(1). initModel([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], -1, 1, 0.5, 0).
test(alpha_after_train, A =:= 9223372036854775808) :-
reset_Model, test(decision_tree_Negative_LeafSize, fail) :-
convert_list_to_float_array([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5],3, array(Xsize, Xrownum, X)), initModel([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], 1, -1, 0.5, 0).
convert_list_to_float_array([0.2,0.2,0.2,0.2], array(Ysize, Y)),
train(X,Xsize, Xrownum,Y, Ysize), test(decision_tree_Negative_GainSplit, fail) :-
alpha(A). initModel([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], 1, 1, -0.5, 0).
%% train tests test(decision_tree_Too_High_GainSplit, fail) :-
test(correct_train) :- initModel([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], 1, 1, 1.5, 0).
reset_Model,
convert_list_to_float_array([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5],3, array(Xsize, Xrownum, X)), test(decision_tree_Negative_MaxDepth, fail) :-
convert_list_to_float_array([0.2,0.2,0.2,0.2], array(Ysize, Y)), initModel([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], 1, 1, 0.5, -1).
train(X,Xsize, Xrownum,Y, Ysize).
test(false_train, fail) :- test(decision_tree_Init_With_Wrong_Label_Dims1, [error(_,system_error('Labels Vector is too short or its values are incorrect: should fit into [0,numClasses)!'))]) :-
reset_Model, initModel([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0], 1, 1, 0.5, 1).
convert_list_to_float_array([],3, array(Xsize, Xrownum, X)),
convert_list_to_float_array([0.2,0.2,0.2,0.2], array(Ysize, Y)), %% If the label vector is to long it seems to cause no problems
train(X,Xsize, Xrownum,Y, Ysize). test(decision_tree_Init_With_Wrong_Label_Dims2) :-
test(false_train2, fail) :- initModel([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0,0,0], 1, 1, 0.5, 1).
reset_Model,
convert_list_to_float_array([],0, array(Xsize, Xrownum, X)), %% The same when the label values are out of range
convert_list_to_float_array([0.2,0.2,0.2,0.2], array(Ysize, Y)), test(decision_tree_Init_With_Wrong_Label_Value) :-
train(X,Xsize, Xrownum,Y, Ysize). initModel([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,5,0,-1], 1, 1, 0.5, 1).
test(false_train3, fail) :-
reset_Model,
convert_list_to_float_array([1,2],0, array(Xsize, Xrownum, X)), %% Successful Tests
convert_list_to_float_array([0.2,0.2,0.2,0.2], array(Ysize, Y)),
train(X,Xsize, Xrownum,Y, Ysize). test(initModel_Direkt_Input_Use) :-
test(false_train3, fail) :- initModel([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], 2, 10, 0.5, 0).
reset_Model,
convert_list_to_float_array([1,2,44,3],3, array(Xsize, Xrownum, X)), test(initModel_Direkt_CSV_Use) :-
convert_list_to_float_array([0.2,0.2,0.2,0.2], array(Ysize, Y)), open('/home/afkjakhes/eclipse-workspace/prolog-mlpack-libary/src/data_csv/iris2.csv', read, File),
train(X,Xsize, Xrownum,Y, Ysize). take_csv_row(File, skipFirstRow,10, Data),
test(false_train4) :- initModel(Data, 4, [0,1,0,1,1,0,1,1,1,0], 2, 2, 0.7, 3).
reset_Model,
convert_list_to_float_array([1,2,44,3],2, array(Xsize, Xrownum, X)), :- end_tests(initModel).
convert_list_to_float_array([0.2,0.2,0.2,0.2], array(Ysize, Y)),
train(X,Xsize, Xrownum,Y, Ysize).
:- end_tests(lists). %%
\ No newline at end of file %% TESTING predicate classifyPoint/3
%%
:- begin_tests(classifyPoint).
%% Failure Tests
%% the point dimensionaly seems to not matter for mlpack
%% so im not certain if this should be forced to fail
test(classify_Point_With_Wrong_Dims) :-
reset_Model_With_Train,
classifyPoint([5.1,3.5,1.4,1.2,3.3], Prediction, AssignList),
print(Prediction),
print('\n'),
print(AssignList).
%% Successful Tests
test(classify_Point1) :-
reset_Model_With_Train,
classifyPoint([5.1,3.5,1.4], Prediction, AssignList),
print(Prediction),
print('\n'),
print(AssignList).
test(classify_Point2) :-
reset_Model_With_Train,
classifyPoint([6.2,1.9,2.3], Prediction, AssignList),
print(Prediction),
print('\n'),
print(AssignList).
:- end_tests(classifyPoint).
%%
%% TESTING predicate classifyMatrix/4
%%
:- begin_tests(classifyMatrix).
%% Failure Tests
%% the point dimensionaly seems to not matter for mlpack
%% so im not certain if this should be forced to fail
test(classify_Matrix_With_Wrong_Dims1) :-
reset_Model_With_Train,
classifyMatrix([3, 2, 0, 5, 1, 4, 1, 0, 4, 3, 3, 5, 0, 5, 5, 2, 5, 5, 0, 2], 5, PredictionList, ProbsList, _),
print(PredictionList),
print('\n'),
print(ProbsList).
%% the point dimensionaly seems to not matter for mlpack
%% so im not certain if this should be forced to fail
test(classify_Matrix_With_Wrong_Dims2) :-
reset_Model_With_Train,
classifyMatrix([3, 2, 0, 5, 1, 4, 0, 0, 4, 3, 3, 5, 0, 5, 5, 2, 5, 5, 0, 2], 2, PredictionList, ProbsList, _),
print(PredictionList),
print('\n'),
print(ProbsList).
%% Successful Tests
test(classify_Matrix_Wierd_Trained_Labels) :-
initModel([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,5,0,-1], 1, 1, 0.5, 1),
classifyMatrix([5.1,3.5,1.4, 5.1,3.5,1.4, 5.1,3.5,1.4, 5.1,3.5,1.4, 5.1,3.5,1.4], 3, PredictionList, ProbsList, _),
print(PredictionList),
print('\n'),
print(ProbsList).
test(classify_Matrix_Direkt_Input1) :-
reset_Model_With_Train,
classifyMatrix([5.1,3.5,1.4, 5.1,3.5,1.4, 5.1,3.5,1.4, 5.1,3.5,1.4, 5.1,3.5,1.4], 3, PredictionList, ProbsList, _),
print(PredictionList),
print('\n'),
print(ProbsList).
test(classify_Matrix_Direkt_Input2) :-
reset_Model_With_Train,
classifyMatrix([2, 2, 3, 5, 1, 4, 1, 1, 4, 0, 3, 5, 0, 5, 5], 3, PredictionList, ProbsList, _),
print(PredictionList),
print('\n'),
print(ProbsList).
test(classify_Matrix_CSV_Trained) :-
open('/home/afkjakhes/eclipse-workspace/prolog-mlpack-libary/src/data_csv/iris2.csv', read, File),
take_csv_row(File, skipFirstRow,30, Data),
train(Data, 4, [0,1,0,1,1,0,1,1,1,0, 0,1,0,1,1,0,1,1,1,0, 0,1,0,1,1,0,1,1,1,0], 2, 5, 0.0007, 0, _),
classifyMatrix([2, 2, 3, 5, 1, 4, 1, 1, 4, 0, 3, 5, 0, 5, 5, 2, 2, 6, 0, 1], 4, PredictionList, ProbsList, _),
print(PredictionList),
print('\n'),
print(ProbsList).
:- end_tests(classifyMatrix).
%%
%% TESTING predicate train/8
%%
:- begin_tests(train).
%% Failure Tests
test(decision_tree_Train_Negative_NumClass, fail) :-
train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], -1, 1, 0.5, 0, _).
test(decision_tree_Train_Negative_LeafSize, fail) :-
train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], 1, -1, 0.5, 0, _).
test(decision_tree_Train_Negative_GainSplit, fail) :-
train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], 1, 1, -0.5, 0, _).
test(decision_tree_Train_Too_High_GainSplit, fail) :-
train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], 1, 1, 1.5, 0, _).
test(decision_tree_Train_Negative_MaxDepth, fail) :-
train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], 1, 1, 0.5, -1, _).
test(decision_tree_Train_Wrong_Label_Dims1, [error(_,system_error('DecisionTree::Train(): number of points (4) does not match number of labels (2)!\n'))]) :-
train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0], 1, 1, 0.5, 1, _).
test(decision_tree_Train_Wrong_Label_Dims2, [error(_,system_error('DecisionTree::Train(): number of points (4) does not match number of labels (6)!\n'))]) :-
train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0,0,0], 1, 1, 0.5, 1, _).
%% there seems to be no check for the label values
test(decision_tree_Train_Wrong_Labels) :-
train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [-1,0,0,5], 1, 1, 0.5, 1, _).
%% Successful Tests
test(initModel_Direkt_Input_Use, [true(Entropy =:= 0.0)]) :-
train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], 2, 10, 0.5, 0, Entropy).
test(initModel_Direkt_CSV_Use, [true(Entropy =:= 0.48)]) :-
open('/home/afkjakhes/eclipse-workspace/prolog-mlpack-libary/src/data_csv/iris2.csv', read, File),
take_csv_row(File, skipFirstRow,10, Data),
train(Data, 4, [0,1,0,1,1,0,1,1,1,0], 2, 2, 0.7, 3, Entropy).
test(initModel_Direkt_Input_Use, [true(Entropy =:= 0.0)]) :-
reset_Model_With_Train,
train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], 3, 10, 0.7, 0, Entropy).
test(initModel_Direkt_CSV_Use, [true(Entropy =:= 0.3767195767195767)]) :-
reset_Model_With_Train,
open('/home/afkjakhes/eclipse-workspace/prolog-mlpack-libary/src/data_csv/iris2.csv', read, File),
take_csv_row(File, skipFirstRow,30, Data),
train(Data, 4, [0,1,0,1,1,0,1,1,1,0, 0,1,0,1,1,0,1,1,1,0, 0,1,0,1,1,0,1,1,1,0], 2, 5, 0.0005, 0, Entropy).
:- end_tests(train).
run_decision_tree_tests :-
run_tests.
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
:- use_module('src/methods/dbscan/dbscan_test.pl'). :- use_module('src/methods/dbscan/dbscan_test.pl').
:- use_module('src/methods/decision_tree/decision_tree_test.pl').
:- use_module('src/methods/sparse_coding/sparse_coding_test.pl'). :- use_module('src/methods/sparse_coding/sparse_coding_test.pl').
:- use_module('src/helper_files/helper_tests.pl'). :- use_module('src/helper_files/helper_tests.pl').
...@@ -11,5 +13,6 @@ ...@@ -11,5 +13,6 @@
run :- run :-
run_adaboost_tests, run_adaboost_tests,
run_dbscan_tests, run_dbscan_tests,
run_decision_tree_tests,
run_sparse_coding_tests, run_sparse_coding_tests,
run_helper_tests. run_helper_tests.
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment